本代码是基于正点原子的STM32Mini板子,结合其FreeRTOS课程进行学习。
实验一:设计4个任务:start_task、task1、task2、task3
- start_task任务:用来创建其他三个任务
- task1任务:实现LED0每500ms翻转一次
- task2任务:实现LED1亮800ms,暗200ms
- task3任务:判断按键KEY0是否按下,按下KEY0删除task1
FreeRTOS中,任务创建和删除(动态方法)的函数为:xTaskCreate、vTaskDelete
具体代码如下:
#include "led.h"
#include "key.h"
#include "delay.h"
#include "sys.h"
#include "FreeRTOS.h"
#include "task.h"
/*START_TASK 任务配置
*包括:任务句柄,任务优先级,堆栈大小,创建任务
*/
//任务优先级
#define START_TASK_PRIO 1
//任务堆栈大小
#define START_TASK_STACK_SIZE 128 //单位是字,128x4才是字节
//任务句柄
TaskHandle_t StartTask_Handler;
//任务函数
void start_task(void *pvParameters);
/*TASK1 任务配置
*包括:任务句柄,任务优先级,堆栈大小,创建任务
*/
//任务优先级
#define TASK1_PRIO 2
//任务堆栈大小
#de