FreeRTOS
文章平均质量分 91
闪耀大叔
嵌入式工程师,c,c++,qt,51,ARM,stm32,硬件,电路
展开
-
彻底掌握FreeRTOS中的务通知(Task Notifications)
ADC_low_level_read是读取ADC值函数,读取后调用xTaskNotifyFromISR函数发送任务通知,ulValue参数为ulConversionResult,即ADC转换的结果,eAction参数为eSetValueWithoutOverwrite,如果在调用xTaskNotify()之前接收任务有一个挂起的通知,则不采取任何操作,xTaskNotify()将返回pdFAIL。如果任务试图将任务通知发送给已经有通知挂起的任务,则发送任务不能在阻塞态下等待接收任务重置其通知状态。原创 2023-04-23 21:10:10 · 2238 阅读 · 0 评论 -
彻底弄清FreeRTOS中的事件组(Event Groups)
任务A只有在所有四个任务都达到同步点后才能接收另一个事件。一个任务等待多个事件很简单,比如A任务的操作需要B、C、D任务中的某个操作,那A任务调用xEventGroupWaitBits()去等待,当B、C、D中操作完成了,B、C、D分别调用一下xEventGroupSetBits(),都调用后A任务就会继续运行。3.然后任务C调用xEventGroupWaitBits()来等待所有三个事件位都设置好,但是到那时,所有三个事件位都已经被清除,任务A和任务B已经离开了各自的同步点,因此同步失败。原创 2023-04-18 18:08:34 · 1535 阅读 · 0 评论 -
FreeRTOS如何解决访问冲突/线程不安全(临界段、互斥锁、挂起调度、看门人任务)
互斥锁(或者叫互斥量,我用Linux比较多,习惯叫锁,FreeRTOS中叫量比较合适)是一种特殊类型的二进制信号量,用于控制对两个或多个任务之间共享的资源的访问。LP运行,获得互斥锁,HP尝试运行,但是因为没有互斥锁,进入阻塞态,同时因为HP优先级高,LP继承了HP的优先级,不再会被MP抢占。HP就可以在LP释放互斥锁的时候运行了。FreeRTOS提供了几个可用于实现互斥的特性,但是最好的互斥方法是(在可能的情况下,因为通常不实用)将应用程序设计成不共享资源的方式,并且每个资源只能从单个任务访问。原创 2023-04-18 00:05:00 · 4632 阅读 · 0 评论 -
STM32F4+FreeRTOS+LVGL实现嵌入式快速开发(缝合怪)
我的触摸屏是电阻屏,驱动从正点原子的触摸屏实验例程中来,该驱动中用到了SysTick定时器来延时微秒,我们的工程是含有FreeRTOS的,会造成冲突,我也懒得优化细改了,用了个比较粗糙简单的方法,直接在延时前把几个寄存器保存一下,延时后再恢复。在家中找到一个早之前的开发板,个人还挺喜欢的,只有最小系统,把pin引出来了,没有乱七八糟的外设,还找到一个240*320的LCD屏幕,ILI9341驱动。都有显示屏了,当然得显示一下,增加一下逼格,但是自己画肯定不好看,也也没有那个必要,这就需要借助开源图形库了。原创 2023-04-15 21:42:02 · 8598 阅读 · 8 评论 -
详解FreeRTOS中的信号量(semaphore)
在这种情况下,事件处理程序将在每次事件发生时“give”一个信号量——导致信号量的计数值在每次“give”时增加。可以将延迟处理任务的优先级设置最高,然后,在ISR中调用portYIELD_FROM_ISR(),ISR结束后会运行延迟处理的任务(因为它优先级最高)。当一个任务完成对资源的处理后,它将信号量的计数值向后递增“give”信号量。t1时Task1运行,Task2阻塞等待信号量,t2时发生中断,ISR执行,give一个信号量解除Task2的阻塞态,t3时Task2运行,结束后继续等待下一个信号量。原创 2023-04-11 20:21:56 · 3462 阅读 · 0 评论 -
FreeRTOS中断安全API和推迟中断处理
前面的文章都提到了部分FreeRTOS的API有中断安全的版本,下面详解一下,为什么会这样原创 2023-04-11 20:17:39 · 1055 阅读 · 0 评论 -
FreeRTOSConfig.h-FreeRTOS配置函数详解
在下载的FreeRTOS文件包中,每个演示例程都有一个FreeRTOSConfig.h文件。有些例程的配置文件是比较旧的版本,可能不会包含所有有效选项。如果没有在配置文件中指定某个选项,那么RTOS内核会使用默认值。典型的FreeRTOSConfig.h配置文件定义如下所示原创 2022-09-03 11:01:55 · 840 阅读 · 0 评论 -
FreeRTOS函数功能大全
单片机/嵌入式实时操作系统FreeRTOS函数功能大全原创 2022-09-04 21:41:35 · 2756 阅读 · 2 评论 -
FreeRTOS移植-教你修改portable(S3C2440、ARM9、gcc)
从底层看一下移植FreeRTOS过程,S3C2440的开发板,官方不支持ARM9架构(因为ARM9直接上Linux,用于FreeRTOS有点浪费),所以从看懂这篇文章,你将学会如何修改portable部分文件将FreeRTOS移植到官方不支持的芯片上。原创 2022-09-07 21:44:17 · 2361 阅读 · 0 评论 -
FreeRTOS任务之调度器中的三种调度算法
本文主要讲解FreeRTOS调度器中的三种调度算法:基于时间片的抢占式调度、不带时间片的抢占式调度和协同调度。原创 2023-04-02 21:36:47 · 2480 阅读 · 1 评论 -
彻底掌握FreeRTOS中的任务
FreeRTOS是个操作系统,FreeRTOS的任务(task)其实就是像我们电脑中的一个独立程序,表现在源码中,其实就是一个函数。本文从学会使用任务(task)到理解逐步深入。原创 2023-04-01 00:18:41 · 1882 阅读 · 1 评论 -
彻底理解FreeRTOS中的队列(Queue)
“队列”(Queue)提供了任务与任务之间通信的机制。在这样的场景:一个或多个其他的任务产生数据,主任务要依次处理数据,队列就显得非常有用了。原创 2023-04-04 23:55:24 · 4234 阅读 · 1 评论 -
STM32F4移植FreeRTOS
STM32F4移植FreeRTOS原创 2023-03-29 20:29:56 · 1408 阅读 · 0 评论 -
详解FreeRTOS中的软件定时器
软件定时器用于让某个任务定时执行,或者周期性执行。原创 2023-04-06 23:40:46 · 3009 阅读 · 2 评论