freertos的configMAX_PRIORITIES在哪里设置
时间: 2023-12-03 21:05:42 浏览: 24
FreeRTOS的`configMAX_PRIORITIES`宏定义是在FreeRTOSConfig.h头文件中定义的。这个宏定义用于设置系统支持的任务优先级的最大值。默认情况下,`configMAX_PRIORITIES`被设置为5。如果你需要更多的任务优先级,你可以将它设置为更高的值。
在FreeRTOSConfig.h头文件中,你可以找到以下代码行,可以修改这个宏定义:
```
#define configMAX_PRIORITIES ( 5 )
```
你可以将`configMAX_PRIORITIES`的值修改为你需要的最大任务优先级。修改后,保存并重新编译你的FreeRTOS应用程序。
相关问题
configMAX_PRIORITIES
configMAX_PRIORITIES是FreeRTOS中用于配置任务优先级的参数。它的值表示任务优先级的最大数量。根据不同的方法,configMAX_PRIORITIES的最大值可能会有所不同。通用方法下,configMAX_PRIORITIES的最大值没有限制,但建议将其设置为最小必要值,因为较高的值会消耗更多的RAM并导致最差执行时间更长。而如果使用架构优化方法,configMAX_PRIORITIES不能大于32,并且同样建议将其保持在最小必要值,因为较高的值也会消耗更多的RAM。在FreeRTOS中,任务的优先级数值越小,任务的优先级越低。实际可使用的优先级范围是从0到configMAX_PRIORITIES-1。例如,如果将configMAX_PRIORITIES设置为5,则可使用的优先级号是0,1,2,3,4,不包括5。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [FreeRTOS----任务优先级](https://blog.csdn.net/yufm/article/details/77431715)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
- *3* [2021-04-16 FREERTOS任务优先级](https://blog.csdn.net/qq799703655/article/details/115743048)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
static struct bflb_device_s uart0; extern void shell_init_with_task(struct bflb_device_s shell); static int btblecontroller_em_config(void) { extern uint8_t __LD_CONFIG_EM_SEL; volatile uint32_t em_size; em_size = (uint32_t)&__LD_CONFIG_EM_SEL; if (em_size == 0) { GLB_Set_EM_Sel(GLB_WRAM160KB_EM0KB); } else if (em_size == 321024) { GLB_Set_EM_Sel(GLB_WRAM128KB_EM32KB); } else if (em_size == 641024) { GLB_Set_EM_Sel(GLB_WRAM96KB_EM64KB); } else { GLB_Set_EM_Sel(GLB_WRAM96KB_EM64KB); } return 0; } void bt_enable_cb(int err) { if (!err) { bt_addr_le_t bt_addr; bt_get_local_public_address(&bt_addr); printf("BD_ADDR:(MSB)%02x:%02x:%02x:%02x:%02x:%02x(LSB) \n", bt_addr.a.val[5], bt_addr.a.val[4], bt_addr.a.val[3], bt_addr.a.val[2], bt_addr.a.val[1], bt_addr.a.val[0]); ble_cli_register(); } } int main(void) { board_init(); configASSERT((configMAX_PRIORITIES > 4)); uart0 = bflb_device_get_by_name("uart0"); shell_init_with_task(uart0); /* set ble controller EM Size / btblecontroller_em_config(); / Init rf */ if (0 != rfparam_init(0, NULL, 0)) { printf("PHY RF init failed!\r\n"); return 0; } // Initialize BLE controller #if defined(BL702) || defined(BL602) ble_controller_init(configMAX_PRIORITIES - 1); #else btble_controller_init(configMAX_PRIORITIES - 1); #endif // Initialize BLE Host stack hci_driver_init(); bt_enable(bt_enable_cb); vTaskStartScheduler(); while (1) { } }用中文注释以上每一行代码,给出可复制代码
```
// 引入 uart0 设备
static struct bflb_device_s uart0;
// 声明 shell_init_with_task 函数,该函数会初始化 shell
extern void shell_init_with_task(struct bflb_device_s shell);
// btblecontroller_em_config 函数用于设置 BLE 控制器的 EM Size
static int btblecontroller_em_config(void)
{
// 获取 __LD_CONFIG_EM_SEL 变量的地址,该变量在链接时会被赋值为 EM Size
extern uint8_t __LD_CONFIG_EM_SEL;
volatile uint32_t em_size;
em_size = (uint32_t)&__LD_CONFIG_EM_SEL;
// 根据 EM Size 设置 BLE 控制器的 EM Size
if (em_size == 0) {
GLB_Set_EM_Sel(GLB_WRAM160KB_EM0KB);
} else if (em_size == 321024) {
GLB_Set_EM_Sel(GLB_WRAM128KB_EM32KB);
} else if (em_size == 641024) {
GLB_Set_EM_Sel(GLB_WRAM96KB_EM64KB);
} else {
GLB_Set_EM_Sel(GLB_WRAM96KB_EM64KB);
}
return 0;
}
// bt_enable_cb 函数会在 BLE 蓝牙启用完成后被调用
void bt_enable_cb(int err)
{
if (!err) {
// 获取本地 Public Address,并打印出来
bt_addr_le_t bt_addr;
bt_get_local_public_address(&bt_addr);
printf("BD_ADDR:(MSB)%02x:%02x:%02x:%02x:%02x:%02x(LSB) \n",
bt_addr.a.val[5], bt_addr.a.val[4], bt_addr.a.val[3],
bt_addr.a.val[2], bt_addr.a.val[1], bt_addr.a.val[0]);
// 注册 BLE CLI
ble_cli_register();
}
}
// main 函数
int main(void)
{
// 初始化板级硬件
board_init();
// 确保 FreeRTOS 的优先级大于 4
configASSERT((configMAX_PRIORITIES > 4));
// 获取 uart0 设备
uart0 = bflb_device_get_by_name("uart0");
// 初始化 shell
shell_init_with_task(uart0);
// 设置 BLE 控制器的 EM Size
btblecontroller_em_config();
// 初始化射频
if (0 != rfparam_init(0, NULL, 0)) {
printf("PHY RF init failed!\r\n");
return 0;
}
// 初始化 BLE 控制器
#if defined(BL702) || defined(BL602)
ble_controller_init(configMAX_PRIORITIES - 1);
#else
btble_controller_init(configMAX_PRIORITIES - 1);
#endif
// 初始化 BLE Host stack
hci_driver_init();
// 启用 BLE 蓝牙
bt_enable(bt_enable_cb);
// 启动 FreeRTOS 调度器
vTaskStartScheduler();
while (1) {
}
}
```