以头发多少判功力 2020-07-29 18:59 采纳率: 0%
浏览 144
已采纳

不用系统延时方式(系统死等不好),实现延时发送串口数据,怎么实现呢?

不用系统延时方式,实现延时发送串口数据,怎么实现呢?

比如现在代码如下,怎么去掉sys_delay_ms系统延时(系统死等不好),但又能实现延时100ms。
uart_send(uint8 cmd1,uint8 cmd2)
{
switch (cmd1)
{
case 1:
sys_delay_ms(100);
send(cmd1,cmd2);
break;

 case 2:
 sys_delay_ms(100);
 send(cmd1,cmd2);
 break;

}
}

  • 写回答

5条回答 默认 最新

  • 嵌入式@hxydj 2020-07-30 08:40
    关注

    可以在定时器里面添加一个计数器,定时时间到了之后计数器加1,然后发送数据时获取计数器的值,并和上次发送数据时计数器的值比较,如果两次计时器值的差乘以定时时间等于100ms时,就发送数据,否则就不发送。
    比如定时器定时时间为1ms,每1ms计时器自加一次,那么就在两次计数器值差为100的时候,发送一次数据。或者当计时器值记到100时,发送一次数据,并将计数器值清零。继续等待下一次发送。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 已采纳回答 9月22日