物联网操作系统多任务基础

物联网操作系统多任务基础

周末休息回来继续学习!

一.多任务基础

1.多任务特性

任务调度机制

1.时间片调度机制

核心为时间片的轮询,同优先级只能通过时间片轮询的调度。

2.抢占调度机制

​ 当任务优先级不一致,低优先级挂起,高优先级先执行,中断(isr)产生优先级最高。

3.任务特性

​ 1.编程简单

​ 2.任务数量没有限制。

​ 3.支持抢占。

​ 4.优先级排序。

​ 5.独立的堆栈。任务切换时需要切换CPU的运行环境。(所以操作系统的特性)

4.任务的状态

​ 任务一共有四种状态:

1.挂起态:任务在挂起状态时,将不会被调度器所调度。

2.就绪态:任务将运行时等待任务调度的状态。

3.阻塞态:osDelay,给任务一个延时,使他阻塞,然后等待调度器的调度。

4.运行态:

5.任务优先级

在这里插入图片描述

2.多任务实现

每个任务都是由3部分实现

(1)死循环

(2)任务实体

(3)任务退出:无返回值。

void freertosTask(void const * argument){
	for(;;){
	osDelay();
	}
}

任务控制块

​ 任务控制块是描述任务属性的结构体。

三、任务堆栈

在这里插入图片描述

二、任务创建

1.创建任务

(1)任务创建API

xTaskCreate();//动态创建任务 使用时 configSUPPORT_DYNAMIC_ALLOCATION必须置1

xTaskCreateStatic(); 使用时 ConfigSUPPORT_STATIC_ALLICATION置1.

(2)使用cubemax在任务中1s打印一次任务运行标志

复制上篇工程,使能串口配置为异步通信,打开FreeRTos在配置选项一栏选择内存配置,配置为动态静态混用。

配置完成之后创建串口任务,生成keil文件。

工程如下

(3)使用按键控制Led任务挂起和恢复

void vTaskSuspend( TaskHandle_t pxTaskToSuspend ); // 挂起

void vTaskResume( TaskHandle_t pxTaskToResume ); //恢复
源码:https://download.csdn.net/download/ay1204/86261003

注:源码注释下篇
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值