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

请教为什么中断回调函数中不能使用接收中断开启函数

[复制链接]
ouka 提问时间:2025-3-29 14:34 / 未解决
我看(书是基于stm32f407编写)书上说在串口接收中断回调函数里面不能使用 接收中断开启函数,书上是利用自己创建了空闲中断回调函数,在这里面在进行数据接收以及再次开启接收中断,但是我看网上好例历程都在使用在回调函数里面再次开启接收中断,自己使用也没有出现问题,不知道这个怎么解释?求解答
微信图片_20250329143243.jpg
收藏 评论2 发布时间:2025-3-29 14:34

举报

2个回答
luo__ 回答时间:前天 09:18

在不在回调函数里重新开启接收中断,只需要看你有没有对标志位处理就可以了。如果串口在设置了接收中断的情况下,只要对DR数据进行读取就会对标志位清零,清零后就可以再次开启接收中断,但是要注意在中断回调函数不能长时间停留,避免数据溢出。

xmshao 回答时间:前天 15:23
从你给出的截图信息来看,你的那本书应该是一本基于STM32 HAL库的解读资料。


他这里的说法很突兀,说法应该是有问题的。或许特指某种情形,可能需要你结合上下文来理解。


依照 目前HAL库的相关逻辑,做UART的IT或UART方式接收时,每当接收到预定数据后调用这个接收完成回调


函数,然后在那里重新调用UART的接收启动函数肯定是可以的、正常的。 不过,如果是基于空闲事件的话,相应的回调


回调函数并不使用这个,而是HAL_UARTEx_RxEventCallback()函数。


当然,尽管他这里说得不清晰,似乎并不能直接得出你的结论,即中断回调函数中不能使用接收中断开启函数。


从你给出截图信息来看,他似乎是想说基于空闲事件的接收完成后的重新启动问题。


总之,别人的解读或分享只是桥或指引,我们最终结合官方手册和自己验证为准。
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版