GD32的滴答延时问题

[复制链接]
1179|8
手机看帖
扫描二维码
随时随地手机跟帖
chenjinyu|  楼主 | 2020-8-20 15:15 | 显示全部楼层 |阅读模式
请教个问题  我现在的延时函数是使用的滴答定时器,平常使用正常。发现在串口中断里解析函数中有延时函数,这个滴答延时就出错,进不了系统中断,延时函数里面的数值不变化,死在那里了

使用特权

评论回复
lvben5d| | 2020-8-20 15:18 | 显示全部楼层
串口中断里 解析函数中有延迟函数  这个用法就是错误的吧?   如果是延迟us和1ms左右级别的,自己可以写软延迟方便实际应用即可。几十ms以上的,开个定时器做周期循环即可。

使用特权

评论回复
chenjinyu|  楼主 | 2020-8-21 08:41 | 显示全部楼层
lvben5d 发表于 2020-8-20 15:18
串口中断里 解析函数中有延迟函数  这个用法就是错误的吧?   如果是延迟us和1ms左右级别的,自己可以写软 ...

我的主函数里有其它的死循环阻塞,如果在主函数里查找标志位会造成通讯不及时,只能在解析函数中直接调用功能函数

使用特权

评论回复
评论
daniel223 2020-8-28 09:42 回复TA
先学学状态机吧 
lvben5d| | 2020-8-21 08:59 | 显示全部楼层
chenjinyu 发表于 2020-8-21 08:41
我的主函数里有其它的死循环阻塞,如果在主函数里查找标志位会造成通讯不及时,只能在解析函数中直接调用 ...

串口 接收好后,设置包接收标志,然后主循环里处理,很正常的哈。

使用特权

评论回复
sonicll| | 2020-8-21 09:27 | 显示全部楼层
串口中断服务函数里,systick进不了中断,说明systick中断的抢断优先级不够高啊,systick中断抢断不了usart的中断,你需要把systick中断的抢断优先级调高(数值减小)

使用特权

评论回复
chenjinyu|  楼主 | 2020-8-31 18:33 | 显示全部楼层
sonicll 发表于 2020-8-21 09:27
串口中断服务函数里,systick进不了中断,说明systick中断的抢断优先级不够高啊,systick中断抢断不了usart ...

systick已经是设置了00

使用特权

评论回复
chenjinyu|  楼主 | 2020-8-31 18:33 | 显示全部楼层
最后的解决办法是重写滴答定时,不让它进系统中断

使用特权

评论回复
huquanz711| | 2020-9-2 21:27 | 显示全部楼层
嘀嗒时钟本身就是靠中断来计时,你串口也是中断,这是中断嵌套啊,肯定会出问题的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

170

帖子

4

粉丝