• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

主循环加滴答定时器中断影响串口解析?

huihui163 2020-05-19 浏览量:868

这是主循环函数

while(1)

{

   比如滴答定时器中断延时1s;

   串口解析函数;这里只是解析函数,不是串口中断接受函数

}

串口中断优先级肯定大于滴答定时器中断

现在通过触摸屏控制小车,触摸前进按钮一下松开,是两个指令,按下前进,松开停止,但是加延时后,停止命令就接收不到了,这是为啥

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 这个可以尝试一下将按下松开两个动作之间的时间拉长一点,看下能不能收到停止的命令,如果能收到,说明发生了串口溢出事件,可以考虑提高串口中断处理的速度,如果不是,那就要考虑是不是触摸屏本身没发出来了
    • 发布于 2020-05-19
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:2
  • 因为连续2条命令,解析函数一次只能解析1条,下一条要延时1秒解析,嘀嗒定时器就是阻塞延时和中断优先级没有关系
    • 发布于2020-05-19
    • 举报
    • 评论 1
    • 0
    • 0
huihui163 回复了 yhj416606438 :问题是现在松开的指令不执行 回复

  • 两个方法:

    1、干掉延时1S延时,加快while(1)扫描轮询速度。

          你可以想办法在延时1S函数里面加一些状态标志位。等待1S的时候,不要死等,先跳出来,下一次时间到了在执行延时后的类容。


    2、串口解析函数里面的接收和解析分开。

         串口接收采用中断的方式,数据保存到数组里面,不解析;while1里面只需要解析,然后执行串口的命令。需要将接收和解析分开。可以参考这个文章:https://www.icxbk.com/article/detail?aid=866

    • 发布于2020-05-19
    • 举报
    • 评论 3
    • 0
    • 0
huihui163 回复了 川楠 :非常感谢你的而回答,首先接受和解析是分开的,也是用了超时检测后才解析的,上位机的菜单按下和松开时间间隔可以的,不明白为啥松开的指令解析不到了 回复
川楠 回复了 huihui163 :那就先定位问题,上位机的运行和停止命令有没有发下来。可以使用示波器,或者其他工具,看一下指令时序上有没有问题。如果上位机没有问题,那就先分析,程序有没有正确的收到指令。解析的时候又是哪里出了问题。可以硬件仿真,创造测试条件。 回复
huihui163 回复了 川楠 :硬件仿真的话,断点放到停止命令,触发执行不到此处 回复

相关问题

问题达人换一批

主循环加滴答定时器中断影响串口解析?