论坛元老
 
- 积分
- 3557
- 金钱
- 3557
- 注册时间
- 2017-5-23
- 在线时间
- 257 小时
|

楼主 |
发表于 2017-6-16 19:40:53
|
显示全部楼层
void Adc3_Init(void)
{
RCC->APB2ENR|=1<<15; //ADC3 时钟使能
RCC->APB2RSTR|=1<<15; //ADC 复位
RCC->APB2RSTR&=~(1<<15); //复位结束
RCC->CFGR&=~(3<<14); //分频因子清零
//SYSCLK/DIV2=12M ADC 时钟设置为 12M,ADC 最大时钟不能超过 14M
//否则将导致 ADC 准确度下降
RCC->CFGR|=2<<14;
ADC3->CR1&=0XF0FFFF; //工作模式清零
ADC3->CR1|=0<<16; //独立工作模式
ADC3->CR1&=~(1<<8); //非扫描模式
ADC3->CR2&=~(1<<1); //单次转换模式
ADC3->CR2&=~(7<<17);
ADC3->CR2|=7<<17; //软件控制转换
ADC3->CR2|=1<<20; //使用外部触发(SWSTART)!必须使用一个事件触发
ADC3->CR2&=~(1<<11); //右对齐
ADC3->SQR1&=~(0XF<<20);
ADC3->SQR1|=0<<20; //1 个转换在规则序列中 也就是只转换规则序列 1
//设置通道 1 的采样时间
ADC3->SMPR2&=~(7<<3*6); //通道 6 采样时间清空
ADC3->SMPR2|=7<<3*6; //通道 6,239.5 个周期,提高采样时间可以提高精度
ADC3->CR2|=1<<0; //开启 AD 转换器
ADC3->CR2|=1<<3; //使能复位校准
while(ADC1->CR2&1<<3); //等待校准结束
这也是精英的程序,LSENS程序里面的,最后两句:使能了ADC3复位,等待的是ADC1校准结束,难道这两是同一个寄存器?
有知道的网友,请指教一下。 |
|