首先我们在main函数完成硬件的初始化,其次在硬件初始化完成之后创建任务start_task()然后开启FreeRtos的任务调度
(1)、start_task 任务,用于创建其他 3 个任务。
(2)、在 key_tssk 任务里面,KEY_UP 被按下,调用函数 vTaskSuspend()挂起任务 1。
(3)、KEY1 被按下,调用函数 vTaskResume()恢复任务 1 的运行。
(4)、KEY2 被按下,调用函数 vTaskSuspend()挂起任务 2。
#define START_TASK_PRIO 1 //任务优先级 #define START_STK_SIZE 120 //任务堆栈大小 TaskHandle_t StartTask_Handler; //任务句柄 void start_task(void *pvParameters); //任务函数 #define KEY_TASK_PRIO 2 #define KEY_STK_SIZE 120 //任务堆栈大小 TaskHandle_t KeyTask_Handler; void key_task(void *pvParameters); #define TASK1_TASK_PRIO 3 //任务优先级 #define TASK1_STK_SIZE 120 //任务堆栈大小 TaskHandle_t Task1Task_Handler void task1_task(void *pvParameters); #define TASK2_TASK_PRIO 4 //任务优先级 #define TASK2_STK_SIZE 120 //任务堆栈大小 TaskHandle_t Task2Task_Handler; void task2_task(void *pvParameters); int main(void) { NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//设置系统中断优先级分组