硬汉嵌入式论坛

 找回密码
 立即注册
查看: 372|回复: 6
收起左侧

[UART] UART FIFO关闭后死机问题

[复制链接]

56

主题

113

回帖

281

积分

高级会员

积分
281
发表于 2025-12-23 23:03:43 | 显示全部楼层 |阅读模式



我用硬汉哥的"V7-012_串口和PC机通信(驱动支持8串口FIFO)"例程里的UART FIFO测试串口,初始化是STM32CubeMX生成的MX_USART1_UART_Init();
然后关闭串口我用的是HAL_UART_Abort(&huart1); 和HAL_UART_DeInit(&huart1);。

在测试串口打开和关闭的时候,发现打开串口后数据正常传输没有问题,但是关闭后,大概过了十几秒后系统会死机,仿真后发现,是卡死在如下的代码处,这可能是什么原因呢?
怀疑是关闭串口时没有完全关闭中断,增加了关闭中断的代码,也没有效果,100%复现。
无标题.jpg
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120428
QQ
发表于 2025-12-24 10:05:34 | 显示全部楼层
我们的驱动不兼容HAL库的API,我们的是自己重新设计的,仅初始化用了HAL的UART初始化。
回复

使用道具 举报

5

主题

29

回帖

44

积分

新手上路

积分
44
发表于 2025-12-24 10:51:14 | 显示全部楼层
eric2013 发表于 2025-12-24 10:05
我们的驱动不兼容HAL库的API,我们的是自己重新设计的,仅初始化用了HAL的UART初始化。

兼容好还是不兼容好,我看很多程序都是在cubemax 上进行了封装,用cubemax 直接生成后,不干涉它的代码,自己开发自己的,效率很高,自己配一下,然后直接生成,全程实用HAL 库封装BSP 层,但是这样提高了效率,但对底层的代码不关心,HAL 不稳定BUG 不好找,现在HAL 发展了这么久了,应该很稳定了
同时KEIL 也适用,用MDK 直接生成的代码很好,打勾就行,很稳定,但是脱离了MDK 就不能用了,所以自己移植才行,但是自己移植又不方便
我个人任务 我们应该在 HAL 库 RTOS 组件的基础上进行自己的开发,相当与只进行芯片驱动和应用开发,尽可能多平台,这是不是最合理的方式
回复

使用道具 举报

56

主题

113

回帖

281

积分

高级会员

积分
281
 楼主| 发表于 2025-12-24 20:58:46 | 显示全部楼层
eric2013 发表于 2025-12-24 10:05
我们的驱动不兼容HAL库的API,我们的是自己重新设计的,仅初始化用了HAL的UART初始化。

那这套UART代码如何实现打开和关闭呢?我是放在UI中用的,UI中有个打开和关闭的开关,需要这个功能。
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120428
QQ
发表于 2025-12-25 10:07:14 | 显示全部楼层
coolaimcu 发表于 2025-12-24 20:58
那这套UART代码如何实现打开和关闭呢?我是放在UI中用的,UI中有个打开和关闭的开关,需要这个功能。

我们的程序里面没有提供关闭API,打开就是重新初始化即可。

关闭你可以关闭串口中断,关闭串口(有个串口寄存器有对应的使能禁止位),重新配置串口GPIO。
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120428
QQ
发表于 2025-12-25 10:11:52 | 显示全部楼层
VDVA 发表于 2025-12-24 10:51
兼容好还是不兼容好,我看很多程序都是在cubemax 上进行了封装,用cubemax 直接生成后,不干涉它的代码,自己 ...

实际我们的程序都没有用到CubeMX。早期的时候,我们都是手动弄的。

现在再来看的话,基础配置使用CubeMX生成确实方便。

回复

使用道具 举报

6

主题

84

回帖

102

积分

初级会员

积分
102
发表于 2025-12-25 10:22:55 | 显示全部楼层
串口用DMA啊,配置好了根本不用代码干预,就等一包发完和收完就可以了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-1-10 07:55 , Processed in 0.050190 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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