RTOS的简介

实时操作系统(Real Time Operating System,简称RTOS)是指当外界事件或数据产生
时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产
过程或对处理系统做出快速响应,调度一切可利用的资源完成实时任务,并控制所有实时任
务协调一致运行的操作系统。提供及时响应和高可靠性是其主要特点

官网

https://www.freertos.org/

任务创建

    //任务1
void vTask1( void *pvParameters )
{
    for( ;; )
    {
//    HAL_GPIO_WritePin(GPIOG,GPIO_PIN_0,GPIO_PIN_RESET);
//    HAL_GPIO_WritePin(GPIOG,GPIO_PIN_1,GPIO_PIN_RESET);
        printf("%d ",xTaskGetTickCount());
        printf("Task1\r\n");
        HAL_Delay(200);//模拟任务占用时间
        vTaskDelay(500);//相对延时500毫秒 
//    HAL_GPIO_WritePin(GPIOG,GPIO_PIN_0,GPIO_PIN_SET);
//    HAL_GPIO_WritePin(GPIOG,GPIO_PIN_1,GPIO_PIN_SET);

//        HAL_Delay(1200);
    }
}


//任务2
void vTask2( void *pvParameters )
{
    
    TickType_t xLastWakeTime;//记录
    const TickType_t xFrequency = 500;
    //BaseType_t xWasDelayed;
        // 用当前时间初始化xLastWakeTime变量。
     xLastWakeTime = xTaskGetTickCount ();//获取刚进入任务的时间
    
    
    for( ;; )
    {
//    HAL_GPIO_WritePin(GPIOG,GPIO_PIN_2,GPIO_PIN_RESET);
//    HAL_GPIO_WritePin(GPIOG,GPIO_PIN_3,GPIO_PIN_RESET);
        printf("%d ",xTaskGetTickCount());
        printf("Task2\r\n");
        

        HAL_Delay(200);//模拟任务占用时间 
        vTaskDelayUntil(&xLastWakeTime,xFrequency);//较为准确的500ms  高精度延时可以用于ADC采集


    //xWasDelayed = xTaskDelayUntil( &xLastWakeTime, xFrequency );
        //vTaskDelay(400);
//    HAL_GPIO_WritePin(GPIOG,GPIO_PIN_2,GPIO_PIN_SET);
//    HAL_GPIO_WritePin(GPIOG,GPIO_PIN_3,GPIO_PIN_SET);    
        //HAL_Delay(400);
        //vTaskDelay(400);
    }
}
//参数说明:  
//    1》函数名称,2》任务命名,3》分配内存,栈大小,单位为 word ,
//    4》需要传入的参数,5》优先级(数字越大优先级越低),6》线程句柄

//函数应用说明:    
//创建任务1
xTaskCreate(vTask1,"LED1",128,NULL,1,NULL);
//创建任务2
xTaskCreate(vTask2,"LED2",128,NULL,1,NULL);
//启动任务调度器
vTaskStartScheduler();
最后修改:2023 年 03 月 21 日
如果觉得我的文章对你有用,请随意赞赏