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

用cubemx的串口中断接收时,过一段时间串口中断不进了

[复制链接]
张亚飞 提问时间:2017-7-20 09:57 /
我用stm32cubemx建的工程本来跑的挺好的,最近发现有bug。 我用uart1 在TIM3里边 1s定时发送数据,采用问答式通讯,对端收到了之后发送8个字节的应答。问题是跑了几十分钟之后或者一个小时多串口中断进不去了,我用两根线挂在总线上在电脑上用串口助手监听收发的数据,发送和应答的过程还在持续,其他功能也都正常只是cubemx的程序认为没有收到数据。很难定位是哪里的问题。我把定时器发送 和接收的代码贴在下边还有仿真的界面。

TIM3

TIM3



收发函数

收发函数


仿真

仿真



收藏 评论10 发布时间:2017-7-20 09:57

举报

10个回答
张亚飞 回答时间:2017-7-20 10:03:16
仿真图是问题出现之后可以不停的到第一个断点,第二个断点进不去。
张亚飞 回答时间:2017-7-20 14:35:01
刷一次
回答时间:2017-7-21 10:34:43
楼主你看一下串口状态,如果是发生了溢出,重新初始化。
张亚飞 回答时间:2017-7-21 11:06:23
安 发表于 2017-7-21 10:34
楼主你看一下串口状态,如果是发生了溢出,重新初始化。

版主你好。 为什么会发生溢出呢?  而且仿真时怎么确定是不是溢出呢?
回答时间:2017-7-21 11:20:17
串口结构体里面有个串口标志位。溢出是因为接收超时导致的。仿真的时候容易出这个问题。
张亚飞 回答时间:2017-7-21 13:59:59
安 发表于 2017-7-21 11:20
串口结构体里面有个串口标志位。溢出是因为接收超时导致的。仿真的时候容易出这个问题。 ...

不仿真的时候也这样,而且中断式接收的话跟超时应该没关系吧?
回答时间:2017-7-21 14:17:14
楼主,你可以看一下手册里面介绍的,溢出产生的原因:
This bit is set by hardware when the word currently being received in the shift register is
ready to be transferred into the RDR register while RXNE=1. An interrupt is generated if
RXNEIE=1 in the USART_CR1 register. It is cleared by a software sequence (an read to the
USART_SR register followed by a read to the USART_DR register).
任风吹吹 回答时间:2017-7-21 17:37:58
你的串口接收中断优先级是多少?定时器的中断优先级又是多少?将这两个中断优先级改为相同的试下。
张亚飞 回答时间:2017-7-24 10:18:57
任风吹吹 发表于 2017-7-21 17:37
你的串口接收中断优先级是多少?定时器的中断优先级又是多少?将这两个中断优先级改为相同的试下。 ...

谢谢,问题已经找到是485的方向控制线有别的地方误操作
12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版