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

关于HAL_UART_Receive_IT和HAL_UART_Transmit一起用的问题

[复制链接]
D5Power 提问时间:2017-11-16 21:11 /
波特率为4800.
在中断中调用HAL_UART_Receive_IT继续进行下次中断,除此之外没有任何其他代码。
然后在主循环里调用HAL_UART_Transmit发送数据,就有一定可能导致再也进不到中断里。这是为什么呢?

最开始我以为是因为波特率低,我设置的最大发送时间太短导致的。后来改长时间后,发现依然有几率出现这样的问题。

请问HAL_UART_Transmit是否会造成了串口被锁,或者处于繁忙状态,是否能够恢复?或者有什么方法可以检测
收藏 1 评论13 发布时间:2017-11-16 21:11

举报

13个回答
wenyangzeng 回答时间:2017-11-16 21:43:13
本帖最后由 wenyangzeng 于 2017-11-16 21:44 编辑

主函数加入:__HAL_UART_ENABLE_IT(&huart2,UART_IT_RXNE);
就可以不断进入中断了。

评分

参与人数 2ST金币 +4 收起 理由
D5Power + 2 很给力!
zero99 + 2

查看全部评分

D5Power 回答时间:2017-11-17 00:40:01
wenyangzeng 发表于 2017-11-16 21:43
主函数加入:__HAL_UART_ENABLE_IT(&huart2,UART_IT_RXNE);
就可以不断进入中断了。

非常感谢!!今天太晚了。明天试一下!!
D5Power 回答时间:2017-11-17 00:40:30
wenyangzeng 发表于 2017-11-16 21:43
主函数加入:__HAL_UART_ENABLE_IT(&huart2,UART_IT_RXNE);
就可以不断进入中断了。

非常感谢!我明天一早就试一下!
D5Power 回答时间:2017-11-17 00:41:33
非常感谢!我明天一早就试一下!
zero99 回答时间:2017-11-20 13:56:19
D5Power 发表于 2017-11-17 00:41
非常感谢!我明天一早就试一下!

楼主问题解决了吗
D5Power 回答时间:2017-11-20 21:58:33
zero99 发表于 2017-11-20 13:56
楼主问题解决了吗

解决了一部分。所以没有来回复下定论。目前定期的发送是没问题了。但是连续进行回复,如:
HAL_UART_Transmit(&huart2,p,12,0xffff);
HAL_UART_Transmit(&huart2,p,12,0xffff);

还是会出现卡死的情况。
wenyangzeng 回答时间:2017-11-20 22:18:50
D5Power 发表于 2017-11-20 21:58
解决了一部分。所以没有来回复下定论。目前定期的发送是没问题了。但是连续进行回复,如:
HAL_UART_Tran ...

HAL_UART_Transmit(&huart2,p,24,0xffff);
一次发送24字节不就OK了?

评分

参与人数 1ST金币 +1 收起 理由
D5Power + 1

查看全部评分

D5Power 回答时间:2017-11-21 16:36:13
wenyangzeng 发表于 2017-11-20 22:18
HAL_UART_Transmit(&huart2,p,24,0xffff);
一次发送24字节不就OK了?

感谢回复。我明白你的意思,每次循环,把要发送的数据,按照协议连成一个二进制流,然后一起发送就可以解决了。

我就是好奇,是不是这个问题无法解决。是由于单片机的处理速度决定的吗?
modu8888 回答时间:2018-3-7 10:53:53
妈蛋  我也遇到这个问题了。
12下一页

所属标签

相似问题

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