搜索
查看: 2332|回复: 5

[求助] STM32 HAL 串口接收中断突然失效

[复制链接]

该用户从未签到

8

主题

22

帖子

0

蝴蝶豆

中级会员

最后登录
2022-4-5
发表于 2021-3-7 14:42:17 | 显示全部楼层 |阅读模式
Freertos 利用STM32
HAL做串口接收,发送数据正常,没有通过中断处理,接收通过中断接收处理,发现数据接收一段时间以后

出现HAL的串口不能接收数据,检查发现中断接收被关闭了,要接受数据只能重新调用HAL_UART_Receive_IT(&huart2,&debug_recv,sizeof(debug_recv));

查找半天不知道什么原因引起的

回复

使用道具 举报

该用户从未签到

133

主题

4688

帖子

239

蝴蝶豆

版主

最后登录
2021-4-10
发表于 2021-3-8 09:02:05 | 显示全部楼层
HAL_UART_Receive_IT在接收满以后就会停止中断,这个时候需要重新开启。
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

7

帖子

0

蝴蝶豆

初级会员

最后登录
2021-3-9
发表于 2021-3-9 10:40:19 | 显示全部楼层
是不是该清除这个中断?不懂!
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

1306

帖子

929

蝴蝶豆

版主

最后登录
2021-3-31
发表于 2021-3-15 11:33:05 | 显示全部楼层
如二楼所说,在static HAL_StatusTypeDef UART_Receive_IT(UART_HandleTypeDef *huart)函数中,判断接收的数据数量到了之后,就会关闭中断。通常接收完成后可以再次调用接收中断函数
uart_receive_it.PNG
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

971

帖子

176

蝴蝶豆

论坛元老

最后登录
2021-4-1
发表于 2021-3-15 21:25:00 | 显示全部楼层
就是说,在接收的中断回调函数中,再次设置接收中断“HAL_UART_Receive_IT(&huart2,&debug_recv,sizeof(debug_recv));”
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

1306

帖子

929

蝴蝶豆

版主

最后登录
2021-3-31
发表于 2021-3-18 09:54:52 | 显示全部楼层
我的习惯不在回调函数里再次调用中断使能函数,只需设置状态。在中断外面再次调用。 见过有些坛友在回调函数里面调用,不知道串口出了问题是不是和这有关,因为还有其他代码在一起,这方面没经验
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-4-25 11:51 , Processed in 1.172052 second(s), 37 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表