【FreeRTOS】基础知识入门


前言

目前跟着原子哥补课
一些基础知识,之前学习过了,这里就不放上来了。


零、裸机和RTOS

经典例子

0.0、裸机

裸机:裸机又称为前后台系统,前台系统指的中断服务函数,后台系统指的大循环,即应用程序。
简单直观的代码展示。

while(1)
{
	打游戏();
	回复信息();
}

是轮询的。

0.1、操作系统

void 信息(void)
{
	while(1)
	{
		信息();
	}
}
void 游戏(void)
{
	while(1)
	{
		打游戏();
	}
}
void mian(void)
{
	//创建打游戏任务
	xTaskCreat(打游戏)
	//创建回复信息任务
	xTaskCreate(回复信息)
}

相当于,(任务优先级相同)打游戏执行1ms,回复信息执行1ms,在宏观表现上,二者就是同时执行的。
在这里插入图片描述

0.3、中断

中断是一瞬间的事情,不能放太多的步骤。因此大多数时候我们使用标志位的方式

0.4、任务调度器

使用相关的调度算法来决定当前需要执行的哪个任务。
FreeRTOS支撑的三个

1、抢占式调度

主要是针对优先级不同的任务,每个任务都有一个优先级,优先级高的任务可以抢占优先级低的任务。

2、时间片调度

主要针对优先级相同的任务,当多个任务的优先级相同时, 任务调度器会在每一次系统时钟节拍到的时候切换任务。

3、协程式调度

当前执行任务将会一直运行,同时高优先级的任务不会抢占低优先级任务
FreeRTOS现在虽然还支持,但是官方已经表示不再更新协程式调度。
(实时性较差)

一、Free RTOSConfig.h配置文件

1.1 INCLUDE_开始的宏

在这里插入图片描述

二、基础知识

2.1 任务状态

四种状态:
1、运行态:当前任务正在运行。
2、就绪态:告诉任务调度器,程序可以运行了,考虑优先级高就可以运行了。
3、阻塞态:等待事件发生,不能浪费等待的时间,于是进入阻塞态。
4、挂起态:暂停运行。
四个任务可以相互转换的。

在STM32中,同一时间仅一个任务处于运行态。

在这里插入图片描述
总结
1、仅就绪态可转变成运行态。
2、其他状态的任务想运行,必须先转变成就绪态。
3、这四种状态中,除了运行态,其他三种任务状态的任务都有其对应的任务状态列表。

2.2 任务优先级

在这里插入图片描述
这个需要区分裸机开发中的中断优先级,中断优先级是数字越小优先级越大!!!

configMAX_PRIORITIES我这里初始化是5,意味着不做修改的话,我这里运行的优先级范围是0~4。
在这里插入图片描述

2.3 任务实现

具体工作内容
在这里插入图片描述

2.4 任务控制块

就是保存参数的结构体 ,

2.5 任务堆栈

在这里插入图片描述


总结

这篇文章依旧没有总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值