你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32G0B1RCT6在串口快速收发时导致中断服务函数无法进入

[复制链接]
hex0110 提问时间:2024-3-27 09:08 / 未解决

一、问题描述:

usb转485连接电脑和开发板,上位机以1秒1次的频率发送报文查询开发板信息,同时再以200ms的频率通过上位机发送其他信息(相当于上位机可能同时发出两条报文),会直接导致开发板无法进入串口中断服务函数,但其他功能正常,使用的是HAL库。

二、尝试解决:

1、在收到一帧数据后,直接将485芯片切换为发送模式,待处理完数据后切换为接收模式,没解决问题

2、猜测是不是数据溢出,添加错误回调函数,并在里面清除上溢错误,,仿真发现并没有进入错误回调函数

收藏 评论1 发布时间:2024-3-27 09:08

举报

1个回答
watershade 回答时间:2024-3-27 11:36:47

如果你这个不是很长的报文的话,你这个收发信息的负载确实很低。在这种情况下仍然会出现ISR可能不会响应的问题。确实挺奇怪的。

但是你的问题其实描述的并不清晰。不知道你这里的ISR到底是什么中断的ISR。你的UART是什么模式的配置?你的485通讯完全时单向的还是收到主机的信息之后在一个时间窗口,485就要给与回应?

好了,这里再给一下就目前你的信息给与的可能猜测。

  1. 你的485从节点在收到信息之后切换为发送模式了。这时候主机发送的信号当然就收不到了。这时候这一次的uart接收register当然就没有信息,也就没有办法触发ISR。
  2. 第二种可能性是你的ISR清空状态比较晚,而ISR清空状态之后或者重新开中断之后,已经收到了第二条消息。这时候因为状态清空了,所以也就收不到新的中断请求?

这些猜测的准确率不高,因为目前所得的信息不够。

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版