diff --git a/System/sv_com.c b/System/sv_com.c index a7e9c7a0..51e325af 100644 --- a/System/sv_com.c +++ b/System/sv_com.c @@ -4,8 +4,8 @@ * @brief 内核服务公共函数 * @details 在服务层临界区中,由内核服务调用。 * @author 迟凯峰 - * @version V1.0.0 - * @date 2025.02.08 + * @version V1.0.1 + * @date 2025.02.19 ******************************************************************************/ #include "os_var.h" @@ -149,16 +149,16 @@ void sv_task_remove_ready(s_tasknode_tsp htask) s_u8_t sv_task_select_ready(void) { #if SYSCFG_TASKPRIORITY > 64 - s_u8_t table_index = s_task_map_pick[s_task_table_index >> 1]; - s_u8_t bytes_index = s_task_map_pick[s_task_bytes_index[table_index] >> 1]; - s_u8_t bit_index = s_task_map_pick[s_task_ready_table[table_index][bytes_index] >> 1]; + s_u8_t table_index = s_task_map_pick[s_task_table_index >> (SYSCFG_TASKPICKBITMAP & 1)]; + s_u8_t bytes_index = s_task_map_pick[s_task_bytes_index[table_index] >> (SYSCFG_TASKPICKBITMAP & 1)]; + s_u8_t bit_index = s_task_map_pick[s_task_ready_table[table_index][bytes_index] >> (SYSCFG_TASKPICKBITMAP & 1)]; s_u8_t pri = (table_index << 6) + (bytes_index << 3) + bit_index; #elif SYSCFG_TASKPRIORITY > 8 - s_u8_t bytes_index = s_task_map_pick[s_task_bytes_index >> 1]; - s_u8_t bit_index = s_task_map_pick[s_task_ready_table[bytes_index] >> 1]; + s_u8_t bytes_index = s_task_map_pick[s_task_bytes_index >> (SYSCFG_TASKPICKBITMAP & 1)]; + s_u8_t bit_index = s_task_map_pick[s_task_ready_table[bytes_index] >> (SYSCFG_TASKPICKBITMAP & 1)]; s_u8_t pri = (bytes_index << 3) + bit_index; #else - s_u8_t pri = s_task_map_pick[s_task_ready_table >> 1]; + s_u8_t pri = s_task_map_pick[s_task_ready_table >> (SYSCFG_TASKPICKBITMAP & 1)]; #endif return pri; }