打印
[研电赛技术支持]

GD32F303VET6裸板调试遇到问题

[复制链接]
882|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2024-3-13 17:01 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
1、开始串口中断的时候会死机:nvic_irq_enable(USART0_IRQn, 3, 0);

解决:要设置中断优先级分组:

nvic_priority_group_set(NVIC_PRIGROUP_PRE4_SUB0);

2、初始化的时候多几次使用 printf 会HardFault_Handler:

   解决:因为RTOS中断相关没有初始化好,调用printf 会出问题。

3、任务栈设太大了,会导致初始化不成功 MAIN_TASK_SIZE

解决:要考虑好任务栈大小分配,太大,太小都会了会出问题。

4、初始化的时候,不能修改时钟,不然会导致任务调度的 vTaskDelay(10);不准,修改的函数是delay_init(SystemCoreClock / 500U);

5、RTC不准问题,要加上分频函数:rtc_prescaler_set(32767);

6、外部晶振 8M改成12M,代码要修改的地方:

(1) 修改晶振参数





(2) 修改外部晶振配置

system_clock_120m_hxtal();





7、接着 jlink或者串口线关机的时候,会一直给MCU供电,导致没有完成正常掉电逻辑,重新上电的时候,程序没有重新开始运行,所以一直是黑屏,而且无法出现待机界面;

8、串口初始化死机问题:由于串口中断数组越界导致的,以后使用数组,索引++或者--的时候,一定要注意做限制,不能超出范围,不然会引发异常,甚至死机;

9、用消息队列传输数组,数组里面有负数时,不能直接给数组成员赋值,要注意要多一位去区分负数和正数;注意负数操作(赋值,取整,取余等)的时候,如果操作不当,也有能引发死机问题。

10、压力传感器校准参数读出有问题:





解决:(1) 浮点数扩大成整数之后再保存;(2)读出flash数据之后判断限定范围,如果超出范围赋默认值。

11、氧浓度传感器串口偶发接收到数据,导致逻辑判断出问题:

解决:接收信号线要设置成 上拉输入,不能设置成浮空输入,不然会偶发误接收到数据。不可用。

无法避免接收到误发,只能修改代码逻辑,接收到完整包的时候才判断氧浓度传感器接入。

12、上电语音误报问题:

初始化的时候,开启了中断,默认会进入一次中断处理函数;GD32的中断初始化设置之后,默认会开启一次。清中断必须放在使能中断之前才能生效。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/Calmer_/article/details/136120815

使用特权

评论回复
沙发
菜鸟的第一步| | 2024-3-28 13:26 | 只看该作者
堆栈的问题要引起重视

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1360

主题

13960

帖子

8

粉丝