流程
1 写 xTaskCreate((TaskFunction_t )
2 调用void start_task( void * pvParameters )
3 void start_task( void * pvParameters )添加两个任务设定不同优先级
4 分别创建两个任务函数 void start_task( void * pvParameters )
#include "system.h"
#include "SysTick.h"
#include "led.h"
#include "usart.h"
#include "FreeRTOS.h"
#include "task.h"
TaskHandle_t starttask_Handler;
TaskHandle_t starttask1_Handler;
TaskHandle_t starttask2_Handler;
void start_task( void * pvParameters );
void start1_task( void * pvParameters );
void start2_task( void * pvParameters );
int main()
{
SysTick_Init(72);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//设置系统中断优先级分组4
LED_Init();
USART1_Init(115200);
xTaskCreate((TaskFunction_t ) start_task,
(const char* ) "start_task",
(uint16_t ) 120,
(void* ) NULL,
(UBaseType_t ) 1,
(TaskHandle_t* ) &starttask_Handler);
vTaskStartScheduler();
}
void start_task( void * pvParameters )
{
//任务一
xTaskCreate((TaskFunction_t ) start1_task,
(const char* ) "start1_task",
(uint16_t ) 120,
(void* ) NULL,
(UBaseType_t ) 2,
(TaskHandle_t* ) &starttask1_Handler);
//任务二
xTaskCreate((TaskFunction_t ) start2_task,
(const char* ) "start2_task",
(uint16_t ) 120,
(void* ) NULL,
(UBaseType_t ) 3,
(TaskHandle_t* ) &starttask2_Handler);
vTaskDelete(starttask_Handler);
}
void start1_task( void * pvParameters ){
while(1){
LED1 = ~LED1;
vTaskDelay(500);
}
}
void start2_task( void * pvParameters ){
while(1){
LED2 = ~LED2;
vTaskDelay(500);
}
}