三.操作系统freeRtos
文章平均质量分 80
freeRTOS学习
m0_61659911
这个作者很懒,什么都没留下…
展开
-
12.物联网操作系统之多任务核心
列表是双向链表构成,原因是双向链表的插入与删除效率高,只需要操作一次就能完成,而且对数据的管理更加灵活与便捷,有利于编写逻辑清晰的程序。列表项都是由链表生成,想要了解列表项,首先应该把上述的链表都要搞懂。(3)vListInsert()指定序号插入列表项到列表中。(4)vListInsertEnd()插入列表项到列表尾部。(5)uxListRemove()从列表中移除列表项。列表及列表项函数应用。这是列表项的组件列表。2.列表及列表项的定义。2.列表及列表项初始化。1.创建列表及列表项。原创 2023-08-06 13:53:47 · 102 阅读 · 0 评论 -
11.物联网操作系统内存管理
补充:生成反汇编指令 fromelf --text -c --output LedTask\LedTask.text LedTask\LedTask.axf。会生成一个map文件,打开之后,可以看到程序使用了什么头文件,代码量在中断还是串口输出,还是FREERTOS。生成bin文件 fromelf --bin --output LedTask\LedTask.bin LedTask\LedTask.axf。.c(C语言)通过armcc生成.o,.s(汇编)通过armasm生成.o。原创 2023-08-04 16:29:04 · 1092 阅读 · 0 评论 -
10.物联网操作系统之低功耗管理
所以从停止模式唤醒,并重新开启时钟后,还可以从上次停止处继续执行代码。在停止模式中可以选择电压调节器为开模式或低功耗模式,可选择内部FLASH工作在正常模式或掉电模式。待机模式,它除了关闭所有的时钟,还把1.2V区域的电源也完全关闭了,也就是说,从待机模式唤醒后,由于没有之前代码的运行记录,只能对芯片复位,重新检测boot条件,从头开始执行程序。在停止模式中,进一步关闭了其它所有的时钟,于是所有的外设都停止了工作,但由于其1.2V区域的部分电源没有关闭,还保留了内核的寄存器、内存的信息。原创 2023-08-03 22:36:48 · 1275 阅读 · 0 评论 -
9.物联网操作系统之软件定时器,实现一个闹钟
如上图所示,Times的左边为设置定时器时间,设置方式可以为任务设置或者中断设置;2.设置闹钟参数 参数头:小时:分钟:秒,是否重复,操作LED动作 alarmtime:16:32:40,0,0。1.设置实时时钟 参数头:年-月-日,小时:分钟:秒 realtime:2019-2-19,16:31:00。如上图所示,需要三个部分,用户在串口端设置时钟参数,RTC作为定时器的核心,并驱动GPIO。(4)pvTimerGetTimerID()获取软件定时器标识符值。3.软件定时功能:软件定时器。原创 2023-08-03 21:35:01 · 1506 阅读 · 0 评论 -
8.物联网操作系统之事件标志组
根据FREERTOS的参考手册(上面也有API),创建的时候需要头文件#include "event_groups.h",自己创建一个事件标志句柄EventGroupHandle_t KeyEventGroup;但是某些任务可能会需要与多个事件或任务进行同步,此时就可以使用事件标志组来解决。事件标志组能够实现某个任务与多个事件或任务间的同步。任务1需要事件3与4同时运行,任务0需要事件3或者4运行,所以当事件3运行后,任务0激活,任务1不激活。1、使用事件标志组检测多个按键输入(K3、K4、K5、K6)原创 2023-08-03 16:44:19 · 1367 阅读 · 0 评论 -
7.物联网操作系统互斥信号量
低优先级任务获取信号量后,被中优先级打断,中优先级任务执行时间较长,因为低优先级任务还未释放信号量,高优先级任务就无法获取信号量继续。(3)H任务突然开始运行,抢占L任务,但是由于信号量由L占有,所以进入堵塞状态,CPU继续运行L任务。(4)M任务突然开始运行,抢占M任务,M任务不需要信号量,所以需要等运行完毕CPU才会分配给L。(1)有三个任务,一个任务L优先级最低,一个任务M优先级为中间,一个任务H优先级为最高。(1)获取二值信号量(2)释放二值信号量(3)系统延迟500ms。原创 2023-08-02 20:50:42 · 833 阅读 · 0 评论 -
6.物联网操作系统信号量,二值信号量,计数信号量
任务1在运行时,使用了一个临界资源,他发送一个二值信号量同步信号,表示占用资源,任务2来运行时,发现有任务占用资源(信号量同步信号),所以堵塞任务,等待下资源的释放。(1)把FREERTOS.c中的二值信号量声明外接到GPIO.c中(GPIO.c中有按键按下的GPIO中断处理)(2)GPIO.c的中断回调函数中,Give为释放信号量,Take为使用信号量,Key3为释放,Key为使用。(1)在FREERTOS.c中有设置的计数信号量,extern设置到GPIO.c中。原创 2023-08-02 16:18:33 · 1147 阅读 · 0 评论 -
5.物联网操作系统消息队列
消息队列(queue),可以在任务与任务间、中断和任务间传递消息 实现任务接收来自其他任务或中断的不固定长度的消息。3.FreeRTOS消息队列工作原理。(2)Usart1中断配置(中断使能)2.FreeRTOS消息队列介绍。FreeRTOS消息队列工作原理。4.消息队列接收和发送功能开发。FreeRTOS消息队列介绍。消息队列的概念及应用。5.消息解析控制功能开发。4.消息队列在任务中发送。5.消息队列在中断中发送。6.消息队列在任务中接收。7.消息队列在中断中接收。(2)中断服务入队操作。原创 2023-07-04 20:57:18 · 407 阅读 · 0 评论 -
4.物联网操作系统多任务使用
注意:《1》tim.c中为最终数据,其余为extern(main.c中,FREERTOS.c中)在程序访问资源时,不希望被其他任务或者中断打断,这段要执行的代码,称为临界代码段。(2)在main.c的时间中断函数中加入Tim6中断处理。1.cubemx创建工程(在计算堆栈的工程基础上)(2)调用公共函数的代码(不可重入函数)(1)在FREERTOS.c中生成了。(1)读取或者修改变量(全局变量)(4)对时序有精准要求的操作。(3)使用硬件资源(外设)(5)用户不想被打断的代码。(3)在以前的按钮下加入。原创 2023-07-04 19:35:12 · 50 阅读 · 0 评论 -
3.物联网操作系统,多任务调度原理
Cortex-M4 内核支持 256 个中断,其中包含了 16 个内核中断和 240 个外部中断,并且具有256 级的可编程中断优先级设置。CONTROL:控制寄存器 [PRIV]: 为0,处理器处于线程模式的特权级,为1为非特权级 [SPSEL] : 为0时,线程模式使用MSP,为1时使用PSP。Cortex-M4处理器中,每一个外部中断都可以被使能或者禁止,并且可以被设置为挂起状态或者清除状态。(2)中断PSR(IPSR) : 包含当前ISR的异常编号。原创 2023-06-23 15:17:29 · 388 阅读 · 0 评论 -
2.物联网操作系统,多任务开发
死循环:每个任务都是一个死循环,即:每个任务都有main函数入口。任务实体:具体的任务功能,任务调度,即:延迟,等待。上一节《物联网操作系统led灯亮》配置基础上继续。(2)由于使用key3中断,对应PI9配置为中断。(3)FREERTOS创建一个任务。在上一个实验的基础上继续配置《二。(2)进入FREERTOS配置静态。任务退出:任务实现函数没有返回值。(3)FREERTOS添加任务。(2)USART1串口1设置。4.0.5秒打印一次。(2)任务创建API。2.挂起和恢复API。原创 2023-06-01 16:14:43 · 93 阅读 · 0 评论 -
1.物联网操作系统,缩短keil5编译时间,寻找Cubemx修改寄存器名称后定义的位置,Cubemx找不到指定的按钮,按钮无法使能原因
1.cubemx创建工程《使用新版Cubemx,5版本》(1)led灯配置,并改名,led电平设置为高。实验一:使用操作系统的基础上,点亮led灯。(2)操作系统配置(前置时钟,接口设置)(4)FREERTOS操作系统设置。烧录之后,led6重复亮灭。(3)RCC时钟配置。原创 2023-06-01 13:39:46 · 113 阅读 · 0 评论