![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
FreeRTOS学习笔记
文章平均质量分 79
FreeRTOS学习笔记
UNCLE-TOU?
这个作者很懒,什么都没留下…
展开
-
FreeRTOS_任务管理_任务优先级与状态_学习笔记
常用的延时函数有两种,mdelay(time)和vTaskDelay(tick_period),前者用延时时间作为输入,后者用几个tick作为输入,也可以用vTaskDelay(pdMS_TO_TICKS(time))实现输入延时时间。调度器必须能找到一个可以运行的任务,当使用vTaskStartScheduler()函数来创建、启动调度器时,这个函数内部会创建空闲任务。在等待事件过程中,它不消耗 CPU 资源,这个任务就处于。在日常生活的例子中,母亲在电脑前跟同事沟通时,如果同事一直没回复,那么母亲的。原创 2024-05-16 15:59:23 · 625 阅读 · 0 评论 -
FreeRTOS_任务管理_任务创建与删除_学习笔记
然后在MX_FREERTOS_Init中使用函数创建三个任务即可。但由于LCD_PrintString耗时非常长,RTOS很有可能在期间跳出执行另一个任务,导致IIC传输中断。实现三个任务:1.静态创建任务,调用LED_Test。IRReceiver_Test、LED_Test、ColorLED_Test是另外写好的,我们暂时不关心。不同操作系统创建任务的函数不一样,为了统一处理,则创建一个统一接口层,即cmsis_os2。osThreadNew会自动根据不同的操作系统去调用响应的任务创建函数。原创 2024-05-16 14:04:41 · 691 阅读 · 0 评论 -
FreeRTOS_互斥量_学习笔记
数值只有0或1谁获得互斥量,就必须由谁释放同一个互斥量。但其实在freeRTOS中,任务A获取的互斥锁,任务B也能释放。因此谁上锁谁开锁只是约定,在程序实现上不是强制的。"是指:多个任务同时调用它、任务和中断同时调用它,函数的运行也是安全的。可重入的函数也被称为"线程安全”(thread safe)。每个任务都维持自己的栈、自己的CPU寄存器,如果一个函数,那么它就是的。原创 2024-05-23 20:03:15 · 1025 阅读 · 0 评论 -
FreeRTOS_信号量_学习笔记
消息队列用于传输多个数据,但是有时候我们只需要传递状态,这个状态值需要用一个数值表示。套用队列笔记中的流水线例子,可以理解为流水线上工件的数量。信号:起通知作用量:还可以用来表示资源的数量当"量"没有限制时,它就是"计数型信号量"(Counting Semaphores)当"量"只有0、1两个取值时,它就是"二进制信号量"(Binary Semaphores)支持的动作:"give"给出资源,计数值加1;"take"获得资源,计数值减1。信号量分为二进制信号量和计数型信号量。原创 2024-05-22 16:46:38 · 433 阅读 · 0 评论 -
FreeRTOS_软件定时器_学习笔记
软件定时器基于系统滴答终端(Tick Interrupt)有两种状态:运行(Running、Active)和冬眠(Dormant)有两种类型:一次性(One-shot)和自动加载(Auto-reload)示例:Timer1是一次性定时器,周期6tick,t1启动t7执行回调函数,然后冬眠Timer2是自动加载定时器,周期5tick,没经过一个周期执行一次回调函数。原创 2024-05-25 16:39:38 · 424 阅读 · 0 评论 -
FreeRTOS_事件组_学习笔记
事件组是一个整数,其中的高8位留给内核,只能用其他位来表示时间每一位代表一个事件,且每个时间的含义由程序员决定1为发生,0为未发生一个/多个任务或ISR都能读写这些位可以等待某一位,也可以等待多个位事件组有作用,会唤醒所有复合条件的任务;而队列和信号量只会唤醒一个任务。事件组唤醒任务后,可以让事件不动,也可以清除事件。原创 2024-05-23 21:21:24 · 434 阅读 · 0 评论 -
FreeRTOS_同步互斥与通信_概念_学习笔记
一句话理解同步与互斥:我厕所,我厕所。什么叫同步?就是:我正在用厕所,你等会。什么叫互斥?就是:我正在用厕所,你不能进来。同步与互斥经常放在一起讲,是因为它们之的关系很大, “互斥”操作可以使用“同步”来实现。我“等”你用完厕所,我再用厕所。这不就是用“同步”来实现“互斥”吗?同一时间只能有一个人使用的资源,被称为。比如任务A、 B都要使用串口来打印,串口就是临界资源。原创 2024-05-18 15:13:39 · 326 阅读 · 0 评论 -
FreeRTOS_同步互斥与通信_队列集_学习笔记
在本例程中,先通过RotaryEncoder_IRQ_Callback(void)写队列B,再通过任务RotaryEncoder_Task读队列B,经过处理后再写队列A。InputTask先读取队列集S,它的返回值是一个队列句柄,这样就可以知道哪个队列有有数据了;队列集的本质也是队列,只不过里面存放的是“队列句柄”。这样,写队列A的时候,会顺便把队列A的句柄写入队列集S。这样,写队列B的时候,会顺便把队列B的句柄写入队列集S。创建队列集S,它的长度是“n1+n2”把队列A、B加入队列集S。原创 2024-05-20 17:56:37 · 468 阅读 · 0 评论 -
FreeRTOS_任务管理_任务调度_学习笔记
【代码】FreeRTOS_任务管理_任务调度_学习笔记。原创 2024-05-17 10:32:27 · 328 阅读 · 0 评论 -
FreeRTOS_同步互斥与通信_环形buffer、队列_学习笔记
信号量、互斥量的本质是队列,队列的本质是加强版环形缓冲区。原创 2024-05-20 15:40:44 · 884 阅读 · 0 评论 -
FreeRTOS_任务通知_学习笔记
使用队列、信号量、事件组等等方法时,并不知道对方是谁。使用任务通知时,可以明确指定:通知哪个任务。使通知值+1,并使状态变为“pending”,表示有数据,待处理。每个任务有一个TCB结构体,里面包括通知状态和通知值。任务通知只能一个一个发任务,而且不能广播给多个任务。如果通知值为0则任务阻塞;通知值大于0则任务就绪。通知值可以是计数值,二进制位,任意数值。任务通知值,只能保持一个数据。数据智能给目标任务独享。等待,只能即刻返回错误。任务通知结构体中只有。暂时先记录简化版函数。原创 2024-05-25 15:04:16 · 280 阅读 · 0 评论 -
FreeRTOS_基本概念、内存管理_学习笔记
后续的程序开发,都会在这个模板上进行修改。原创 2024-05-14 13:31:40 · 681 阅读 · 2 评论