嵌入式GD32开发
文章平均质量分 67
天权璇玑
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
FreeRTOS断言错误“Error:..\FreeRTOS\port\RVDS\ARM_CM4F\port.c,768”问题排查,中断优先级配置问题
摘要:使用FreeRTOS时在串口中断调用xQueueSendFromISR()出现断言错误,原因是中断优先级设置不当。需确保调用FreeRTOS API的中断优先级数值≥configMAX_SYSCALL_INTERRUPT_PRIORITY。此外,FreeRTOS要求4位抢占优先级(PRE4_SUB0分组),而实际硬件可能是2位抢占+2位子优先级,导致优先级被截断。解决方案是在main()开始时调用nvic_priority_group_set(NVIC_PRIGROUP_PRE4_SUB0)设置正确的原创 2025-09-22 10:47:01 · 504 阅读 · 0 评论 -
Keil仿真时点击3次全速运行才进入mian函数
文章摘要:调试FreeRTOS工程时发现程序卡在启动文件Reset_Handler,需多次全速运行才能进入main函数。经查,勾选Keil的"UseMicroLIB"选项可解决问题,即使未使用printf函数。MicroLIB是ARM提供的精简C库,相比标准库优化了内存管理、系统初始化和函数调用开销,能更快进入main函数。该问题表明程序可能被标准库的复杂初始化过程阻塞,改用MicroLIB可避免此类启动延迟。(150字)原创 2025-09-11 14:43:55 · 469 阅读 · 0 评论 -
FreeRTOS创建任务不成功,跑HardFault_Handler
本文分析了GD32F30x单片机在FreeRTOS环境下因SysTick中断冲突导致的系统崩溃问题。问题表现为SysTick_Handler被裸机延迟函数和RTOS调度器同时占用,引发HardFault异常。通过HFSR(0x40000000)和CFSR(0x00080000)寄存器分析,发现根本原因是除零错误(DIVBYZERO),这可能是由于向量表冲突导致CPU执行无效指令所致。解决方案包括:1)注释掉main函数中的systick_config()调用;2)在FreeRTOSConfig.h中重定义中原创 2025-09-11 13:18:36 · 711 阅读 · 0 评论 -
GD32F303配置完定时器完成不了初始化
2.究其原因是因为在开启中断使能后定器初始化尚未完成前,产生了中断,又没有清除中断标志位,造成了这种问题,解决方法是在开启中断前,清除标志位,或者在中断服务函数中要清除中断标志。1.配置完定时器,因为程序需要把中断服务函数中的内容屏蔽了,发现复位板子后程序就无法完成定时器初始化了。原创 2024-06-07 08:43:04 · 458 阅读 · 0 评论
分享