刚开始学习硬件调试,难免出现问题,自己已经搞了4天了,还是弄不出来,麻烦大家看看,可能就是些小问题,谢谢。(用的是原子的板子和程序)
1,用JTAG硬件调试时,为什么左边窗口中的sec值一直不变, 一直是107.37418250?
2,u16 Get_Adc_Average(u8 ch,u8 times){
u32 temp_val=0;
u8 t;
for(t=0;t<times;t++)
{
temp_val+=Get_Adc(ch);
delay_ms(5);
}
return temp_val/times;
}
这个AD函数中的延时5ms只是为了取均值是吗,我注释掉没问题吧,我想让AD采集快点
3,第3个问题也是最头疼的问题,我设置TIM3中断函数为5MS进入一次,然后在函数中加了这条语句data=Get_Adc_Average(ADC_Channel_1,10);即
读取AD值,可是程序运行一会就一直在这条语句中执行,就是不停的在
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束
return ADC_GetConversionValue(ADC1); //返回最近一次ADC1规则组的转换结果
这几条语句中执行,就是读取完成一次AD值之后紧接着又等待转换结束,转换结束后data赋完值后又回到等待转换结束的这条语句,完全不回到main函数中
的while主循环了,就在中断函数中不出来,这是怎么回事?
请各位帮忙看看,我知道程序调试应该自己慢慢搞,但是4天过去了一点效果没有,新手不懂得太多了,很可能就是一个什么小问题。 |