问题描述 用的是繁星h743的电机板,在调试PID的时候,发现上位机给板子串口发PID数据时串口会有一定的概率卡死,也不是一定概率,是必会卡死,但是在上位机上发送PID数据几次卡死是随机的,有时候发送一两次就卡死,有时候是大概五六十次才会卡死,具体现象是出现串口的接收溢出错误标志位被置1,但是死活进不去串口中断,而且串口错误中断也已经使能的。 上位机用的是正点原子,害。。。别问为啥不用野火哥的,不会用啊,板子都买的野火哥的要是会用肯定用野火哥给的上位机啊,话说野火哥有时间能不能再把PID的上位机优化下。 以下是有关的程序:
上面这个串口配置,就是在野火哥的例程后面加了溢出中断使能。
上面这个是串口的中断函数,一个是串口的接收中断,一个是串口的溢出错误中断。debug_handle()是原子那边的上位机协议有关的函数,问题应该不大。串口溢出的处理函数中有LED4_TOGG()是用作指示用的,反正经常会有串口溢出,但是不至于死机,但是经常串口溢出是不是正常的啊,我用串口助手自动给板子数据,数据量是1条16个字节,1ms发一条数据,结果这个led4闪的很快,待会要是能发视频我发个视频,波特率是115200,这种的错误量是不是正常的啊。
上面是主函数里面的循环,第二个if是与PID相关的处理,第一个if是判断溢出标志位的,串口卡死的现象就是程序会一直进入到这个if里,led3会不停的闪,但是死活不进中断。 串口都是用的115200的波特率,还有串口每个500ms会向上位机发一次PID的运算结果,数据量搞死不会超过20个字节,是在定时器1中断里面发送,是不是与发送也会有关系 情况基本就是这个情况,搞了快3天了,一直没解决 快来个大佬救救孩子吧。。。。。
|