FreeRTOS操作系统
文章平均质量分 85
STM32 FreeRTOS操作系统
我与nano
嵌入式开发,物联网,PCB,linux应用,卡尔曼,pid,Jetson nano,树莓派,K210,深度学习,机器视觉,Opencv,slam,Ros,自控
展开
-
重学FreeRTOS操作系统之中断篇(二)
前面学习了任务的相关知识,现在学习一下中断的相关知识。我们先来了解中断中断由硬件产生,当中断产生后CPU就会中断当前的进程而去处理中断服务使用中断可以大大提高CPU的工作效率,如果不用中断将会采用轮询的方式,轮询的方式效率低下。原创 2022-10-23 14:44:59 · 1627 阅读 · 1 评论 -
重学FreeRTOS操作系统之任务篇(一)
学习STM32的时候都是用来跑裸机,后面学习了操作系统摆脱了流水线的工作方式,采用实时执行的方式,现在已经大三了,本人打算毕业找工作,于是打算重学一遍操作系统,以备不时之需。早上睡醒重新看了一下任务的知识,简单写了一下,可以看出任务分为创建、删除、挂起、恢复四个过程。关于FreeRTOS中的任务大概也就这么多,第二遍学习的时候感觉还是不一样的。原创 2022-10-23 12:12:58 · 3548 阅读 · 1 评论 -
FreeRTOS操作系统——动态任务创建与删除(一)
FreeRTOS操作系统学习文章目录FreeRTOS操作系统学习前言一、了解FreeRTOS二、任务创建1.动态任务创建2.静态任务创建3.动态任务创建实战总结前言FreeRTOS操作系统的学习正式开始一、了解FreeRTOSFreeRTOS共有32个优先级(0~31)使用时0和31不使用优先级规则:数字越大优先级越高任务实现即创建这个任务是干什么的vTaskDelay();延迟函数也称任务调度函数如果需要退出调用vTaskDelet(NULL);函数TypedeftskT原创 2022-01-16 18:58:00 · 782 阅读 · 0 评论 -
FreeRTOS操作系统——任务挂起与恢复(二)
FreeRTOS操作系统学习文章目录FreeRTOS操作系统学习前言一、任务挂起与恢复二、任务挂起与恢复1.代码实战总结前言功能:有时候我们需要暂停某个任务的运行,过一段时间以后在重新运行。这个时候要是使用任务删除和重建的方法的话那么任务中变量保存的值肯定丢失了!FreeRTOS 给我们提供了解决这种问题的方法,那就是任务挂起和恢复,当某个任务要停止运行一段时间的话就将这个任务挂起,当要重新运行这个任务的话就恢复这个任务的运行。一、任务挂起与恢复API函数:vTaskSuspend()原创 2022-01-16 20:38:55 · 2306 阅读 · 0 评论 -
FreeRTOS操作系统——中断管理与测试(三)
FreeRTOS操作系统学习文章目录FreeRTOS操作系统学习前言一、中断管理二、FreeRTOS中断测试实验1.代码实战总结前言中断是微控制器一个很常见的特性,中断由硬件产生,当中断产生以后 CPU 就会中断当前的流程转而去处理中断服务,Cortex-M 内核的 MCU 提供了一个用于中断管理的嵌套向量中断控制器(NVIC)。 Cotex-M3 的 NVIC 最多支持 240 个 IRQ(中断请求)、1 个不可屏蔽中断(NMI)、1 个 Systick(滴答定时器)定时器中断和多个系统异原创 2022-01-16 22:43:28 · 1917 阅读 · 0 评论 -
FreeRTOS操作系统——列表与列表项(四)
FreeRTOS操作系统学习文章目录FreeRTOS操作系统学习前言一、列表与列表项定义列表和列表项初始化列表和列表项给列表项赋值(ListItem1.xItemValue)打印列表和列表项地址给列表插入列表项列表项的删除1.第一种方法2.采用索引的方法删除末尾插入列表项总结前言列表是 FreeRTOS 中的一个数据结构,概念上和链表有点类似,列表被用来跟踪 FreeRTOS中的任务。与列表相关的全部东西都在文件 list.c 和 list.h 中。列表项就是存放在列表中的项目,FreeRTOS原创 2022-01-17 19:02:09 · 569 阅读 · 1 评论 -
FreeRTOS操作系统——任务查询和信息统计API函数(五)
FreeRTOS操作系统学习文章目录FreeRTOS操作系统学习前言一、其他API函数合集二、函数详解1.函数 uxTaskPriorityGet()2.函数uxTaskGetSystemState()三、任务运行时间统计1.函数 vTaskGetRunTimeStats()总结前言前面学习了FreeRTOS的任务创建、任务删除、任务挂起、任务恢复、中断管理、列表与列表项等基础的API函数,这节我们来学习辅助有关的API函数,可以更多的帮助我们调试代码。一、其他API函数合集uxTaskPri原创 2022-01-18 12:14:14 · 1569 阅读 · 0 评论 -
FreeRTOS操作系统——内核控制函数(六)
FreeRTOS操作系统学习文章目录FreeRTOS操作系统学习前言一、函数合集二、使用方法1.函数 vTaskSuspendAll()总结前言FreeRTOS 中有一些函数只供系统内核使用,用户应用程序一般不允许使用,这些 API 函 数就是系统内核控制函数。一、函数合集taskYIELD() 任务切换。taskENTER_CRITICAL() 进入临界区,用于任务中。taskEXIT_CRITICAL() 退出临界区,用于任务中。taskENTER_CRITICAL_FROM_ISR原创 2022-01-18 16:56:06 · 770 阅读 · 0 评论 -
FreeRTOS操作系统——临界段代码保护(七)
FreeRTOS操作系统学习文章目录FreeRTOS操作系统学习前言一、临界段代码保护函数二、如何使用1.任务级临界段代码保护2.中断级临界段代码保护总结前言 临界段代码也叫临界区,是指那些必须完整运行,不能被打断的代码,比如有的外设的初始化需要按照严格的时序,初始化过程不能被打断。FreeRTOS在进入临界段代码的时候需要关闭中断,当处理完临界段代码以后再打开中断。 在FreeRTOS系统本身就有很多的临界段代码,这些代码都加了临界段代码保护,我们自己写的时候只需要在一些需要严格保持时序的模块原创 2022-01-19 10:36:54 · 1471 阅读 · 0 评论 -
FreeRTOS操作系统——时间管理系统延时(八)
FreeRTOS操作系统学习文章目录FreeRTOS操作系统学习前言一、系统延时函数二、延时函数详解1.相对延时函数vTaskDelay()2绝对延时函数vTaskDelayUntil()总结前言FreeRTOS操作系统时间管理主要分为三部分:一、FreeRTOS系统延时函数二、滴答定时器三、FreeRTOS系统时钟节拍这一节主要学习系统延时一、系统延时函数vTaskDelay(); //相对延时vTaskDelayUntil(); //绝对延时相对延时与绝对延时的区原创 2022-01-19 11:52:12 · 3533 阅读 · 0 评论 -
FreeRTOS操作系统——时间管理系统时钟(九)
FreeRTOS操作系统学习文章目录FreeRTOS操作系统学习前言一、滴答定时器二、详解1.具体代码总结前言上一节学习了相对延时函数和绝对延时函数,在FreeRTOS中系统时钟更加重要,这一节我们来学习系统时钟。一、滴答定时器FreeRTOS中有一个系统时钟节拍SysTicks,这个系统时钟犹如心脏一样维持系统的运行,通过xTickCount时刻反应当前是什么时间段。滴答定时器会定期产生中断,每产生一次中断,xTickCount就会自动+1。是为系统提供服务的二、详解1.具体代码Bas原创 2022-01-19 15:14:54 · 2340 阅读 · 0 评论 -
FreeRTOS操作系统——队列及队列API函数(十)
FreeRTOS操作系统学习文章目录FreeRTOS操作系统学习前言一、队列功能介绍1.数据存储2.多任务访问3.出队阻塞4.入队阻塞二、队列工作过程1.API函数1.队列创建函数2.入队函数2.队列操作实验总结前言队列是为了任务与任务、任务与中断之间的通信而准备的,可以在任务与任务、任务与中断之间传递消息,队列中可以存储有限的、大小固定的数据项目。任务与任务、任务与中断之间要交流的数据保存在队列中,叫做队列项目。队列所能保存的最大数据项目数量叫做队列的长度,创建队列的时候会指定数据项目的大小和队原创 2022-01-19 20:22:45 · 3330 阅读 · 0 评论 -
FreeRTOS操作系统——信号量及二值信号量(十一)
FreeRTOS操作系统学习文章目录FreeRTOS操作系统学习前言一、信号量简介二、二值信号量简介1.二值信号量的使用1.创建二值信号量2.释放二值信号量3.获取信号量总结前言信号量的目的:1.共享资源访问2.与任务同步FreeRTOS信号量分为:1.二值信号量2.计数型信号量3.互斥信号量4.递归互斥信号量所有的信号量都是使用队列来实现的。一、信号量简介信号量常常用于控制对共享资源的访问和任务同步。举一个很常见的例子,某个停车场有100 个停车位,这 100 个停车位大家都原创 2022-01-20 12:10:53 · 1772 阅读 · 0 评论 -
FreeRTOS操作系统——计数型信号量(十二)
FreeRTOS操作系统文章目录FreeRTOS操作系统前言一、API函数二、计数型信号量实验总结前言计数型信号量叫做数值信号量, 二值信号量相当于长度为 1 的队列,那么计数型信号量就是长度大于 1 的队列。 同二值信号量一样,用户不需要关心队列中存储了什么数据,只需要关心队列是否为空即可。计数型信号量通常用于如下两个场合: 1、事件计数 2、资源管理1、事件计数在这个场合中,每次事件发生的时候就在事件处理函数中释放信号量(增加信号量的计数值),其他任务会获取信号量(信号量原创 2022-01-20 12:45:30 · 687 阅读 · 0 评论 -
FreeRTOS操作系统——优先级翻转(十三)
FreeRTOS操作系统学习文章目录FreeRTOS操作系统学习前言一、什么是优先级翻转二、优先级翻转实验1.引入库总结前言在使用二值信号量的时候会遇到很常见的一个问题——优先级翻转,优先级翻转在可剥夺内核中是非常常见的,在实时系统中不允许出现这种现象,这样会破坏任务的预 期顺序,可能会导致严重的后果一、什么是优先级翻转例如:三个不同优先级的任务——低任务、中任务、高任务创建二值信号量,然后释放一次信号量。低任务获取信号量,长时间不释放。高任务获取信号量,但是此时信号量被低任务占用着原创 2022-01-20 16:07:05 · 2358 阅读 · 0 评论 -
FreeRTOS操作系统——互斥信号量(十四)
FreeRTOS操作系统学习文章目录FreeRTOS操作系统学习前言一、互斥信号量简介二、API函数1.创建互斥信号量2. 释放互斥信号量3. 获取互斥信号量三、互斥信号量实验四、递归互斥信号量1.递归互斥信号量简介2.创建递归互斥信号量3、释放递归互斥信号量4.获取递归互斥信号量总结5.递归互斥信号量实例总结前言前面了解了优先级翻转在FreeRTOS中是绝对不允许优先级翻转的,而互斥信号量可以完美的解决这个问题。一、互斥信号量简介互斥信号量其实就是一个拥有优先级继承的二值信号量,在同步的应用原创 2022-01-20 19:06:20 · 897 阅读 · 0 评论 -
FreeRTOS操作系统——软件定时器(十五)
系列文章目录文章目录系列文章目录前言一、回调函数二、定时器的配置1.软件定时器分类2.定时器相关API函数1.创建软件定时器2.开启软件定时器3.停止软件定时器4.复位软件定时器三、软件定时器实验总结前言硬件定时器CPU内部自带的定时器模块,通过初始化、配置可以实现定时,定时时间到以后就会执行相应的定时器中断处理函数。硬件定时器一般都带有其它功能,比如PWM输出、输入捕获等等功能。但是缺点是硬件定时器数量少!!软件定时器软件定时器允许设置一段时间,当设置的时间到达之后就执行指定的功能函数,被原创 2022-01-21 21:50:04 · 4322 阅读 · 1 评论 -
FreeRTOS操作系统——事件标志组(十六)
FreeRTOS操作系统学习文章目录FreeRTOS操作系统学习前言一、事件标志组简介二、事件标志组API函数1.创建事件标志组2.设置事件位(清零或置一)1.清零2.置一3、获取事件标志组值4、等待指定的事件位三、事件标志组实验总结前言在前面我们已经学习了信号量,我们知道信号量可以用来做任务同步,但是这种任务同步有一个缺点,就是只能在两个任务之间进行同步,所以为了解决这个问题,FreeRTOS提供了事件标志组,使得多任务之间进行同步。作用:1.用来做任务与任务之间的同步即一个任务发生了就触发原创 2022-01-22 14:29:48 · 3463 阅读 · 0 评论 -
FreeRTOS操作系统——任务通知模拟信号量(十七)
FreeRTOS操作系统学习文章目录FreeRTOS操作系统学习前言一、任务通知简介二、相关API函数1.发送任务通知函数1、函数 xTaskNotify()2、函数 xTaskNotifyFromISR()3、函数 xTaskNotifyGive()4、函数 vTaskNotifyGiveFromISR()5、函数 xTaskNotifyAndQuery()6、函数 xTaskNotifyAndQueryFromISR()2.获取任务通知1、函数 ulTaskNotifyTake()2、函数 xTask原创 2022-01-30 18:01:56 · 2948 阅读 · 0 评论 -
FreeRTOS操作系统——任务通知模拟消息邮箱及事件标志组(十八)
FreeRTOS操作系统学习文章目录FreeRTOS操作系统学习一、消息邮箱API函数二、消息邮箱实验三、事件标志组实验总结一、消息邮箱API函数任务通知也可用来向任务发送数据,但是相对于用队列发送消息,任务通知向任务发送消息会受到很多限制!1、只能发送 32 位的数据值。2、消息被保存为任务的任务通知值,而且一次只能保存一个任务通知值,相当于队列长度为 1。因此说任务通知可以模拟一个轻量级的消息邮箱而不是轻量级的消息队列。任务通知值就是消息邮箱的值。发送数据可以使用函数 xTaskNotify原创 2022-02-02 13:22:14 · 1298 阅读 · 0 评论 -
FreeRTOS操作系统——低功耗Tickless模式(十九)
FreeRTOS操作系统学习文章目录FreeRTOS操作系统学习前言一、低功耗模式二、Tickless模式1、低功耗详解2、具体实现总结前言很多应用场合对于空耗的要求很严格,比如长期无人照看的数据采集仪器,可穿戴设备等。其实很多 MCU 都有相应的低功耗模式,以此来降低设备运行时的功耗,进行裸机开发的时候就可以使用这些低功耗模式。但是现在我们要使用操作系统,因此操作系统对于低功耗的支持也显得尤为重要,这样硬件与软件相结合,可以进一步降低系统的功耗。这样开发也会方便很多,毕竟系统已经原生支持低功耗了,我原创 2022-02-03 14:34:56 · 6802 阅读 · 0 评论 -
FreeRTOS操作系统——低功耗Tickless模式实验
FreeRTOS操作系统学习文章目录FreeRTOS操作系统学习前言一、低功耗模式实验二、具体实验1.低功耗相关函数2.实验现象总结前言一、低功耗模式实验实验目的:学习如何使用 FreeRTOS 的低功耗 Tickless 模式,观察 Tickless 模式对于降低系统功耗有无帮助。实验设计:对于功耗要求严格的场合一般不要求有太大的数据处理量,因为功耗与性能很难兼得。一般的低功耗场合都是简单的数据采集设备或者小型的终端控制设备。它们的功能都很简单,周期性的采集数据并且发送给上层,比如服务器,或原创 2022-02-03 14:55:04 · 2394 阅读 · 1 评论 -
FreeRTOS操作系统——空闲任务及钩子函数(二十)
FreeRTOS操作系统学习文章目录FreeRTOS操作系统学习前言一、空闲任务1、空闲任务创建2、空闲任务函数二、空闲任务钩子函数1、空闲任务钩子函数简介2、空闲任务钩子函数实验总结前言处理器总是需要代码来执行——所以至少要有一个任务处于运行态,那么这个任务就是空闲任务,空闲任务拥有最低优先级(优先级 0)一、空闲任务当 FreeRTOS 的调度器启动以后就会自动的创建一个空闲任务,这样就可以确保至少有一任务可以运行。但是这个空闲任务使用最低优先级,如果应用中有其他高优先级任务处于就绪态的话这个原创 2022-02-05 12:29:27 · 4588 阅读 · 0 评论 -
FreeRTOS操作系统——内存管理(二十一)
FreeRTOS操作系统学习文章目录FreeRTOS操作系统学习前言一、内存管理简介二、内存管理1、内存碎片简介2、内存分配方法1.heap_1.c2.heap_2.c3.heap_3.c4.heap_4.c5.heap_5.c三、内存管理实验总结前言内存管理是一个系统基本组成部分,FreeRTOS 中大量使用到了内存管理,比如创建任务、信号量、队列等会自动从堆中申请内存。用户应用层代码也可以 FreeRTOS 提供的内存管理函数来申请和释放内存一、内存管理简介FreeRTOS 创建任务、队列、信原创 2022-02-05 13:07:16 · 1839 阅读 · 1 评论