免费下载建设银行官方网站下载,做标签这个网站刷单安全吗,国家认可的赚钱软件,网络营销公司全网推广公司STM32F1HAL库FreeTOTS学习1——FreeRTOS入门 裸机开发与操作系统嵌入式操作系统简介FreeRTOS简介FreeRTOS的几个重要概念任务调度器任务状态状态列表 裸机开发与操作系统 
在以往的嵌入式学习中#xff0c;我们最常用的就是裸机开发#xff0c;所谓裸机开发就是指在没有操作系… STM32F1HAL库FreeTOTS学习1——FreeRTOS入门 裸机开发与操作系统嵌入式操作系统简介FreeRTOS简介FreeRTOS的几个重要概念任务调度器任务状态状态列表  裸机开发与操作系统 
在以往的嵌入式学习中我们最常用的就是裸机开发所谓裸机开发就是指在没有操作系统支持的情况下直接使用裸机硬件的一种开发方式。在裸机开发中我们往往会定义一个循环比如while1来控制单片机循环内的代码实现特定的功能但是这样的方法存在一些问题单片机始终受困于循环之中虽说有各种各样的中断让裸机开发能够应对一些较为复杂的场合但是单片机始终无法摆脱单任务简单应用的场合。 而操作系统的出现则是准确的解决了裸机开发的痛点。最显著的就是让单片机不再局限于单任务能够同时运行多个任务处理更为复杂的任务实现单片机芯片性能的释放。 以上为个人总结的出操作系统具体介绍看下面 嵌入式操作系统简介 
嵌入式操作系统Embedded Operating System是专门设计用于嵌入式系统的操作系统它通常运行在资源有限、功耗低、特定功能的硬件平台上如微控制器、传感器节点、嵌入式设备等。与桌面计算机或服务器操作系统不同嵌入式操作系统需要考虑更多的实时性、稳定性和功耗优化。 
嵌入式操作系统的主要特点和功能包括 实时性对于许多嵌入式应用来说时间的准确性和响应速度至关重要。因此嵌入式操作系统通常提供实时调度器能够确保任务在指定的时间内完成。  资源管理由于嵌入式系统资源有限嵌入式操作系统需要有效地管理内存、处理器时间、外设等资源。它们提供了资源分配和调度的机制以便多个任务能够协同工作而不互相干扰。  低功耗设计嵌入式操作系统通常优化了功耗管理能够有效控制设备在不同运行状态下的能耗延长电池寿命或者减少能源消耗。  实时操作针对需要处理实时数据流或事件的应用嵌入式操作系统能够确保及时响应和处理如控制系统、传感器数据采集等。  驱动程序支持嵌入式操作系统提供了通用的设备驱动程序接口简化了与硬件的交互开发者可以通过API调用来访问和控制各种硬件设备。  任务调度多任务管理是嵌入式操作系统的一个重要功能。它能够管理多个任务的优先级、调度顺序以及任务之间的通信和同步。  通信支持许多嵌入式系统需要与外部设备或网络进行通信。嵌入式操作系统提供了通信协议和接口支持如串口通信、网络协议栈等。  FreeRTOS是嵌入式操作系统的一种也是我们要学习的内容 FreeRTOS简介 
FreeRTOSReal-Time Operating System是一个开源的实时操作系统内核专为嵌入式系统设计。它提供了轻量级的多任务管理、任务调度、定时器、信号量、消息队列等功能使得开发者能够在嵌入式设备上轻松实现复杂的应用程序。 主要特点 开源和免费FreeRTOS是开源项目采用MIT许可证可以免费用于商业和个人项目。这使得开发者可以自由地使用、修改和分发它同时享受开源社区的支持和贡献。  轻量级和高效FreeRTOS的内核设计非常精简占用资源少适合运行在内存和处理器能力有限的嵌入式设备上。其任务切换速度快响应时间短适用于对实时性要求高的应用场景。  多任务管理FreeRTOS支持多任务管理可以同时运行多个任务每个任务有独立的任务优先级。开发者可以利用任务调度器scheduler来控制任务执行的顺序和时间片分配实现复杂的并发控制和协同工作。  实时调度器内置的实时调度器确保任务能按照优先级和预定时间执行满足实时数据处理和响应的需求。这使得FreeRTOS特别适合需要及时处理事件或数据的应用如工业控制、汽车电子等领域。  资源管理FreeRTOS提供了丰富的资源管理功能包括内存管理、任务间通信如信号量、消息队列、邮箱等、定时器和事件控制等。这些功能能够有效地管理和分配设备的有限资源提高系统的效率和稳定性。  可移植性FreeRTOS支持多种架构和开发板如ARM、AVR、PIC等以及多种编译器如GCC、Keil、IAR等。这种广泛的支持使得开发者可以轻松在不同硬件平台上移植和使用FreeRTOS。  社区支持和生态系统FreeRTOS拥有活跃的开发社区和生态系统提供了丰富的文档、示例代码和技术支持。开发者可以通过社区获取技术支持、交流经验加速开发过程。  总结下来就是免费开源、简单好用、可移植性高、可裁剪、轻量级、使用广泛。 FreeRTOS的几个重要概念 
任务调度器 
调度器就是使用相关的调度算法来决定当前需要执行的哪个任务FreeRTOS 一共支持三种任务调度方式 
抢占式调度主要是针对优先级不同的任务每个任务都有一个优先级优先级高的任务可以抢占优先级低的任务。 
高优先级任务优先执行。高优先级任务不停止或者说是阻塞任务内部在延时或者等待系统信号量等操作叫阻塞低优先级任务无法执行。被抢占的任务会进入就绪状态。 
时间片调度主要针对优先级相同的任务当多个任务的优先级相同时 任务调度器会在每一次系统时钟节拍到的时候切换任务。 
同等优先级任务轮流地享有相同的 CPU 时间(可设置) 叫时间片在FreeRTOS中一个时间片就等于SysTick 中断周期同等优先级任务轮流执行时间片流转一个时间片大小取决为滴答定时器中断周期当一个任务进入阻塞但是时间片还没用完时会直接进入下一个任务且下一个任务的时间片长短不变。 
协程式调度当前执行任务将会一直运行同时高优先级的任务不会抢占低优先级任务FreeRTOS现在虽然还支持但是官方已经表示不再更新协程式调度基本上不使用了。 
任务状态 
在FreeRTOS中任务一共有以下四种状态 
运行态正在执行的任务处于运行态在STM32中同一时刻只有一个任务处于运行态之所以说FreeRTOS能够实现多任务是因为单片机在很短时间内依次执行多个任务由于一个时间片间隔很短导致好像同时在运行多个任务。就绪态表示该任务已经可以被执行但是还没轮到它处于就绪态阻塞态如果一个任务因延时或等待外部事件发生那么这个任务就处于阻塞态挂起态类似暂停调用函数 vTaskSuspend() 进入挂起态需要调用解挂函数vTaskResume()才可以进入就绪态  只有就绪态的任务可以变成运行态 状态列表 
除了运行态之外其他状态的任务都有一个任务列表 
就绪列表pxReadyTasksLists[x] X表示优先级阻塞列表pxDelayedTaskList挂起列表xSuspendedTaskList 调度器总是在所有处于就绪列表的任务中选择具有最高优先级的任务来执行 ,当所有任务处于同一个优先级时会都在同一个就绪列表上