[STM32F1] 任务优先级和调度问题

[复制链接]
1175|18
 楼主| 突然下起雨 发表于 2024-7-30 18:26 | 显示全部楼层 |阅读模式
LCD, LC, CD, sd, IO, rio
任务优先级设置不当或者任务间的资源竞争可能会导致系统不稳定。

3.1 适当调整任务优先级
确保SD卡写入任务和屏幕显示任务的优先级设置合理,不会导致任务饥饿或优先级反转。

c

#define SD_TASK_PRIORITY      (tskIDLE_PRIORITY + 2)
#define LCD_TASK_PRIORITY     (tskIDLE_PRIORITY + 1)

xTaskCreate(sdTask, "SD Task", SD_TASK_STACK_SIZE, NULL, SD_TASK_PRIORITY, NULL);
xTaskCreate(lcdTask, "LCD Task", LCD_TASK_STACK_SIZE, NULL, LCD_TASK_PRIORITY, NULL);


我爱台妹mmd 发表于 2024-7-31 23:17 | 显示全部楼层
在 FreeRTOS 中,适当设置任务优先级是确保系统稳定和高效的关键。你的代码示例显示了如何为 SD 卡写入任务 (sdTask) 和屏幕显示任务 (lcdTask) 设置优先级。
范德萨发额 发表于 2024-8-16 14:46 | 显示全部楼层
如果SD卡写入任务占用了大量CPU时间,可能会导致LCD显示任务饥饿(即LCD任务很少有机会运行)
范德萨发额 发表于 2024-8-16 14:52 | 显示全部楼层
可以使用FreeRTOS的优先级继承机制。
范德萨发额 发表于 2024-8-16 14:52 | 显示全部楼层
显示任务可能相对较少依赖实时性,因此可以设置一个较低的优先级。这样可以确保SD卡写入任务得到优先处理。
狄克爱老虎油 发表于 2024-8-17 22:59 来自手机 | 显示全部楼层
优先级继承是什么啊
grfqq325 发表于 2024-8-28 12:07 | 显示全部楼层
通常,重要且需要实时处理的任务应当分配较高的优先级。
Clyde011 发表于 2025-3-18 08:23 | 显示全部楼层
你在使用FreeRTOS的时候,有没有遇到过低优先级任务莫名其妙被饿死的情况?是怎么解决的?
公羊子丹 发表于 2025-3-18 08:24 | 显示全部楼层
这个优先级分配看起来挺合理的,SD卡写入通常比屏幕刷新更关键。不过你测试过在高负载下的表现吗?
周半梅 发表于 2025-3-18 08:25 | 显示全部楼层
任务饥饿的问题主要是高优先级任务一直占用CPU吧?你有没有试过用vTaskDelay()让出一些时间?
帛灿灿 发表于 2025-3-18 08:27 | 显示全部楼层
这里是用的FreeRTOS吧?如果SD写入任务有时候阻塞,会不会导致低优先级任务执行不均匀?
童雨竹 发表于 2025-3-18 08:28 | 显示全部楼层
任务优先级反转在这种情况下会不会影响SD卡写入?比如LCD任务有时候占用某些资源导致SD任务被卡住?
万图 发表于 2025-3-18 08:29 | 显示全部楼层
你有没有尝试过使用Mutex或者Semaphore来保证两个任务的资源访问不会冲突?
Bblythe 发表于 2025-3-18 08:31 | 显示全部楼层
你是怎么测定这两个任务的执行时间的?用Tracealyzer之类的工具分析过任务调度情况吗?
Wordsworth 发表于 2025-3-18 08:33 | 显示全部楼层
这个优先级分配可以满足实时需求吗?比如在数据量比较大的时候,SD写入会不会拖慢屏幕刷新?
Pulitzer 发表于 2025-3-18 08:35 | 显示全部楼层
如果LCD任务偶尔需要更高的响应速度,比如响应用户触摸输入,这样的优先级设置会不会影响交互体验?
Uriah 发表于 2025-3-18 08:37 | 显示全部楼层
除了调整优先级,你觉得调整任务栈大小或者优化任务代码能不能提升整体性能?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

46

主题

531

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部