版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/come_across/article/details/88864874
问题:在调试DS18B20时,同时串口中断100ms处理一次数据会打断DS18B20单总线的时序。
解决方式 :
1将DS18B20的获取温度函数放在定时器中处理。
2将“定时器中断”的优先级高于“串口中断”的优先级
3定时器中断中,将清除标志位语句放置在中断处理的第一行。
void TIM2_IRQHandler(void)//10ms
{
static int n_FivesCnt = 0;
if(TIM_GetITStatus(TIM2,TIM_IT_Update)==SET)
{
TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
Temperature = DS18B20_GetTemp_SkipRom();
}
}