打印

GD32F407使用freeRTOS死机

[复制链接]
7450|58
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
在GD32F407跑了freeRTOS,串口接收使用了DMA+IDLE中断来实现不定长接收,串口的IDLE中断中接收完数据后,通过事件通知线程执行解析,但是中断中调用xEventGroupSetBitsFromISR函数后就会死机

使用特权

评论回复
沙发
键盘手没手| | 2024-5-31 23:25 | 只看该作者
本帖最后由 键盘手没手 于 2024-6-1 09:00 编辑

xEventGroupSetBitsFromISR函数应该是可以在中断服务例程中使用的,但要确保你没有在中断服务例程中调用任何可能导致冲突的其他函数。

使用特权

评论回复
板凳
键盘手没手| | 2024-5-31 23:25 | 只看该作者
本帖最后由 键盘手没手 于 2024-6-1 09:00 编辑

如果你的中断服务例程可能会与其他任务发生竞争,确保优先级正确设置可以避免优先级反转等问题。

使用特权

评论回复
地板
modesty3jonah| | 2024-6-5 22:18 | 只看该作者
freeRTOS是一个多任务操作系统,如果多个任务同时访问共享资源(如内存、外设等),而没有适当的同步机制(如互斥锁、信号量等),可能导致资源竞争和死锁。

使用特权

评论回复
5
chenjun89| | 2024-6-5 22:32 | 只看该作者
死机是因为你还没有把系统原理了解清楚。

使用特权

评论回复
6
weifeng90| | 2024-6-6 08:10 | 只看该作者
大概率还是你的应用有问题,逻辑没有处理好。

使用特权

评论回复
7
rosemoore| | 2024-6-6 08:13 | 只看该作者
避免在中断服务例程中直接访问可能被任务修改的共享资源。

使用特权

评论回复
8
lzmm| | 2024-6-7 08:45 | 只看该作者
FreeRTOS中每个任务都需要分配一定的堆栈空间,如果堆栈大小设置不足,任务执行过程中可能会发生堆栈溢出,导致系统死机。

使用特权

评论回复
评论
陈吉Ch 2024-9-9 11:45 回复TA
我比较倾向于你这个回答,通常是这样子的。 
9
primojones| | 2024-6-7 11:55 | 只看该作者
堆(Heap)管理是否正确配置,是否有足够的内存用于动态内存分配。

使用特权

评论回复
10
mattlincoln| | 2024-6-7 15:17 | 只看该作者
在FreeRTOS中,异常处理是非常重要的。

使用特权

评论回复
11
uytyu| | 2024-6-7 18:23 | 只看该作者
FreeRTOS中使用的内存管理策略可能存在缺陷,或者系统中可用的堆内存不足,导致动态内存分配失败,进而引发死机。

使用特权

评论回复
12
robincotton| | 2024-6-7 21:53 | 只看该作者
死锁是指两个或多个任务在等待对方释放资源,从而导致系统无法继续执行。

使用特权

评论回复
13
jonas222| | 2024-6-8 10:28 | 只看该作者
检查你的内存分配情况,确保为FreeRTOS分配了足够的内存。

使用特权

评论回复
14
kkzz| | 2024-6-8 13:53 | 只看该作者
避免中断服务例程与任务之间的优先级反转问题。

使用特权

评论回复
15
olivem55arlowe| | 2024-6-8 17:03 | 只看该作者
增大任务栈大小或优化代码              

使用特权

评论回复
评论
陈吉Ch 2024-9-9 11:47 回复TA
赞同! 
16
bestwell| | 2024-6-9 09:12 | 只看该作者
检查代码中是否有无限循环、未处理的全局变量、内存越界等常见错误。

使用特权

评论回复
17
iyoum| | 2024-6-9 12:24 | 只看该作者
检查MCU的供电是否稳定,电压是否正确。

使用特权

评论回复
18
earlmax| | 2024-6-9 15:31 | 只看该作者
栈溢出是导致系统死机的常见原因              

使用特权

评论回复
19
vivilyly| | 2024-6-9 18:44 | 只看该作者
不正确的中断优先级可能导致任务调度出现问题。

使用特权

评论回复
20
wwppd| | 2024-6-10 15:11 | 只看该作者
不兼容的版本可能导致不可预见的问题。

使用特权

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

本版积分规则

1

主题

1

帖子

0

粉丝