请教使用探索者开发板,同时开启实验25和实验26(光敏和DAC),进入死循环的原因?

2019-07-21 04:04发布


程序一直在这位置等待转换结束! 16 Get_Adc(u8 ch)
{
    //设置转换序列
 ADC1->SQR3&=0XFFFFFFE0;//规则序列1通道CH
 ADC1->SQR3|=ch;
 ADC1->CR2|=1<<30;//启动规则转换通道
 while(!(ADC1->SR&1<<1));//等待转换结束
 return ADC1->DR;//返回ADC值
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
ZHWH0123
2019-07-21 15:21
有尝试过将Adc3_Init(),的三步去调,没有效果
void Adc3_Init(void)
{
    //先初始化IO口
RCC->APB2ENR|=1<<10;//使能ADC3时钟
// RCC->APB2RSTR|=1<<8;//ADCs复位(注意,所有ADC都会被复位)
// RCC->APB2RSTR&=~(1<<8);//复位结束
// ADC->CCR=1<<16;//ADCCLK=PCLK2/4/=84/4=21,时钟最好不要超过36
ADC3->CR1=0;//CR1设置清零
ADC3->CR2=0;//CR2设置清零
ADC3->CR1|=0<<24;//12为模式
ADC3->CR1|=0<<8;//非扫描模式
ADC3->CR2&=~(1<<1);//单次转换模式
ADC3->CR2&=~(1<<11);//右对齐
ADC3->CR2|=0<<28;//软件触发
ADC3->SQR1&=~(0XF<<20);
ADC3->SQR1|=0<<20;//1个转换在规则序列中,也就是只转换规则序列1

//设置通道5的采样时间
ADC3->SMPR2&=~(7<<(3*5));//通道5采样时间清空
ADC3->SMPR2|=7<<(3*5);//通道5,480个周期,提高采样时间可以提高精确度
ADC3->CR2|=1<<0;//开启AD转换器


}

一周热门 更多>