DS18B20单总线时序被串口中断打断

版权声明:本文为博主原创文章,未经博主允许不得转载。 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();
    }
}

猜你喜欢

转载自blog.csdn.net/come_across/article/details/88864874