请教使用探索者开发板,同时开启实验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条回答
正点原子
1楼-- · 2019-07-21 09:47
回复【3楼】ZHWH0123:
---------------------------------
我们综合实验,用到了ADC1和ADC3,没你说的问题,你可以参考下我们的代码
正点原子
2楼-- · 2019-07-21 12:21
注意,复位ADC是针对所有ADC都有效,看看是不是这个问题导致的。
ZHWH0123
3楼-- · 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转换器


}
ZHWH0123
4楼-- · 2019-07-21 21:01
 精彩回答 2  元偷偷看……

一周热门 更多>