freertos笔记1 动态任务创建

该博客介绍了FreeRTOS多任务创建流程,先使用xTaskCreate函数创建起始任务,在起始任务中再添加两个不同优先级的任务,同时给出了完整代码示例,包含头文件引用、任务句柄定义、主函数及各任务函数的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

流程

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);
 
 }
 }
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YELL.DOLL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值