直奔主题吧,我使用的是STM32F103C8T6芯片,需要设计双ADC规则同步模式并且利用中断读取ADC的值,我的初始化代码如附件图片。据我所知,当两个ADC设置为规则同步模式时,ADC1采集的数据会传输给DR寄存器的低16位,而ADC2采集的数据会传输给DR寄存器的高16位。然后我现在遇见的问题是:ADC2(我设置的是通道1)可以正常采集到模拟信号,也就是DR寄存器的高16位有数据;ADC1(我设置的是通道2)却无法读取到该IO口的模拟信号(确定有信号输入)准确来说是一直维持在1.6V不随外界输入信号的变化而变化。对于这个问题我怀疑是我写的ADC的初始化程序存在一些问题,希望写过类似程序的大神能帮我看看是否存在问题,先行谢过了!!~~
PS:在线等。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
这一句代码要写在这一句
ADC_ExternalTrigConvCmd(ADC2, ENABLE);
的后面。
虽然我还不知道为什么,但是问题已经解决了。
void ADC1_2_IRQHandler(void)
{
if (ADC_GetITStatus(ADC1,ADC_IT_EOC)==SET)
{
if(i<512)
{
ADC_12_ConvertedValue[i]=(uint32_t) ADC1->DR;
i++;
}
else
{
j=i%512;
ADC_12_ConvertedValue[j]=(uint32_t) ADC1->DR;
i++;
}
}
ADC_ClearITPendingBit(ADC1,ADC_IT_EOC);
}
楼主我想问下ADC1是算一个通道,还是说ADC1下面有很多个通道?比如ADC1_Channel0、ADC1_Channel1、ADC1_Channel2、ADC1_Channel3、ADC1_Channel4
一周热门 更多>