详情描述
兄弟们,大家有没有遇到过这种情况,我的GD32F103VET6在之前的一块板子上一直都没问题。但现在在新板子新外围电路组合下,经常卡在HardFault_Handler函数里面,电源电路是一样的,函数也是一样的,pcb和smt是请立创贴的。按道理应该是不会有问题才对。我上网调试方法,但调试结果和他们的不一样,想问一下兄弟们有没有好的建议可以给到小弟
已尝试解决的方法及结果
我做的尝试如下:
1. 在中断文件里面添加这个宏定义,如果是除法出错会有提示,但并未有提示
#define DIV_SAFE(a, b) ({ \ if (b == 0) \ { \ printf("DIV0! File: %s Line: %d\n", __FILE__, __LINE__); \ } \ a / b; \ })

2. 在一个新的光板上面只做最小系统,只用呼吸灯不怎么会卡死,逐步加了按键等操作就小概率卡死。我的按键判断是在中断里面做的,获取到低电平达到有效时间就会给一个结构体的对应值置1,松开则复位。主函数获取这个结构体的值就知道是否按下。但这些代码框架我在之前的板子都没有问题,按道理不会移植过来就出错的。

3. 之前的板子我用0、1、2串口发数据,3、4串口取消掉给sdio接口使用,但这次的板子没有tf卡,因此我还用了串口4,但串口4的初始化之前我禁用了sdio接口。所以应该不是接口冲突

4. 之前的板子MCU的boot0引脚串联10k的电阻到地,boot1串联10k的电阻到3V3,但JTDO、NJTRST、、JTDI三个脚都被我复用为pwm或者io了。但这次的板由于io数量充足,我在dsp的建议下把boot1、JTDO、NJTRST、、JTDI4个引脚分别串联10k的电阻到地,后面老是卡死我又把JTDO、NJTRST、、JTDI的电阻去掉,现在它们是悬空状态的

5. 之前我是用的外部8M晶振,这次也有接,但是老是卡死。我就改成使用内部晶振,但还是卡死,不过外部晶振电路并未去掉
硬创社
全部评论 默认 最新
网老四
2025-07-04 21:11:36 来自江苏
卡着卡着就习惯了
魏十一 作者
2025-07-26 10:16:47 来自广东
忘记有这个贴了,后面发现了原来是串口4的问题,如果启动了串口4,那么碰到芯片或者其他抖动就会卡死。但是关闭了串口4的接收串口和中断就没问题了。感觉uart串口没有usart串口稳定
王大锤zz
2025-06-30 09:54:20 来自四川
感觉还是程序问题。
魏十一 作者
2025-06-25 15:41:31 来自广东
天撸了,我之前的板子没有遇到过这种问题,所以刚刚在老板的提示下把前板子代码烧录到当前板子,结果居然不卡死了。但我现在的代码就是之前板子移植过来魔改的。现在是一点点对比,重新移植看看情况
white呆呆
2025-06-26 14:37:09 来自广东
所以还是代码额度问题吧
魏十一 作者
2025-06-25 10:32:10 来自广东
第二个新板只贴了基本的电容电阻和一些小外围电路,但还是有卡死的几率
没有更多啦~