[STM32F1] 如何在STM32中实现多任务调度?

[复制链接]
1345|20
风凉 发表于 2025-4-21 10:33 | 显示全部楼层
关键任务,分配高优先级,确保实时性。普通任务,分配中等优先级,平衡实时性和资源占用。低优先级任务,分配低优先级,避免影响关键任务

她已醉 发表于 2025-6-11 16:30 | 显示全部楼层
每个任务需分配独立的栈空间和任务控制块(TCB),并通过xTaskCreate()函数创建。任务函数通常包含无限循环,通过vTaskDelete()删除自身或由其他任务删除。
将爱藏于深海 发表于 2025-6-11 17:00 | 显示全部楼层
抢占式调度,高优先级任务可打断低优先级任务。若多个任务优先级相同,则通过时间片轮转(默认1ms)分配CPU时间
西洲 发表于 2025-6-11 18:00 | 显示全部楼层
合作式调度,任务需主动调用taskYIELD()让出CPU,否则不会发生抢占
故意相遇 发表于 2025-6-11 19:30 | 显示全部楼层
优先级数字越小,优先级越低(最低为0)。总优先级数由configMAX_PRIORITIES定义(默认56)
春日负喧 发表于 2025-6-11 22:00 | 显示全部楼层
使用vTaskPrioritySet()动态修改任务优先级
白马过平川 发表于 2025-6-12 02:00 | 显示全部楼层
FreeRTOS使用SysTick定时器作为基础时钟,默认时间片为1ms。每次定时中断触发任务切换,保存当前任务上下文并加载下一个任务的上下文
失物招領 发表于 2025-6-12 05:22 | 显示全部楼层
在STM32CubeMX中配置USE_PREEMPTION为Enable以启用抢占式调度
风凉 发表于 2025-6-12 16:49 | 显示全部楼层
避免频繁创建/删除任务,优先使用任务挂起/恢复(vTaskSuspend()和vTaskResume())
温室雏菊 发表于 2025-6-12 23:30 | 显示全部楼层
通过uxTaskGetStackHighWaterMark()监控任务栈使用情况,避免栈溢出
捧一束彼岸花 发表于 2025-6-13 09:00 | 显示全部楼层
避免优先级反转,通过优先级继承机制(如互斥锁)解决高优先级任务因等待低优先级任务持有的资源而被阻塞的问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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