ADC底层函数库的疑问
LibSamples_MM32F0140_V1.3.7hal_adc.c
void ADC_RegularChannelConfig(ADC_TypeDef* adc, u32 channel, u8 rank, u32 sample_time) //ADCSAM_TypeDef
{
u32 tempchan;
sample_time = sample_time & 0xF;
tempchan = channel;
if(tempchan > 8)
{
tempchan = tempchan & 0xF;
tempchan = tempchan - 8;
adc->SMPR2 &= ~(0xF << (tempchan << 2));
adc->SMPR2 |= (sample_time << (tempchan << 2));
}
else
{
adc->SMPR1 &= ~(0xF << (tempchan << 2));
adc->SMPR1 |= (sample_time << (tempchan << 2));
}
}
官方的代码如上述,我觉得这个判断有问题,大于8才走SPMR2寄存器,实际序号是0-7,8-15,那么序号8就被装入了SMPR1了,这是不是错误? 一般来说,官方的demo应该不会出错的 你可以试试啊,用这个例程跑起来试试呗 不会错吧,是不是这个数是个数而不是序号啊? 你最好是仿真的方式根据程序来走一遍看看怎么运行的 如果最后的结果是对的,应该ADC就是对的吧 确实我还没注意过这种情况,不过一般情况下代码应该不会出错 那MM32的ADC到底好使吗?应该是好使的啊? 话说如果序号8被撞到SMPR1中会有啥后果啊? 我理解的是,如果运行结果都没错的话,应该不是底层有问题吧 你是ADC采集有问题了吗? 底层函数还是需要进行了解的额
页:
[1]