21ic问答首页 - AT32F403A 移植FreeRTOS 后 configTOTAL_HEAP_SIZE 设置太大死机
AT32F403A 移植FreeRTOS 后 configTOTAL_HEAP_SIZE 设置太大死机
各位大佬 我用AT32F403ARGT7 移植FreeRTOS 跟LVGL RAM 已经修改为了224k 出现了一个问题 如果只是单独跑LVGL RAM超过96k 是没有问题的,但是如果开启freeRTOS在 freeRTOS中运行lvgl就会卡死,我排查过后发现是freeRTOS 导致的,只要freertos开启 且RAM超过96k 就会卡死,我单独运行FREERTOS 将 configMAX_TASK_NAME_LEN 设置到60k 我的ram这个时候是105k FREERTOS就卡死了,这个是什么问题呀?有没有大佬知道的
赞0
不客气;技术讨论随时有;
那你可以得空好好研究一下;
是的,在原因不明的情况下,就用更加稳妥的方法去实现同样的功能,也是一种软件设计理念。
评论
2025-05-22
赞0
嗯嗯谢谢 大佬,
关于这个问题已经解决了。 因为我的lvgl刷新函数是放在 freertos 一个任务里面的,所以要在这个任务前面重新配置 系统时钟 这样 freeRTOS 跟 LVGL 就都可以正常运行了。 但是就是不知道是什么原因,因为我在创建这个任务前 配置系统时钟 就没有用。 因为不知道什么原因引起的 不敢用 还是用定时器来产生时基,再次感谢大佬的帮助 感谢
评论
2025-05-22
赞0
解决就好;
不建议使用的原因就是可能会出问题,但不是百分百会出问题;STM32可以那么使用,也许产品量大了可能就会出一些奇奇怪怪的偶发性Bug;
或者你想弄清楚根因的话,可以尝试咨询一下雅特力MCU的技术支持。
评论
2025-05-22
赞0
这样确实可以 ,但是我用stm32 这样用没有问题的,这两个 IC 不是可以平替的吗
评论
2025-05-22
赞0
LVGL的定时延时,不要直接用RTOS里面的,你直接外加一个MCU的定时器外设来处理;这样试试;然后别使用滴答时钟SysTick产生LVGL的时基,这个一般被用于RTOS。vTaskDelay尽量只用于RTOS,其他模块的定时延时,自己加MCU外设定时器处理;
42563682e8a8e5d4f4.png (66.11 KB )
下载附件
2025-5-22 10:23 上传
自己加个MCU的高级定时器来处理LVGL的心跳任务,定时器中断优先级设置高,LVGL的心跳函数比较重要,如果调用间隔不准确,可能会导致显示卡顿或者任务处理不及时等问题。
评论
2025-05-22
赞0
3332682e888a374f9.png (105.69 KB )
下载附件
2025-5-22 10:14 上传
评论
2025-05-22
赞0
我大概知道是什么问题了;可能是死锁了。
评论
2025-05-22
赞0
看这个报错是 系统时钟挂了 但是不加LVGL 就没挂 lvgl 的时钟用的是FREERTOS的呀,咋会挂了呢,搞不懂
评论
2025-05-22
赞0
加了 lVGL 后 程序就卡死在了 delay 那里 我的lvgl时基 是由 FREERTOS 提供的 不知道什么个问题
评论
2025-05-22
您需要登录后才可以回复 登录 | 注册