论坛元老
 
- 积分
- 3774
- 金钱
- 3774
- 注册时间
- 2015-4-26
- 在线时间
- 766 小时
|

楼主 |
发表于 2016-3-19 13:57:14
|
显示全部楼层
我就是抄的例程,之前用的是库函数,搞的我都改成寄存器了 还是不行。把程序贴上来你看看吧,很简单 [mw_shl_code=applescript,true]{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOA,ENABLE);
RCC_ADCCLKConfig(RCC_PCLK2_Div6);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
ADC_DeInit(ADC1);
//adc初始化,使用寄存器
ADC1 -> CR1 &= 0XF0FFFF; //独立模式
ADC1 -> CR1 &= ~(1<<8); //关闭扫描模式
ADC1 -> CR2 &= ~(1<<1); //单次转换模式
ADC1 -> CR2 |= (7<<17); //软件控制启动
ADC1 -> CR2 |= (1<<20); //使用外部触发
ADC1 -> CR2 &= ~(1<<11); //右对齐
ADC1 -> SQR1 = 0;//&= ~(0XF<<20); //规则序列长度1个转换
ADC1 -> SMPR2 |= (7<<3); //设置通道1转换时间为239.5个周期
ADC1 -> CR2 |= 1; //唤醒ADC
ADC1 -> CR2 |= (1<<3); //开始复位校准
while(ADC1 -> CR2 & (1<<3)); //等待复位校准结束
ADC1 -> CR2 |= (1<<2); //开始校准
while(ADC1 -> CR2 & (1<<2)); //等待校准结束
}[/mw_shl_code] |
|