FreeRTOS
文章平均质量分 85
FreeRTOS
Leung_ManWah
这个作者很懒,什么都没留下…
展开
-
FreeRTOS学习笔记(12)——按键中断
一、简介在 FreeRTOS 下实现按键中断可以有两种方法:**通过事件的触发和等待:**可以实现一对多,多对多的同步。即一个任务可以等待多个事件的发生;可以是任意一个事件发生时唤醒任务进行事件处理;也可以是几个事件都发生后才唤醒任务进行事件处理。同样,也可以是多个任务同步多个事件。**通过任务通知:**优点是解除阻塞的任务要快 45%,并且节省 RAM 内存空间。缺点是只能够一对一。二、通过事件2.1 要点创建 EXTI 外部中断,配置 NVIC 中断优先级分组与 FreeRTOS 相同原创 2021-01-08 13:18:15 · 5314 阅读 · 0 评论 -
FreeRTOS学习笔记(11)——CPU使用率统计
一、基本概念CPU 使用率其实就是系统运行的程序占用的 CPU 资源,表示机器在某段时间程序运行的情况,如果这段时间中,程序一直在占用 CPU 的使用权,那么可以人为 CPU 的利用率是 100%。CPU 的利用率越高,说明机器在这个时间上运行了很多程序,反之较少。利用率的高低与 CPU 强弱有直接关系,就像一段一模一样的程序,如果使用运算速度很慢的 CPU,它可能要运行 1000ms,而使用很运算速度很快的 CPU 可能只需要 10ms,那么在 1000ms 这段时间中,前者的 CPU 利用率就是 1原创 2021-01-05 11:12:35 · 6377 阅读 · 3 评论 -
FreeRTOS学习笔记(10)——中断管理
一、基本概念1.1 异常异常是导致处理器脱离正常运行转向执行特殊代码的任何事件,如果不及时进行处理,轻则系统出错,重则会导致系统毁灭性瘫痪。所以正确地处理异常,避免错误的发生是提高软件鲁棒性(稳定性)非常重要的一环,对于实时系统更是如此。异常是指任何打断处理器正常执行,并且迫使处理器进入一个由有特权的特殊指令执行的事件。异常通常可以分成两类:同步异常和异步异常。由内部事件(像处理器指令运行产生的事件)引起的异常称为同步异常,例如造成被零除的算术运算引发一个异常,又如在某些处理器体系结构中,对于确定的原创 2021-01-04 13:59:01 · 3746 阅读 · 6 评论 -
FreeRTOS学习笔记(9)——内存管理
一、基本概念FreeRTOS 操作系统将内核与内存管理分开实现,操作系统内核仅规定了必要的内存管理函数原型,而不关心这些内存管理函数是如何实现的,所以在 FreeRTOS 中提供了多种内存分配算法(分配策略),但是上层接口(API)却是统一的。这样做可以增加系统的灵活性:用户可以选择对自己更有利的内存管理策略,在不同的应用场合使用不同的内存分配策略。在嵌入式程序设计中内存分配应该是根据所设计系统的特点来决定选择使用动态内存分配还是静态内存分配算法,一些可靠性要求非常高的系统应选择使用静态的,而普通的业原创 2020-12-28 16:25:16 · 1158 阅读 · 0 评论 -
FreeRTOS学习笔记(8)——任务通知
一、头文件#include "FreeRTOS.h"#include "task.h"二、任务通知2.1 基本概念FreeRTOS 从 V8.2.0 版本开始提供任务通知这个功能,每个任务都有 一个 32 位 的通知值,在大多数情况下,任务通知可以 替代二值信号量、计数信号量、事件组,也可以替代长度为 1 的队列(可以保存一个 32 位整数或指针值)。相对于以前使用 FreeRTOS 内核通信的资源,必须创建队列、二进制信号量、计数信号量或事件组的情况,使用任务通知显然更灵活。按照 Fr原创 2020-12-25 17:15:40 · 2957 阅读 · 2 评论 -
FreeRTOS学习笔记(7)——软件定时器
一、头文件#include "FreeRTOS.h"#include "timers.h"二、软件定时器2.1 基本概念软件定时器在被创建之后,当经过设定的时钟计数值后会触发用户定义的回调函数。 定时精度与系统时钟的周期有关。一般系统利用 SysTick 作为软件定时器的基础时钟,软件定时器的回调函数类似硬件的中断服务函数,所以,回调函数也要快进快出,而且回调函数中不能有任何阻塞任务运行的情况(软件定时器回调函数的上下文环境是任务),比如 vTaskDelay() 以及其它能阻塞任务运行的函数,原创 2020-11-25 15:02:27 · 4137 阅读 · 0 评论 -
FreeRTOS学习笔记(6)——事件
一、头文件#include "FreeRTOS.h"#include "event_groups.h"二、事件2.1 基本概念事件是一种实现任务间通信的机制,主要用于实现多任务间的同步,但事件通信只能是事件类型的通信,无数据传输。 与信号量不同的是,它可以实现一对多,多对多的同步。即一个任务可以等待多个事件的发生:可以是任意一个事件发生时唤醒任务进行事件处理;也可以是几个事件都发生后才唤醒任务进行事件处理。同样,也可以是多个任务同步多个事件。每一个事件组只需要很少的 RAM 空间来保存事原创 2020-11-24 19:34:16 · 3782 阅读 · 4 评论 -
FreeRTOS学习笔记(5)——互斥量
一、头文件#include "FreeRTOS.h"#include "semphr.h"二、互斥量2.1 基本概念互斥量又称互斥信号量(本质是信号量),是一种特殊的二值信号量,它和信号量不同的是,它支持互斥量所有权、递归访问以及防止优先级翻转的特性,用于实现对临界资源的独占式处理。 任意时刻互斥量的状态只有两种,开锁或闭锁。当互斥量被任务持有时,该互斥量处于闭锁状态,这个任务获得互斥量的所有权。当该任务释放这个互斥量时,该互斥量处于开锁状态,任务失去该互斥量的所有权。当一个任务持有互斥量时,原创 2020-11-23 17:43:23 · 4908 阅读 · 2 评论 -
FreeRTOS学习笔记(4)——信号量
一、头文件#include "FreeRTOS.h"#include "semphr.h"二、二值信号量2.1 运作机制创建信号量时,系统会为创建的信号量对象分配内存,并把可用信号量初始化为用户自定义的个数, 二值信号量的最大可用信号量个数为 1。二值信号量获取,任何任务都可以从创建的二值信号量资源中获取一个二值信号量,获取成功则返回正确,否则任务会根据用户指定的阻塞超时时间来等待其它任务/中断释放信号量。在等待这段时间,系统将任务变成阻塞态,任务将被挂到该信号量的阻塞等待列表中。假如某个原创 2020-11-17 16:30:59 · 2760 阅读 · 0 评论 -
FreeRTOS学习笔记(3)——消息队列
一、头文件#include "FreeRTOS.h"#include "queue.h"二、创建队列2.1 相关API说明2.1.1 xQueueCreate使用动态内存的方式创建一个新的队列。函数QueueHandle_t xQueueCreate( UBaseType_t uxQueueLength, UBaseType_t uxItemSize )参数uxQueueLength: 队列能够存储的最大单元数目,即队列深度uxItemSize: 队列中数据单元的长度,原创 2020-11-04 13:32:57 · 4226 阅读 · 3 评论 -
FreeRTOS学习笔记(2)——任务管理
一、头文件#include "FreeRTOS.h"#include "task.h"二、任务创建与启动2.1 相关API说明2.1.1 TaskHandle_t任务句柄。例如,对xTaskCreate的调用返回。可用作参数到vTaskDelete以删除任务。/** * task. h * * Type by which tasks are referenced. For example, a call to xTaskCreate * returns (via a pointer原创 2020-10-30 11:09:57 · 2207 阅读 · 1 评论 -
FreeRTOS学习笔记(1)——移植源码到STM32F103
一、简介FreeRTOS 是一个可裁剪、可剥夺型的多任务内核,而且没有任务数限制。FreeRTOS 提供了实时操作系统所需的所有功能,包括资源管理、同步、任务通信等。FreeRTOS 是用 C 和汇编来写的,其中绝大部分都是用 C 语言编写的,只有极少数的与处理器密切相关的部分代码才是用汇编写的,FreeRTOS 结构简洁,可读性很强!最主要的是非常适合初次接触嵌入式实时操作系统学生、嵌入式系统开发人员和爱好者学习。最新版本 V9.0.0(2016年),尽管现在 FreeRTOS 的版本已经更新到原创 2020-10-29 09:46:45 · 3632 阅读 · 2 评论