又有不会的了,求解答.stm32f103 adc中断断

2010年9月 硬件/嵌入开发大版内专家分月排行榜第二2010年8月 硬件/嵌入开发大版内专家分月排行榜第二2010年3月 硬件/嵌入开发大版内专家分月排行榜第二2010年2月 硬件/嵌入开发大版内专家分月排行榜第二2010年1月 硬件/嵌入开发大版内专家分月排行榜第二2009年11月 硬件/嵌入开发大版内专家分月排行榜第二
2010年5月 硬件/嵌入开发大版内专家分月排行榜第三2010年4月 硬件/嵌入开发大版内专家分月排行榜第三2009年12月 硬件/嵌入开发大版内专家分月排行榜第三2009年10月 硬件/嵌入开发大版内专家分月排行榜第三
2016年11月 VC/MFC大版内专家分月排行榜第二2016年4月 VC/MFC大版内专家分月排行榜第二2014年11月 VC/MFC大版内专家分月排行榜第二2014年1月 VC/MFC大版内专家分月排行榜第二2013年10月 VC/MFC大版内专家分月排行榜第二2013年9月 VC/MFC大版内专家分月排行榜第二2013年6月 VC/MFC大版内专家分月排行榜第二2013年4月 VC/MFC大版内专家分月排行榜第二2012年6月 VC/MFC大版内专家分月排行榜第二
2016年12月 VC/MFC大版内专家分月排行榜第三2016年10月 VC/MFC大版内专家分月排行榜第三2016年2月 VC/MFC大版内专家分月排行榜第三2015年10月 VC/MFC大版内专家分月排行榜第三2015年7月 VC/MFC大版内专家分月排行榜第三2012年10月 VC/MFC大版内专家分月排行榜第三
2016年11月 VC/MFC大版内专家分月排行榜第二2016年4月 VC/MFC大版内专家分月排行榜第二2014年11月 VC/MFC大版内专家分月排行榜第二2014年1月 VC/MFC大版内专家分月排行榜第二2013年10月 VC/MFC大版内专家分月排行榜第二2013年9月 VC/MFC大版内专家分月排行榜第二2013年6月 VC/MFC大版内专家分月排行榜第二2013年4月 VC/MFC大版内专家分月排行榜第二2012年6月 VC/MFC大版内专家分月排行榜第二
2016年12月 VC/MFC大版内专家分月排行榜第三2016年10月 VC/MFC大版内专家分月排行榜第三2016年2月 VC/MFC大版内专家分月排行榜第三2015年10月 VC/MFC大版内专家分月排行榜第三2015年7月 VC/MFC大版内专家分月排行榜第三2012年10月 VC/MFC大版内专家分月排行榜第三
2016年11月 VC/MFC大版内专家分月排行榜第二2016年4月 VC/MFC大版内专家分月排行榜第二2014年11月 VC/MFC大版内专家分月排行榜第二2014年1月 VC/MFC大版内专家分月排行榜第二2013年10月 VC/MFC大版内专家分月排行榜第二2013年9月 VC/MFC大版内专家分月排行榜第二2013年6月 VC/MFC大版内专家分月排行榜第二2013年4月 VC/MFC大版内专家分月排行榜第二2012年6月 VC/MFC大版内专家分月排行榜第二
2016年12月 VC/MFC大版内专家分月排行榜第三2016年10月 VC/MFC大版内专家分月排行榜第三2016年2月 VC/MFC大版内专家分月排行榜第三2015年10月 VC/MFC大版内专家分月排行榜第三2015年7月 VC/MFC大版内专家分月排行榜第三2012年10月 VC/MFC大版内专家分月排行榜第三
2016年11月 VC/MFC大版内专家分月排行榜第二2016年4月 VC/MFC大版内专家分月排行榜第二2014年11月 VC/MFC大版内专家分月排行榜第二2014年1月 VC/MFC大版内专家分月排行榜第二2013年10月 VC/MFC大版内专家分月排行榜第二2013年9月 VC/MFC大版内专家分月排行榜第二2013年6月 VC/MFC大版内专家分月排行榜第二2013年4月 VC/MFC大版内专家分月排行榜第二2012年6月 VC/MFC大版内专家分月排行榜第二
2016年12月 VC/MFC大版内专家分月排行榜第三2016年10月 VC/MFC大版内专家分月排行榜第三2016年2月 VC/MFC大版内专家分月排行榜第三2015年10月 VC/MFC大版内专家分月排行榜第三2015年7月 VC/MFC大版内专家分月排行榜第三2012年10月 VC/MFC大版内专家分月排行榜第三
2016年11月 VC/MFC大版内专家分月排行榜第二2016年4月 VC/MFC大版内专家分月排行榜第二2014年11月 VC/MFC大版内专家分月排行榜第二2014年1月 VC/MFC大版内专家分月排行榜第二2013年10月 VC/MFC大版内专家分月排行榜第二2013年9月 VC/MFC大版内专家分月排行榜第二2013年6月 VC/MFC大版内专家分月排行榜第二2013年4月 VC/MFC大版内专家分月排行榜第二2012年6月 VC/MFC大版内专家分月排行榜第二
2016年12月 VC/MFC大版内专家分月排行榜第三2016年10月 VC/MFC大版内专家分月排行榜第三2016年2月 VC/MFC大版内专家分月排行榜第三2015年10月 VC/MFC大版内专家分月排行榜第三2015年7月 VC/MFC大版内专家分月排行榜第三2012年10月 VC/MFC大版内专家分月排行榜第三
2010年9月 硬件/嵌入开发大版内专家分月排行榜第二2010年8月 硬件/嵌入开发大版内专家分月排行榜第二2010年3月 硬件/嵌入开发大版内专家分月排行榜第二2010年2月 硬件/嵌入开发大版内专家分月排行榜第二2010年1月 硬件/嵌入开发大版内专家分月排行榜第二2009年11月 硬件/嵌入开发大版内专家分月排行榜第二
2010年5月 硬件/嵌入开发大版内专家分月排行榜第三2010年4月 硬件/嵌入开发大版内专家分月排行榜第三2009年12月 硬件/嵌入开发大版内专家分月排行榜第三2009年10月 硬件/嵌入开发大版内专家分月排行榜第三
2016年11月 VC/MFC大版内专家分月排行榜第二2016年4月 VC/MFC大版内专家分月排行榜第二2014年11月 VC/MFC大版内专家分月排行榜第二2014年1月 VC/MFC大版内专家分月排行榜第二2013年10月 VC/MFC大版内专家分月排行榜第二2013年9月 VC/MFC大版内专家分月排行榜第二2013年6月 VC/MFC大版内专家分月排行榜第二2013年4月 VC/MFC大版内专家分月排行榜第二2012年6月 VC/MFC大版内专家分月排行榜第二
2016年12月 VC/MFC大版内专家分月排行榜第三2016年10月 VC/MFC大版内专家分月排行榜第三2016年2月 VC/MFC大版内专家分月排行榜第三2015年10月 VC/MFC大版内专家分月排行榜第三2015年7月 VC/MFC大版内专家分月排行榜第三2012年10月 VC/MFC大版内专家分月排行榜第三
2016年11月 VC/MFC大版内专家分月排行榜第二2016年4月 VC/MFC大版内专家分月排行榜第二2014年11月 VC/MFC大版内专家分月排行榜第二2014年1月 VC/MFC大版内专家分月排行榜第二2013年10月 VC/MFC大版内专家分月排行榜第二2013年9月 VC/MFC大版内专家分月排行榜第二2013年6月 VC/MFC大版内专家分月排行榜第二2013年4月 VC/MFC大版内专家分月排行榜第二2012年6月 VC/MFC大版内专家分月排行榜第二
2016年12月 VC/MFC大版内专家分月排行榜第三2016年10月 VC/MFC大版内专家分月排行榜第三2016年2月 VC/MFC大版内专家分月排行榜第三2015年10月 VC/MFC大版内专家分月排行榜第三2015年7月 VC/MFC大版内专家分月排行榜第三2012年10月 VC/MFC大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。为什么mega8的ADC一开中断,虽启动一次AD转换但总是有中断呢? - 维库电子市场网
为什么mega8的ADC一开中断,虽启动一次AD转换但总是有中断呢?
作者:xinjie1023 栏目:
为什么的ADC一开中断,虽启动一次AD转换但总是有中断呢?AVR高手,我在天河双龙的开发板上把ADC和UART两个功能用中断实现时出现怪问题(准确得说是UART的接收,ADC转换完成用中断,在中断前单片机工作在空闲模式。),下面使我的程序,我说一下我碰到的现象:对ADC初始化时的ADCSRA=(1&&ADEN)|(1&&ADPS2)|(1&&ADPS1)|(1&&)|(1&&ADSC);这句话中的1&&出现问题,没有这句话时程序可以受到sleep语句的影响,但是开了ADC转换结束的使能中断后,好像就不行了,开AD中断后就一直有AD的中断触发,不知为什么?(我让程序循环4次,有了那句话,从第二次循环开始sleep语句就不起作用了)。请高手指点。&&&&还有我看了别人帖子怎么不能回复呢?#include &iom8v.h&#include &macros.h&#define fosc 8000000 //晶振#define baud 19200&&&&&//波特率#define osc_address&&&0x1ff0unsigned int adc_//AD转换结果unsigned int adcd_//AD转换结果的模拟化unsigned
adc_//AD通道unsigned int adc_#define osccal 0x7d//内部RC校正常数#define Vref&&&5//参考电压值//ADC完成中断#pragma interrupt_handler adc_isr:iv_ADC&&&&&void adc_isr(void){adc_rel=ADC&0x3 //得到转换结果}#pragma interrupt_handler Reciverdata:12//extern unsigned
read_flash(unsigned int add);/*&&字符输出函数&&&&&&*/void put(unsigned
c)&&&&{&&&&&&&&&&while (!(UCSRA&(1&&UDRE)));//测到当前发出寄存器为空时则发出新数据&&&&UDR=c;&&&&&&&&}/*字符串输出函数(人为加回车换行)&&&*/&&&&int puts( *s)&&&&{&&&&while (*s)&&&&&&&&{&&&&&&&&put(*s);&&&&&&&&s++;&&&&&&&&}&&&&&&&&put(0x0a);//回车换行&&&&put(0x0d);&&&&return 1;&&&&}/* 不含回车换行的字符串输出函数&&*/&&&&void putstr( *s)&&&&{&&&&while (*s)&&&&&&&&{&&&&&&&&put(*s);&&&&&&&&s++;&&&&&&&&}&&&&&&&&}&&&&/*&&字符输入函数 */&&&&unsigned
get(void)&&&&&&{&&&&&while(!(UCSRA& (1&&RXC)));&&//如果测到接收结束则执行下面条语句&&&&&return UDR;&&&&}&&&&&&&&//ADC结果转换成电压值void ADCtoBCD(unsigned int ){// =(unsigned int)(((unsigned )((unsigned )*Vref))/0x3ff);}void adc_init(void){ DDRC=0x00;&&//选择C口的方向,1为输出PORTC=0x00; //输入0,关闭上拉电阻ADCSRA = 0x00; //P194,ADMUX =(1&&REFS0)|(adc_mux&0x0f);//选择内部AVCC为基准P192ADCSRA=(1&&ADEN)|(1&&ADPS2)|(1&&ADPS1)|(1&&)|(1&&ADSC);//64分频}//ADC启动,启动一次ADC转换,中断使能//接受串口来的数据void Reciverdata(void){&&&&&&&&&&&&&&&&&&&&&i=get();&&&&&&&{&&&&&&&&putstr(&当前按键是:&);&&&&&&&&put(i);&&&&&&&&put(0x0a);&&&&&&&&put(0x0d);&&&&&&&&j=i-0x30;&&&&&&&&if((j&=0)&&(j&=3))&&&&&&&&{&&&&&&&&adc_flag=1;&&&&&&&&puts(&进入AD转换&);&&&&&&&&adc_mux=j;&&&&&&&&}&&&&&&&&else&&&&&&&&&{&&&&&&&&&puts(&无此通道1&);&&&&&&&&&adc_flag=0;&&&&&&&&&}&&&&&&&}&&&&&}/*UART初始化*/&&&&void uart_init(void){// OSCCAL=read_flash(osc_address);//????????UCSRB=(1&&RXEN)|(1&&TXEN)|(1&&RXCIE);//允许发送和接收UBRRL=(fosc/16/(baud+1))%256;UBRRH=(fosc/16/(baud+1))/256;UCSRC=(1&&URSEL)|(1&&UCSZ1)|(1&&UCSZ0);//8位数据+1位STOP位&&}/*通信main函数*/void main(void){ OSCCAL=//校正振荡频率&&ACSR&&=(1&&ACD);//关闭模拟比较器&&uart_init();&&SREG=0X80;&&MCUCR=(1&&SE);&&asm(&sleep&);&&MCUCR=(0&&SE);for(sd=0;sd&4;sd++)&&&//循环4次是为了测试SLLEP的作用以及程序流程的正确性{puts(&广州天河双龙电子公司通信演示程序&);puts(&.CN&);puts(&MAIL TO:.cn&); &&adc_flag=0;&&MCUCR=(1&&SE);&&asm(&sleep&);&&MCUCR=(0&&SE);&&puts(&测试休眠转换1&);&&MCUCR=(1&&SE);&&asm(&sleep&);&&MCUCR=(0&&SE);&&puts(&再次测试休眠11&);&&if((adc_mux&=0)&&(adc_mux&=3)&&(adc_flag==1))&&{&&&&&&&&&&&&&adc_flag=0;&&&&adc_init(); //ADC初始化,就是这里面开中断出现问题&&&&MCUCR=(1&&SE);&&&&&&&&asm(&sleep&);&&&&MCUCR=(0&&SE);&&&&&&&&puts(&测试休眠转换2&);&&&&&&&&&&&&&&&&&&&}&&&else{puts(&此次无正确按键&);&&&}}}
作者: sinkship 于
23:19:00 发布:
你是不是使能了连续转换模式?&
作者: xinjie1023 于
15:51:00 发布:
我用的一次转换模式我用的一次转换模式ADCSRA=(1&&ADEN)|(1&&ADPS2)|(1&&ADPS1)|(1&&)|(1&&ADSC);//64分频}//ADC启动,启动一次ADC转换,中断使能但不知道为什么他多次中断
作者: sinkship 于
23:50:00 发布:
再看看程序哦!adc_mux=j;这句话是在void Reciverdata(void)函数中;你主函数都没有执行这句话你怎么进下面这句话的呢?if((adc_mux&=0)&&(adc_mux&=3)&&(adc_flag==1))这句话不进你怎么开中断呢?
作者: hotpower 于
23:57:00 发布:
我用GCCAVR一点没问题&
作者: xinjie1023 于
16:14:00 发布:
解释一下程序的流程先基本上的流程:&&&&&程序进入main(),&&&&&然后关闭模拟比较器;&&&&&再初始化UART串口;&&&&&后面进入休眠状态(sleep);&&&&&再用键盘输入一个数(最好小于3),这样就触发了void Reciverdata(void)函数中;&&&&&从而执行了adc_mux=j;这句话&&&&&从而进入for循环&&&&&初始化ADC,并启动一次ADC转换&&&&&又进入 休眠状态(sleep);&&&&&当AD转换完时,中断触发唤醒MCU,继续向下执行程序&&&&&后面的几个sleep语句理论上是靠键盘输入数字唤醒的,(但是就是这里出了问题,没有其他输入,AD转换一次后应该是不再转换了,但是不知为什么总是进AD中断服务程序,并且从此好像所有的sleep都不起作用了,只要一有sleep,她就进ADC中断激活sleep)。&&&&&我主要想让他受sleep语句的控制,同时按照要求每次循环只执行一次ADC,其他的sleep语句靠输入数字激活。&&&&&请高手指教
讨论内容:
Copyright &
浙ICP证030469号}

我要回帖

更多关于 stm32f407adc中断 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信