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

stm32cube生成的串口中断代码异常

[复制链接]
癸锋 提问时间:2019-6-15 20:40 /
如题,小弟用stm32cube生成了uart1的中断代码,配合一个LED灯指示。生成代码后只在HAL_UART_MspInit()函数和中断处理函数USART1_IRQHandler()里面加了__HAL_UART_ENABLE_IT(&huart1,UART_IT_RXNE)使能串口接收中断,其他地方都没有修改。

在中断处理函数USART1_IRQHandler()中加入HAL_GPIO_TogglePin(indicate_LED_GPIO_Port,indicate_LED_Pin)用来翻转LED。
问题来了,全速跑之后通过PC的串口调试助手发信息,第一次LED翻转了,但是再发就不反转了。使用debug模式下,断点+单步调试发现程序跳转到UART_Receive_IT()函数的时候发现huart->RxState == HAL_UART_STATE_BUSY_RX这个条件不满足,然后就跳出了中断函数,之后就一直就进不去中断函数了。

请问各位大神,问题出在哪里啊?


收藏 评论4 发布时间:2019-6-15 20:40

举报

4个回答
edmundlee 回答时间:2019-6-15 23:05:30
查错就需要查看寄存器, 查一下USART1->SR的内容是什么, 大慨就能猜到是什么问题了

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

癸锋 回答时间:2019-6-16 11:05:39
edmundlee 发表于 2019-6-15 23:05
查错就需要查看寄存器, 查一下USART1->SR的内容是什么, 大慨就能猜到是什么问题了 ...

难道官方cube生成的代码有这么大个坑?按道理应该生成的代码能直接用才对啊~~
edmundlee 回答时间:2019-6-16 13:06:45
540429224 发表于 2019-6-16 11:05
难道官方cube生成的代码有这么大个坑?按道理应该生成的代码能直接用才对啊~~ ...

是软件就会有Bug, 不管是ST的还是ARM的
就ARM 的V6.11编译器我都碰到过有Bug, ST写的就不能有Bug?
癸锋 回答时间:2019-6-16 15:21:07
edmundlee 发表于 2019-6-16 13:06
是软件就会有Bug, 不管是ST的还是ARM的
就ARM 的V6.11编译器我都碰到过有Bug, ST写的就不能有Bug? ...

查到了官方库没有清RXNE的flag行为,导致再进去就忙~~

所属标签

相似问题

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