本帖最后由 ailifx 于 2014-10-29 17:56 编辑
CLK_PCKENR2 |= 0X01; //使能外设ADC的时钟,之后对ADC的寄存器操作有效
ADC1_SR = 0X00;
/////ADC1_TRIGR1=0x10;
ADC1_SQR1 = 0x80; //禁止DMA传输
ADC1_SQR4 = 0X04; //PA4为输入检测通道
ADC1_CR1 = 0X00; //开启AD模块电源,使用Sing mode
ADC1_CR3 = 0X00;
ADC1_CR2 = 0X04; //数据右队齐,LOW 8BIT AT ADC_DRL
ADC1_CR1 = 0X01; //启动转换
delay(7);
ADC1_CR1 |= 0X02;
delay(50);
while(!(ADC1_SR & (1<<0))); //等待转换结束,14个时钟周期
ADC1_SR = 0X00;
ADC1_CR1 = 0X00;
///////////////////////////
怎样多转换几次ADC
这个问题搞了很久了还没解决!请知道的人指教啊!注意是8L啊不是8S。不一样
手册里14.3.5是这样写的
14.3.5 连续转换模式
在这个模式里 ,转换以后ADC并不停止而是继续下一个通道,在已选择通道串里。连续转换直到 CONT位和ADON位被设置并且转换值通过DMA被传送到RAM或者EEPROM**体缓存里。
因为EOC中断只有在被选的通道串转换结束以后才会产生,所以每个通道的转换结果并不能从ADC_DR 寄存器读取出来。
为了节约在一个**体(RAM或者EEPROM)里每个通道的转换, DMA必须使用从外设到**体模式。 如果CONT位在一个转换中途复位,现有的被选择的通道串转换行动就会以最后一个被选择的通道来结束,并且ADC就停止了。
注意: 在一个转换中途,CONT位禁止再次设置.
但是这里没有告诉值具体在什么地方
|