STM32
直播中

王飞云

7年用户 1504经验值
私信 关注
[问答]

关于stm32cube中freertos的优先级设置问题求解

  在用STM32cube中freertos,在配置界面里设置为12级任务优先级,但是在cube中配置每个任务优先级时还是只能选择7种优先级,分别是:osPriorityIdle,osPriorityLow,osPriorityBelowNormal,osPriorityNormal,osPriorityAboveNormal,osPriorityHigh,osPriorityRealtime 。这是为什么呢?

回帖(1)

carey123

2024-5-14 18:09:40
STM32Cube中的FreeRTOS配置界面允许您设置12级任务优先级,但在实际配置任务优先级时,您只能选择7种优先级。这是因为STM32Cube为了简化配置过程,将12级优先级映射到了7种预定义的优先级类别。以下是这7种优先级类别的映射关系:

1. osPriorityIdle: 对应最低优先级(0)
2. osPriorityLow: 对应较低优先级(1)
3. osPriorityBelowNormal: 对应稍低优先级(2)
4. osPriorityNormal: 对应普通优先级(3)
5. osPriorityAboveNormal: 对应稍高优先级(4)
6. osPriorityHigh: 对应较高优先级(5)
7. osPriorityRealtime: 对应最高优先级(6)

这种映射关系使得您可以更容易地选择和配置任务优先级,而无需手动设置具体的数值。然而,如果您需要更精细的优先级控制,您可以通过修改FreeRTOS的配置文件(通常是FreeRTOSConfig.h)来实现。

在FreeRTOSConfig.h文件中,您可以找到以下宏定义:

1. configUSE_PREEMPTION
2. configMAX_PRIORITIES
3. configMINIMAL_STACK_SIZE

您可以根据需要修改这些宏定义。例如,如果您希望使用全部12级优先级,可以确保configMAX_PRIORITIES的值设置为12。同时,您需要确保configUSE_PREEMPTION宏定义为1,以启用抢占式调度。

请注意,修改这些宏定义可能会影响系统的实时性能和稳定性。在进行修改之前,请确保了解这些更改的影响,并在实际应用中进行充分的测试。
举报

更多回帖

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