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