freeRTOS
文章平均质量分 72
now
讀书会上瘾
展开
-
stm32——freeRTOS中断管理
在我们的系统,中断同样是具有优先级的,并且我们也可以设置它的优先级,但是他的优先级并不是从0-15,默认是从5-15,0-4这5个中断优先级不是freeRTOS控制的(5是取决于configMAX_SYSCALL_INTERRUPT_PRIORITY(默认是5))创建一个队列及一个任务,按下按键KEY1触发中断,在中断服务函数里向队列发送数据,任务则阻塞接收队列数据。:当按下key1时触发中断,往队列中写入信息,任务接收到队列,接收到打印处理。任何中断的优先级都大于任务。在创建的任务中,读取队列中的内容。原创 2023-05-13 19:50:47 · 604 阅读 · 0 评论 -
stm32——freeRTOS软件定时器
简单可以理解为闹钟,到达指定一段时间后,就会响铃。stm32芯片自带硬件定时器,精度较高,达到定时时间后会触发中断,也可以生成PWM、输入捕获、输出比较等,功能强大,但是由于硬件的限制,个数有限。软件定时器也可以实现定时功能,达到定时时间和可调用回调函数,可以在回调函数里处理信息。原创 2023-05-13 18:59:30 · 601 阅读 · 0 评论 -
stm32——freeRTOS延时函数
HAL_Delay一直不停的调用获取系统时间的函数,知道指定的时间流逝然后退出,故其。,任务阻塞后,RTOS系统调用其他处于就绪状态的优先级最高的任务来执行。绝对延时:vTaskDelayUntil。相对延时:vTaskDelay。vTaskDelay作用是。一般来说,用vTaskDelay比较多。HAL_Delay是一个逻辑的代码。占用了全部cpu时间。原创 2023-05-13 15:33:48 · 911 阅读 · 0 评论 -
stm32——freeRTOS任务通知
freeRTOS从版本v8.2.0开始提供任务通知这个功能,每个任务都有一个32位的通知值。按照freeRTOS官方说法,使用消息通知比通过二进制信号量方式解除阻塞快45%,并且更加省内存(无需创建队列)。在大多数情况下,任务通知可以替代二值信号量、计数信号量、事件标志组,可以替代长度为1的队列(可以保持一个32位整数或指针值),并且任务通知速度更快,使用RAM更少。原创 2023-05-13 11:50:52 · 365 阅读 · 0 评论 -
stm32——freeRTOS事件标志组
表明某个事件是否发生,联想:全局变量flag。通常按位白哦是,每一个位表示一个事件(高8位不算)是一组事件标志位的集合,可以简单的理解事件标志组,就是一个整数。事件标志组本质是一个16位或32位无符号的数据类型EventBis_t,由configUSE_16_BIT_TICKS决定。虽然使用了32位无符号的数据类型变量来存储事件标志,其中高8位用作存储事件标志组的控制信息,低24位用作存储事件标志,所以说一个事件组最多可以存储24个事件标志!二、事件标志组相关api函数函数描述。原创 2023-05-12 16:41:30 · 175 阅读 · 0 评论 -
stm32——freeRTOS互斥量
在多数情况下,互斥型信号量和二值型信号量非常相似,但是从功能上二值型信号量用于同步,而互斥型信号量用于资源保护。互斥型信号量和二值型信号量还有一个最大的区别,互斥型信号量可以有效解决优先级反转现象。当高优先级任务正等待信号量(此信号量被一个低优先级任务拥有着)的时候,一个介于两个任务优先之间的中等优先级任务开始执行——这就会导致一个高优先级任务在等待一个低优先级任务,而低优先级任务却无法执行类似死锁的情形发生。优先级继承:优先级继承就是为了解决优先级反转问题而提出的一种优化机制。原创 2023-05-12 00:15:59 · 189 阅读 · 0 评论 -
stm32——freeRTOS计数型信号量
计数型信号量相当于队列长度大于1的队列,因此计数型信号量能够容纳多个资源,这是在计数型信号量被创建的时候确定的。原创 2023-05-11 19:48:40 · 88 阅读 · 0 评论 -
stm32——freeRTOS二值信号量
信号量(semaphore),是在多任务环境下使用的一种机制,是可以用来保证两个或多个关键代码段不被并发调用。分拆信号量:信号可以起到通知信号的作用,量可以表示资源的数量,当我们的量只有0和1的时候,它就可以被称为二值信号量,只有两个状态,当我们的那个量没有限制的时候,它就可以被称作为计数型信号量。二值信号量就是一个长度为1,大小为0的队列,只有0和1两种状态,通常情况下,我们用它来进行互斥访问或任务同步。互斥访问:比如门钥匙,只有获取到钥匙才可以开门。原创 2023-05-11 19:07:56 · 232 阅读 · 0 评论 -
stm32——freeRTOS队列
队列又称消息队列,是一种常用于任务间通信的数据结构,队列可以在任务与任务间、中断和任务间传递消息。为什么不使用全局变量?如果使用全局变量,兔子(任务1)修改了变量a,等待树獭(任务3)处理,但树獭处理速度很慢,在处理数据的过程中,狐狸(任务2)有可能又修改了变量a,导致树獭有可能得到的不是正确的数据。在这种情况下,就可以使用队列。兔子和狐狸产生的数据放在流水线上,树獭可以慢慢一个个依次处理。关于队列的几个名词:队列项目:队列中的每一个数据;原创 2023-05-11 17:22:45 · 211 阅读 · 0 评论 -
stm32——freeRTOS任务调度、任务4种状态
调度器就是使用相关的调度算法来决定当前需要执行哪个任务。freeRTOS中开启任务调度的函数是vTaskStartScheduler(),但是在cubeMX中被封装为osKernelStart()。原创 2023-05-10 19:50:56 · 1264 阅读 · 0 评论 -
stm32——freeRTOS任务的创建与删除
可以看到新增一个freertos.c文件,入口函数在这个文件中,修改&使用也在这个函数中进行。动态创建任务的堆栈由系统分配,而静态创建任务的堆栈由用户自己传递。可以理解为进程/线程,创建一个任务,就会在内存开辟一个空间。:指向任务函数的指针,任务必须实现为永不返回(即连续循环);只需将待删除的任务句柄传入该函数,即可将该任务删除。:任务的名字,主要是用来调试,默认情况下最大长度是。任务创建成功,返回pdPASS。,则代表删除任务自身(当前正在运行的任务)。:用于返回已创建任务的句柄可以被引用。原创 2023-05-10 19:21:57 · 394 阅读 · 0 评论 -
stm32——移植freeRTOS到stm32上
→System Core/RCC/high speed clock(hse)选择crystal/ceramic resonator→。⑤打开串口connectivity/USART1/Mode打开asynchronous,波特率115200。设置编译只编译所需文件,生成.c.h文件→生成代码。裸机的时钟源默认是systick,但是开启freeRTOS后,1ms 定时,用于任务调度),所以需要需要为其他总线提供另外的时钟源。的内核版本更高,功能更多,在大多数情况下。3、freertos选项卡介绍。原创 2023-05-10 17:02:13 · 839 阅读 · 0 评论 -
stm32——freeRTOS介绍
freeRTOS是一个迷你的实时操作系统内核,作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。比如uc/OS,freeRTOS,RTX,RT-Thread等这些都是RTOS类操作系统。3、很多半导体厂商产品的SDK软件开发工具包,就使用freeRTOS作为操作系统,尤其是wifi、蓝牙这些带有协议栈的芯片或模块。每个任务都是独立运行的,互补影响,由于切换的频率很快,就感觉像是同时运行的一样。原创 2023-05-10 12:10:49 · 615 阅读 · 0 评论