记录一个STM32G0x单片机因为UART1初始化导致的死机问题
最近一个项目中用到了STM32G030C8T6单片机,使用HAL库编写程序,遇到一个比较尴尬的现象,
通过STLink直接下载程序到单片机中程序不运行(实际是卡死了),但是通过调试模式全速运行程序却能正常运行,
接入调试串口看,程序实际是运行了,因为调试串口有输出,但输出的内容没有“条件格式化”部分,如下图

遂将LED灯初始化部分提到串口初始化之前,并在初始化完成后立即点亮LED灯,然后下载程序到单片机中,
LED等可以正常点亮,由此判断,程序确实运行,但是运行到UART1初始化部分却卡死了,
网上搜了一下相关现象,没有找到合适的解释,有介绍说是调用printf需要勾选使用microLib库,实际程序已经勾选

也有反应说是占空间太小,导致程序运行卡死的,实际测试程序占用资源很少,不可能存在栈溢出的问题

求解无过后,遂对UART1初始化部分逐句排查,发现屏蔽掉RX引脚的模式配置语句,程序运行边正常了,

测试发现确实有该句引起的卡死,但在STM32F1中却一致都是如此配置,估计是芯片硬件架构上有区别了吧
此问题网上未见有人反馈,故未做申请,仅做记录

浙公网安备 33010602011771号