- 博客(21)
- 收藏
- 关注
原创 Vim快捷键
上 下 左 右跳至文首调至文尾上翻半页(up)下翻半页(down)上翻一页(forward)下翻一页(backward)跳到下一个字首/字尾,按标点或单词分割跳到下一个字首/字尾,长跳,如end-of-line被认为是一个字e的反向版本,跳转到上一个单词的结尾跳到上一个字的字首跳到上一个字的字首,长跳跳至行首,不管有无缩进,就是跳到第0个字符跳转到本⾏的开始/结尾跳至当前光标所在的变量的声明处把当前位置标记为mark,mark是 a-z 的字符跳转到名为 mark 的标记位置**``**上次跳转前的位置。
2024-10-01 17:25:03
790
原创 FreeRTOS内存管理(16)
动态方法创建自动地从 FreeRTOS 管理的内存堆中申请创建对象所需的内存,并且在对象删除后,可将这块内存释放回FreeRTOS管理的内存堆静态方法创建需用户提供各种内存空间,并且使用静态方式占用的内存空间一般固定下来了,即使任务、队列等被删除后,这些被占用的内存空间一般没有其他用途动态方式管理内存相比与静态方式,更加灵活。除了 FreeRTOS 提供的动态内存管理方法,标准的 C 库也提供了函数 malloc()和函数 free()来实现动态地申请和释放内存。
2024-09-30 15:21:33
695
原创 Tickless低功耗模式(15)
很多应用场合对于功耗的要求很严格,比如可穿戴低功耗产品、物联网低功耗产品等一般MCU都有相应的低功耗模式,裸机开发时可以使用MCU的低功耗模式。FreeRTOS也提供了一个叫Tickless的低功耗模式,方便带FreeRTOS操作系统的应用开发。
2024-09-30 15:21:19
304
原创 FreeRTOS软件定时器(14)
软件定时器的回调函数**是一个返回值为 void 类型,并且只有软件定时器句柄一个参数的 C 语言函数**,其函数的具体原型如下所述
2024-09-30 15:21:10
892
原创 FreeRTOS任务通知(13)
任务通知:用来通知任务的,任务控制块中的结构体成员变量 ulNotifiedValue 就是这个通知值。使用队列、信号量、事件标志组时都需另外创建一个结构体,通过中间的结构体进行间接通信!使用任务通知时,任务结构体TCB中就包含了内部对象,可以直接接收别人发过来的"通知"强大通用但较复杂的 xTaskNotify() 和 xTaskNotifyWait() API 函数。
2024-09-30 15:20:59
1046
原创 FreeRTOS事件标志组(12)
事件标志组适用于多个事件触发一个或多个任务运行,可以实现事件的广播,还可以实现多个任务的同步运行,如下所述事件标志组允许任务等待一个或多个事件的组合事件标志组会解除所有等待同一事件的任务的阻塞状态事件标志组中每个事件标志的状态由 EventBits_t 类型变量中的单个位表示。如果 EventBits_t 变量中的某个位设置为 1 ,则该位表示的事件已发生,否则如果 EventBits_t 变量中的某个位设置为 0 ,则该位表示的事件尚未发生。
2024-09-29 16:00:06
810
原创 FreeRTOS队列集(11)
一个队列只允许任务间传递的消息为同一种数据类型,如果需要在任务间传递不同数据类型的消息时,那么就可以使用队列集!作用:用于对多个队列或信号量进行“监听”,其中不管哪一个消息到来,都可让任务退出阻塞状态。
2024-09-29 15:58:14
216
原创 FreeRTOS信号量(10)
信号量的简介信号量是进程间用于通信的一种手段,其是基于队列实现的,信号量更适用于进程间同步,信号量包括二值信号量(Binary Semaphores)和计数信号量(Counting Semaphores)任务的同步和互斥《RTOS 中的同步与互斥》 在实时操作系统(RTOS)中,同步是不同任务之间或者任务与外部事件之间的协同工作方式,确保多个并发执行的任务按照预期的顺序或时机执行。同步涉及到线程或任务间的通信和协调机制,其目的在于避免数据竞争、解决竞态条件,并确保系统的正确行为。 而互斥则是指某一资源
2024-09-29 15:57:25
1998
原创 FreeRTOS消息队列(09)
队列是任务到任务、任务到中断、中断到任务数据交流的一种机制(消息传递)FreeRTOS基于队列, 实现了多种功能,其中包括队列集、互斥信号量、计数型信号量、二值信号量、 递归互斥信号量,因此很有必要深入了解 FreeRTOS 的队列。读写队列做好了保护,防止多任务同时访问冲突;我们只需要直接调用API函数即可,简单易用!在队列中可以存储数量有限、大小固定的数据。队列中的每一个数据叫做“队列项目”,队列能够存储“队列项目”的最大数量称为队列的长度队列长度为:5个队列项目大小为:10字节。
2024-09-29 15:53:09
885
原创 FreeRTOS时间管理(08)
函数描述相对延时绝对延时相对延时: 指每次延时都是从执行函数vTaskDelay()开始,直到延时指定的时间结束绝对延时: 指将整个任务的运行周期看成一个整体,适用于需要按照一定频率运行的任务(1)为任务主体,也就是任务真正要做的工作(2)是任务函数中调用vTaskDelayUntil()对任务进行延时(3)为其他任务在运行。
2024-09-29 15:50:23
244
原创 任务状态查询API函数介绍(07)
① portCONFIGURE_TIMER_FOR_RUNTIME_STATE() : 用于初始化用于配置任务运行时间统计的时基定时器;② portGET_RUN_TIME_COUNTER_VALUE(): 用于获取该功能时基硬件定时器计数的计数值。State : 任务的壮态信息, B 是阻塞态, R 是就绪态, S 是挂起态, D 是删除态。Num : 任务编号, 这个编号是唯一的, 当多个任务使用同一个任务名的时候可以通过此编号来做区分。Stack : 任务堆栈的。
2024-09-29 15:48:57
297
原创 FreeRTOS任务调度(06)
想象下应该如何启动第一个任务? 假设我们要启动的第一个任务是任务A, 那么就需要将任务A的寄存器值恢复到CPU寄存器任务A的寄存器值, 在一开始创建任务时就保存在任务堆栈里边!
2024-09-29 15:47:24
967
原创 FreeRTOS列表和列表项(05)
列表是 FreeRTOS 中的一个数据结构, 概念上和链表有点类似, 列表被用来跟踪 FreeRTOS 中的任务。列表项就是存放在列表中的项目列表相当于链表, 列表项相当于节点, FreeRTOS 中的列表是一个双向环形链表列表的特点: 列表项间的地址非连续的, 是人为的连接到一起的。列表项的数目是由后期添加的个数决定的, 随时可以改变数组的特点: 数组成员地址是连续的, 数组在最初确定了成员数量后期无法改变。
2024-09-29 15:43:32
528
原创 FreeRTOS临界段代码保护(04)
什么是临界段?临界段代码也叫做临界区, 是指那些必须完整运行, 不能被打断的代码段外设: 需严格按照时序初始化的外设: IIC、SPI等等系统: 系统自身需求用户: 用户需求问题: 什么可以打断当前程序的运行?中断或者任务调度临界区是直接屏蔽了中断, 系统任务调度靠中断, ISR也靠中断FreeRTOS 在进入临界段代码的时候需要关闭中断, 当处理完临界段代码以后再打开中断函数描述(任务级)进入临界段(任务级)退出临界段(中断级)进入临界段(中断级)退出临界段。
2024-09-29 15:41:32
334
原创 FreeRTOS中断管理(03)
让CPU打断正常运行的程序, 转而去处理紧急的事件 (程序 ) , 就叫中断中断执行机制, 可简单概括为三步:1, 中断请求: 外设产生中断请求 (GPIO外部中断、定时器中断等 )2, 响应中断: CPU停止执行当前程序, 转而去执行中断处理程序 (ISR )3, 退出中断: 执行完毕, 返回被打断的程序处, 继续往下执行。
2024-09-29 15:38:25
754
原创 FreeRTOS任务创建和删除(02)
一个最简单的任务函数FreeRTOS中任务是一个永远不会退出的 C 函数,因此通常是作为无限循环实现,其不允许以任何方式从实现函数中返回,如果一个任务不再需要,可以显示的将其删除,其典型的任务函数结构如下所示/** * @brief 任务函数 * @retval None */void ATaskFunction(void *pvParameters) { /*初始化或定义任务需要使用的变量*/ int iVariable = 0; for(;;) { /*完成任务的
2024-09-29 15:34:31
1202
原创 FreeRTOS基础知识(01)
在嵌入式领域中,嵌入式实时操作系统正得到越来越广泛的应用。采用嵌入式实时操作系统(RTOS)可以更合理、更有效地利用CPU的资源,简化应用软件的设计,缩短系统开发时间,更好地保证系统的实时性和可靠性。
2024-09-29 15:32:14
2244
原创 基于esp32+TFTLCD的网络天气时钟(7篇全部开源!总有你喜欢的)
基于esp32+TFTLCD的网络天气时钟源码,7篇全部开源,所有代码均可用,亲自试过!!!附实物图
2024-09-28 16:04:47
482
LCD12864 显示变量大小 显示数字
2023-10-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人