
FreeRTOS实时操作系统
文章平均质量分 97
FreeRTOS学习
时光の尘
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
FreeRTOS实战(十一)·SysTick讲解
Delay函数修改失败原创 2025-05-29 04:00:00 · 1457 阅读 · 0 评论 -
FreeRTOS实战(十)·STM32移植FreeRTOS模版
内含源码可直接移植,本文在以前移植模版的基础上完善FreeRTOS工程模板的优化过程,举例演示了基于任务优先级调度LED闪烁和按键控制任务挂起/恢复的功能实现。原创 2025-05-28 05:00:00 · 1323 阅读 · 0 评论 -
FreeRTOS实战(九)·移植STM32实现TIM基本定时器定时功能
内含源码可直接移植,对定时器进行一个详细的介绍,主要完成基本定时器定时功能原创 2025-05-28 04:00:00 · 2048 阅读 · 0 评论 -
FreeRTOS实战(八)·移植STM32实现双ADC采集DMA转运数据
基于STM32移植FreeRTOS实现双ADC采集进行DMA数据转运,内含源码可直接移植原创 2025-05-27 05:00:00 · 1188 阅读 · 0 评论 -
FreeRTOS实战(七)·移植STM32实现多通道ADC采集DMA转运数据
内含源码可直接移植,内容基于STM32F1系列移植FreeRTOS实现多通道ADC采集数据,并通过DMA转运数据。原创 2025-05-27 04:00:00 · 1257 阅读 · 0 评论 -
FreeRTOS实战(六)·移植STM32实现单通道ADC采集DMA转运数据
内含源码可直接移植,主要实现功能,单通道ADC采集数据,通过DMA进行数据转运,并通过挂起和恢复函数,将数据处理任务挂起和恢复。原创 2025-05-26 05:00:00 · 967 阅读 · 0 评论 -
FreeRTOS实战(五)·移植STM32实现单通道ADC采集消息队列转运数据
内含源码可直接移植,主要实现功能,实现单通道在中断中实现ADC采集任务,并通过消息队列中断发送函数xQueueSendFromISR()进行数据传输,并通过挂起和恢复函数,将数据处理任务挂起和恢复。原创 2025-05-26 04:00:00 · 1125 阅读 · 0 评论 -
FreeRTOS实战(四)·USART串口实现DMA数据转运(江协/江科大代码移植)
内含源码可直接移植,内容基于STM32F1系列移植FreeRTOS实现DMA转运串口接收数据,详细过程介绍,其中包含调用二值信号量释放函数xSemaphoreGiveFromISR(),接收函数xSemaphoreTake()原创 2025-05-17 20:21:27 · 942 阅读 · 0 评论 -
FreeRTOS实战(三)·外部中断实现消息队列的发送与接收
在 FreeRTOS 中创建了两个任务获取消息队列,并且定义了两个按键 KEY1 与 KEY2 的触发方式为中断触发,其触发的中断服务函数则跟裸机一样,在中断触发的时候通过消息队列将消息传递给任务,任务接收到消息就将信息通过串口调试助手显示出来。原创 2025-05-17 04:00:00 · 1483 阅读 · 0 评论 -
FreeRTOS实战(二)·按键实现任务的挂起和恢复(STM32移植模版)
主要完成功能:按键实现任务的挂起和恢复,内含STM32F1系列移植模版,可直接使用,含源码可自行移植原创 2025-05-16 05:00:00 · 1717 阅读 · 0 评论 -
FreeRTOS实战(一)·电亮一颗LED
裸机江协/江科大STM32移植FreeRTOS工程原创 2025-05-16 04:00:00 · 1217 阅读 · 0 评论 -
FreeRTOS菜鸟入门(十九)·CPU 使用率统计
CPU利用率概念介绍,并且举例更直观的观察,内含源码可直接移植原创 2025-05-15 05:00:00 · 846 阅读 · 0 评论 -
FreeRTOS菜鸟入门(十八)·中断管理
中断管理相关介绍,内含测试程序,可直接移植。原创 2025-05-15 04:00:00 · 7098 阅读 · 6 评论 -
FreeRTOS菜鸟入门(十七)·内存管理·heap_x.c的区别详解
内含源码可直接移植,详细介绍heap_x.c的优缺点,以及pvPortMalloc( ); 内存申请函数、vPortFree(); 内存释放函数、vPortInitialiseBlocks( void ); 初始化内存堆函数、xPortGetFreeHeapSize( ); 获取当前未分配的内存堆大小、xPortGetMinimumEverFreeHeapSize(); 获取未分配的内存堆历史最小值的调用详解原创 2025-05-14 04:00:00 · 712 阅读 · 0 评论 -
FreeRTOS菜鸟入门(十六)·任务通知·八万字通过详细举例解析任务通知
内含详细源码解析,可直接移植,常用API函数:xTaskNotifyGive()与ulTaskNotifyTake()主要适用于替换二值和计数信号量,xTaskNotify()、xTaskNotifyAndQuery()与xTaskNotifyWait()比较通用。原创 2025-05-14 03:00:00 · 1576 阅读 · 0 评论 -
FreeRTOS菜鸟入门(十五)·软件定时器
本文详细介绍了软件定时器相关API函数,并进行了实例演示,附上源码,可直接移植使用。常用API:xTimerCreate()、xTimerStart()、xTimerStop()、xTimerDelete()等。原创 2025-05-11 04:00:00 · 713 阅读 · 0 评论 -
FreeRTOS菜鸟入门(十四)·事件
文章详细介绍了事件先关API,并进行实例演示,可直接移植。常用API:xEventGroupCreate()、vEventGroupDelete()、xEventGroupSetBits()、xEventGroupWaitBits()等原创 2025-05-09 21:43:45 · 766 阅读 · 0 评论 -
FreeRTOS菜鸟入门(十三)·信号量·互斥量与递归互斥量·优先级翻转与继承实验
文章详细介绍了互斥量与递归互斥量的常用API函数,并且附上源码以及实例演示,源码可直接移植,常用API:xSemaphoreCreateMutex()、 xSemaphoreCreateRecursiveMutex()、xSemaphoreTake()等,并且通过代码模拟了优先级的翻转和优先级的继承,比较直观的看到二者的现象。原创 2025-05-09 04:00:00 · 955 阅读 · 0 评论 -
FreeRTOS菜鸟入门(十二)·信号量·二值信号量与计数信号量
文章详细介绍了二值信号量和计数信号量常用的API函数,并附上源码解析以及实例演示,附上源码可直接移植使用。常用API函数:xSemaphoreCreateBinary()、xSemaphoreCreateCounting()、vSemaphoreDelete()、xSemaphoreGive()、xSemaphoreTake()等。原创 2025-05-06 16:56:27 · 1036 阅读 · 0 评论 -
FreeRTOS菜鸟入门(十一)·信号量·二值、计数、递归以及互斥信号量的区别·优先级翻转以及继承机制详解
详解信号量的基本概念,分别对二值信号量、计数信号量、互斥信号量以及递归信号量,进行详细介绍,并且对别其相互间的区别进行介绍,同时对互斥信号量的优先级翻转以及优先级继承机制进行详细描述原创 2025-05-05 23:06:02 · 1671 阅读 · 0 评论 -
FreeRTOS学习系列·二值信号量
同理,二值信号量在任务与中断同步的应用场景:我们在串口接收中,我们不知道啥时候有数据发送过来,有一个任务是做接收这些数据处理,总不能在任务中每时每刻都在任务查询有没有数据到来,那样会浪费 CPU 资源,所以在这种情况下使用二值信号量是很好的办法,当没有数据到来的时候,任务就进入阻塞态,不参与任务的调度,等到数据到来了,释放一个二值信号量,任务就立即从阻塞态中解除,进入就绪态,然后运行的时候处理数据,这样子系统的资源就会很好的被利用起来。可能很多人会问了,创建一个没有消息存储空间的队列,信号量用什么表示?原创 2025-05-05 16:09:08 · 679 阅读 · 0 评论 -
FreeRTOS菜鸟入门(十)·消息队列
消息队列的使用详解,逐个API分析,并附上运行工程源码,可直接移植使用。原创 2025-05-04 23:27:17 · 899 阅读 · 0 评论 -
FreeRTOS入门基础了解(持续更新)
FreeRTOS基础了解,对FreeRTOS又一个基础的理解原创 2025-04-29 05:00:00 · 1026 阅读 · 0 评论 -
FreeRTOS菜鸟入门(九)·任务管理·超详细逐步解析
四万字超详细解析任务管理相关,逐个工程编写验证API函数,详细了解基本概念原创 2025-04-28 15:55:10 · 1335 阅读 · 0 评论 -
FreeRTOS菜鸟入门(八)·创建任务·动态任务创建
基于STM32F1103ZET6移植FreeRTOS,动态创建任务函数详细解析,内含源码可直接移植原创 2025-04-19 14:22:30 · 935 阅读 · 0 评论 -
FreeRTOS菜鸟入门(七)·创建任务·静态任务创建
完整的静态任务创建移植过程,内附详细解析以及源码原创 2025-04-18 09:43:30 · 1180 阅读 · 1 评论 -
FreeRTOS菜鸟入门(六)·移植FreeRTOS到STM32(逐步超详细移植)
裸机移植详细过程,内含源码,可直接使用。原创 2025-04-18 04:00:00 · 2524 阅读 · 0 评论 -
FreeRTOS菜鸟入门(五)·空闲任务与阻塞延时的实现
在 FreeRTOS 中,空闲任务是系统在启动调度器的时候创建的优先级最低的任务,空闲任务主体主要是做一些系统内存的清理工作。 在实际应用中,当系统进入空闲任务的时候,可在空闲任务中让单片机进入休眠或者低功耗等操作。原创 2025-04-15 10:20:15 · 1070 阅读 · 0 评论 -
FreeRTOS菜鸟入门(四)·临界段的保护
简单来说,FreeRTOS 的临界段保护是一种在多任务系统中防止共享资源被并发访问的机制,通过暂时关闭中断或调度器来确保代码段的原子性执行。原创 2025-04-15 04:00:00 · 1315 阅读 · 3 评论 -
FreeRTOS菜鸟入门(三)·任务的定义与任务的切换实现
先简单了解一下什么是任务原创 2025-04-14 10:49:13 · 770 阅读 · 0 评论 -
FreeRTOS菜鸟入门(二)·数据结构·列表与列表项讲解
通过C语言的链表简单了解一下FreeRTOS中链表的实现原创 2025-04-14 04:00:00 · 2079 阅读 · 0 评论 -
FreeRTOS菜鸟入门(一)·裸机系统与多任务系统
初步了解裸机开发和多任务系统的区别原创 2025-04-02 10:07:47 · 1068 阅读 · 0 评论 -
基于STM32F103的FreeRTOS系列(十五)·中断管理相关
用户可以自定义配置系统可管理的最高中断优先级的宏定义configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY,它是用于配置内核中的basepri 寄存器的,当 basepri 设置为某个值的时候,NVIC 不会响应比该优先级低的中断,而优先级比之更高的中断则不受影响。原创 2024-11-27 21:00:00 · 1675 阅读 · 0 评论 -
基于STM32F103的FreeRTOS系列(十四)·软件定时器
定时器,是指从指定的时刻开始,经过一个指定时间,然后触发一个超时事件,用户可以自定义定时器的周期与频率。相当于一个闹钟,到点干什么。软件定时器并不依赖于硬件定时器的中断信号,而是通过系统定期的时间片或任务调度机制来检查定时器是否到期。当软件定时器到期时,会触发预定的回调函数或执行相应的任务。注意,回调函数不要使用带有阻塞状态的函数。FreeRTOS操作系统提供软件定时器功能,软件定时器的使用相当于扩展了定时器的数量,允许创建更多的定时业务。裁剪:能通过宏关闭软件定时器功能。软件定时器创建。原创 2024-11-20 04:00:00 · 1818 阅读 · 0 评论 -
基于STM32F103的FreeRTOS系列(十三)·事件
事件是一种实现任务间通信的机制,主要用于实现多任务间的同步,但事件通信只能是事件类型的通信,无数据传输。与信号量不同的是,它可以实现一对多,多对多的同步。configUSE_16_BIT_TICKS定义为0,那么uxEventBits是32位的,有24 个位用来实现事件标志组。一对多同步模型:一个任务等待多个事件的触发,这种情况是比较常见的;多对多同步模型:多个任务等待多个事件的触发。原创 2024-11-19 09:17:37 · 886 阅读 · 0 评论 -
基于STM32F103的FreeRTOS系列拓展·任务管理
这个函数不能返回同一个函数,可以用来创建多个任务;换句话说,多个任务可以运行同一个函数函数内部,尽量使用局部变量:每个任务都有自己的栈每个任务运行这个函数时任务A的局部变量放在任务A的栈里、任务B的局部变量放在任务B的栈里不同任务的局部变量,有自己的副本函数使用全局变量、静态变量的话只有一个副本:多个任务使用的是同一个副本要防止冲突(后续会讲) 下面是一个示例:/* 对于不同的任务,局部变量放在任务的栈里,有各自的副本 */原创 2024-10-27 11:16:17 · 883 阅读 · 0 评论 -
基于STM32F103的FreeRTOS系列拓展·内存管理
使用内存的动态管理功能,简化了程序设计:不再需要小心翼翼地提前规划各类对象,简化API函数的涉及,甚至可以减少内存的使用。Heap_3使用标准C库里的malloc、free函数,所以堆大小由链接器的配置决定,配置项configTOTAL_HEAP_SIZE不再起作用。C库里的malloc、free函数并非线程安全的,Heap_3中先暂停FreeRTOS的调度器,再去调用这些函数,使用这种方法实现了线程安全。与Heap_4相比,Heap_2不会合并相邻的空闲内存,所以Heap_2会导致严重的"碎片化"问题。原创 2024-10-27 10:48:09 · 1168 阅读 · 0 评论 -
基于STM32F103的FreeRTOS系列(十二)·信号量·互斥信号量
互斥信号量其实就是一个拥有优先级继承的二值信号量,在同步的应用中(任务与任务或中断与任务之间的同步)二值信号量最适合。互斥信号量适合用于那些需要互斥访问的应用中。在互斥访问中互斥信号量相当于一个钥匙,当任务想要使用资源的时候就必须先获得这个钥匙,当使用完资源以后就必须归还这个钥匙,这样其他的任务就可以拿着这个钥匙去使用资源。原创 2024-08-25 11:59:22 · 1068 阅读 · 0 评论 -
基于STM32F103的FreeRTOS系列(十一)·信号量·二值信号量与计数信号量详细使用以及移植教程
信号量(Semaphore)是一种实现任务间通信的机制,可以实现任务之间同步或临界资源的互斥访问,常用于协助一组相互竞争的任务来访问临界资源。在多任务系统中,各任务之间需要同步或互斥实现临界资源的保护,信号量功能可以为用户提供这方面的支持。1.1 同步和互斥1.1.1 同步同步是指在执行任务时,通过某种机制来协调不同任务的行为,确保它们以正确的顺序和条件进行。简单来说,就是使得一个任务的执行进度能够与另一个任务的状态保持一致。原创 2024-08-22 05:00:00 · 1448 阅读 · 0 评论 -
基于STM32F103的FreeRTOS系列(十)·消息队列的使用详细介绍以及代码编写
队列又称消息队列,是一种常用于任务间通信的数据结构,队列可以在任务与任务间、中断和任务间传递信息,实现了任务接收来自其他任务或中断的不固定长度的消息。FreeRTOS 中使用队列数据结构实现任务异步通信工作,具有如下特性:① 消息支持先进先出方式排队,支持异步读写工作方式。② 读写队列均支持超时机制。③ 消息支持后进先出方式排队,往队首发送消息(LIFO)。④ 可以允许不同长度(不超过队列节点最大值)的任意类型消息。⑤ 一个任务能够从任意一个消息队列接收和发送消息。原创 2024-08-20 06:00:00 · 2455 阅读 · 2 评论