STM32
直播中

最强海贼王

8年用户 1393经验值
擅长:MEMS/传感技术
私信 关注
[问答]

STM32L476+ST253993增加freertos,但是代码下进去系统运行时就卡住,为什么?

我准备在官方的STM32L476+ST253993增加freertos,但是代码下进去系统运行时就卡住,单步调试,系统一直卡在prvCheckTasksWaitingTermination中。rtos使用systick,HAL_delay使用TIM7 freertos的两个任务,一个是LED闪烁,一个是RFID测试程序
第一次执行时,任务2的第一个测试代码完成后,到osdelay里就出不来了

回帖(1)

淡淡的爱

2024-4-15 15:39:31
有几个可能的原因会导致系统在使用FreeRTOS时卡住:

1. 堆栈大小不足:检查任务的堆栈大小是否足够,尤其是当任务需要执行较大的操作或使用大量本地变量时。增加堆栈大小可能会解决问题。

2. 优先级错误:确保任务的优先级设置正确。如果一个任务的优先级高于其他任务,它可能会独占系统资源,导致其他任务无法运行。

3. 资源竞争:检查是否存在共享的资源,例如全局变量或共享的设备。如果多个任务尝试同时访问相同的资源,可能会导致死锁或卡死的情况。

4. 中断问题:确定是否有任何中断冲突或优先级错误。在使用FreeRTOS时,确保中断处理程序正确地处理和释放中断服务程序。

5. 调度器问题:检查调度器的配置和使用方式。确保正确使用任务挂起、唤醒和延迟函数来控制任务的执行顺序。

6. 内存管理问题:如果系统中有内存管理器(例如动态内存分配器),请确保其正确初始化和配置。内存管理问题可能会导致任务堆栈或其他数据结构分配错误,导致系统卡死。

尝试检查以上可能的问题,并逐个解决它们,以确定导致系统卡死的根本原因。另外,可以在系统卡住时使用调试工具和输出信息,以便更进一步地分析和排除问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分