- 博客(350)
- 资源 (1)
- 收藏
- 关注
原创 FreeRTOS实战(四)·USART串口实现DMA数据转运(江协/江科大代码移植)
内含源码可直接移植,内容基于STM32F1系列移植FreeRTOS实现DMA转运串口接收数据,详细过程介绍,其中包含调用二值信号量释放函数xSemaphoreGiveFromISR(),接收函数xSemaphoreTake()
2025-05-17 20:21:27
423
原创 FreeRTOS实战(三)·外部中断实现消息队列的发送与接收
在 FreeRTOS 中创建了两个任务获取消息队列,并且定义了两个按键 KEY1 与 KEY2 的触发方式为中断触发,其触发的中断服务函数则跟裸机一样,在中断触发的时候通过消息队列将消息传递给任务,任务接收到消息就将信息通过串口调试助手显示出来。
2025-05-17 04:00:00
1196
原创 FreeRTOS实战(二)·按键实现任务的挂起和恢复(STM32移植模版)
主要完成功能:按键实现任务的挂起和恢复,内含STM32F1系列移植模版,可直接使用,含源码可自行移植
2025-05-16 05:00:00
1586
1
原创 FreeRTOS菜鸟入门(十七)·内存管理·heap_x.c的区别详解
内含源码可直接移植,详细介绍heap_x.c的优缺点,以及pvPortMalloc( ); 内存申请函数、vPortFree(); 内存释放函数、vPortInitialiseBlocks( void ); 初始化内存堆函数、xPortGetFreeHeapSize( ); 获取当前未分配的内存堆大小、xPortGetMinimumEverFreeHeapSize(); 获取未分配的内存堆历史最小值的调用详解
2025-05-14 04:00:00
661
原创 FreeRTOS菜鸟入门(十六)·任务通知·八万字通过详细举例解析任务通知
内含详细源码解析,可直接移植,常用API函数:xTaskNotifyGive()与ulTaskNotifyTake()主要适用于替换二值和计数信号量,xTaskNotify()、xTaskNotifyAndQuery()与xTaskNotifyWait()比较通用。
2025-05-14 03:00:00
1541
原创 FreeRTOS菜鸟入门(十五)·软件定时器
本文详细介绍了软件定时器相关API函数,并进行了实例演示,附上源码,可直接移植使用。常用API:xTimerCreate()、xTimerStart()、xTimerStop()、xTimerDelete()等。
2025-05-11 04:00:00
640
原创 FreeRTOS菜鸟入门(十四)·事件
文章详细介绍了事件先关API,并进行实例演示,可直接移植。常用API:xEventGroupCreate()、vEventGroupDelete()、xEventGroupSetBits()、xEventGroupWaitBits()等
2025-05-09 21:43:45
724
原创 FreeRTOS菜鸟入门(十三)·信号量·互斥量与递归互斥量·优先级翻转与继承实验
文章详细介绍了互斥量与递归互斥量的常用API函数,并且附上源码以及实例演示,源码可直接移植,常用API:xSemaphoreCreateMutex()、 xSemaphoreCreateRecursiveMutex()、xSemaphoreTake()等,并且通过代码模拟了优先级的翻转和优先级的继承,比较直观的看到二者的现象。
2025-05-09 04:00:00
911
原创 嵌入式面试八股文(十四)·内存管理机制、优先级继承机制以及优先级翻转
方案内存分配策略碎片处理适用场景heap_1.c静态分配,不可释放无仅需一次性分配的任务heap_2.c最佳匹配算法,允许释放中等简单动态分配heap_3.c封装标准库依赖库需要兼容现有代码heap_4.c合并空闲块,减少碎片较好长期运行的复杂系统heap_5.c支持多块非连续内存区域最好扩展内存或外部RAM我们知道任务的优先级在创建的时候就已经是设置好的,高优先级的任务可以打断低优先级的任务,抢占 CPU 的使用权。
2025-05-06 20:21:44
699
原创 FreeRTOS菜鸟入门(十二)·信号量·二值信号量与计数信号量
文章详细介绍了二值信号量和计数信号量常用的API函数,并附上源码解析以及实例演示,附上源码可直接移植使用。常用API函数:xSemaphoreCreateBinary()、xSemaphoreCreateCounting()、vSemaphoreDelete()、xSemaphoreGive()、xSemaphoreTake()等。
2025-05-06 16:56:27
991
原创 FreeRTOS菜鸟入门(十一)·信号量·二值、计数、递归以及互斥信号量的区别·优先级翻转以及继承机制详解
详解信号量的基本概念,分别对二值信号量、计数信号量、互斥信号量以及递归信号量,进行详细介绍,并且对别其相互间的区别进行介绍,同时对互斥信号量的优先级翻转以及优先级继承机制进行详细描述
2025-05-05 23:06:02
1514
原创 FreeRTOS学习系列·二值信号量
同理,二值信号量在任务与中断同步的应用场景:我们在串口接收中,我们不知道啥时候有数据发送过来,有一个任务是做接收这些数据处理,总不能在任务中每时每刻都在任务查询有没有数据到来,那样会浪费 CPU 资源,所以在这种情况下使用二值信号量是很好的办法,当没有数据到来的时候,任务就进入阻塞态,不参与任务的调度,等到数据到来了,释放一个二值信号量,任务就立即从阻塞态中解除,进入就绪态,然后运行的时候处理数据,这样子系统的资源就会很好的被利用起来。可能很多人会问了,创建一个没有消息存储空间的队列,信号量用什么表示?
2025-05-05 16:09:08
641
原创 嵌入式面试八股文(十三)·FreeRTOS命名规则、调度算法、任务创建
详细介绍FreeRTOS命名规则、不同调度算法算法的优缺点、动态与静态任务创建的优缺点
2025-04-29 04:00:00
658
原创 嵌入式面试八股文(十二)·FreeRTOS中·堆和栈
用于存储程序动态创建的对象。堆的大小可以在程序运行时动态调整。堆由开发人员分配和释放, 若开发人员不释放,程序结束时由 OS 回收。堆的分配和释放需要调用相应的函数,如malloc()和free函数。在FreeRTOS中堆用来分配任务、队列、信号量、互斥量等内核对象的内存。FreeRTOS 提供了 5 种堆管理实现(heap_1 到 heap_5),开发者可通过 FreeRTOS/Source/portable/MemMang 目录下的文件选择。
2025-04-28 17:02:17
867
原创 FreeRTOS菜鸟入门(八)·创建任务·动态任务创建
基于STM32F1103ZET6移植FreeRTOS,动态创建任务函数详细解析,内含源码可直接移植
2025-04-19 14:22:30
832
原创 FreeRTOS菜鸟入门(五)·空闲任务与阻塞延时的实现
在 FreeRTOS 中,空闲任务是系统在启动调度器的时候创建的优先级最低的任务,空闲任务主体主要是做一些系统内存的清理工作。 在实际应用中,当系统进入空闲任务的时候,可在空闲任务中让单片机进入休眠或者低功耗等操作。
2025-04-15 10:20:15
983
原创 FreeRTOS菜鸟入门(四)·临界段的保护
简单来说,FreeRTOS 的临界段保护是一种在多任务系统中防止共享资源被并发访问的机制,通过暂时关闭中断或调度器来确保代码段的原子性执行。
2025-04-15 04:00:00
1174
原创 ESP32入门开发·FreeRTOS相关·通过按键来了解----事件
事件是一种实现任务间通信的机制,主要用于实现多任务间的同步,但事件通信只能是事件类型的通信,无数据传输。与信号量不同的是,它可以实现一对多,多对多的同步。事件位:用于指示事件是否发生,事件位通常称为事件标志。事件组:就是一组事件位,事件组中的事件位通过位编号来引用。
2025-03-31 06:00:00
889
原创 嵌入式面试八股文·操作系统高频面经(一)
1.1 进程① 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配的基本单位。② 是操作系统结构的基础。③ 进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体.信号量是一种同步机制,它本质上是一个计数器,用于多进程或多线程对共享资源的访问。信号量的主要作用是保护共享资源,使得在一个时刻只有一定数量的进程或线程可以访问。信号量的原理是基于P(sv)和V(sv)P(sv)
2025-03-17 17:04:34
1179
原创 ESP32入门开发·FreeRTOS相关·任务创建
任务的状态通常分为以下四种状态:就绪(Ready)、运行(Running)、阻塞(Blocked)、挂起态(Suspended)。运行:当任务实际执行时,它被称为处于运行状态。任务当前正在使用处理器。如果运行 RTOS 的处理器只有一个内核, 那么在任何给定时间内都只能有一个任务处于运行状态。准备就绪:准备就绪任务指那些能够执行(它们不处于阻塞或挂起状态),但目前没有执行的任务, 因为同等或更高优先级的不同任务已经处于运行状态。阻塞:如果任务当前正在等待时间或外部事件,则该任务被认为处于阻塞状态。
2025-03-17 05:00:00
1233
原创 STM32学习·HAL库相关(三)·如何在STM32CubeMX新建工程
CMSIS (微控制器软件接口标准):Cortex Microcontroller Software Interface Standard,是由ARM和与其合作的芯片厂商、软件工具厂商,共同制定的标准。ST 为了方便用户开发 STM32芯片开发提供了三种库:标准外设库 (Standard Peripheral Libraries)HAL库(硬件抽象层):Hardware Abstraction LayerLL库:Low Layer我先随便找一个文件夹,后续会告诉如何生成:文件夹名称作用。
2025-02-11 04:00:00
1513
原创 STM32学习·HAL库相关(二)·STM32存储器与寄存器映射
寄存器是单片机内部一种特殊的内存,可以实现对单片机各个功能的控制。寄存器是特殊的存储器,给寄存器地址命名的过程,就叫寄存器映射。(1)32位的单片机可以有32根地址线(每根地址线有两种状态:导通或不导通)(2)单片机内存地址访问的存储单元是按字节编址的(而不是bit)(2)外设基于总线基地址的偏移量(PERIPH_OFFSET)STM32寻址大小:2^32= 4G(字节)(3)寄存器相对外设基地址的偏移量(REG_OFFSET)(1)总线基地址(BUS_BASE_ADDR)选项字节,配置读保护等。
2025-02-10 05:00:00
737
原创 STM32学习·HAL库相关(一)·初始STM32以及C语言基础知识复习
stdint.h 是从 C99 中引进的一个标准 C 库的文件路径:D:\MDK5.34\ARM\ARMCC\include宏定义可以:提高效率、可读性、易改性,核心是替换#define 标识符 字符串标识符:宏定义的名字字符串:常数、表达式、格式串等}while(0)建议大家使用 do{ ... }while(0) 来 构造宏定义。这样不会受到大括号、分号、运算符优先级等的影响,总是会按你期望的方式调用运行。
2025-02-10 03:00:00
1244
原创 个人成长、创作与生活的平衡之旅
过去一年是充满挑战与收获的一年。在个人成长方面,技术能力得到了全面提升;创作历程中,通过与读者的互动实现了共同进步;在生活与博客事业的平衡上,找到了适合自己的方式。未来,我将继续在技术创作的道路上前行,不断探索新的领域,为读者带来更多有价值的内容,同时保持生活与事业的和谐发展。
2025-01-18 13:35:25
1195
原创 STM32F1之内部FLASH存储
STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分,通过闪存存储器接口(外设)可以对程序存储器和选项字节进行擦除和编程。类型起始地址存储器用途ROM程序存储器Flash存储C语言编译后的程序代码系统存储器存储C语言编译后的程序代码选项字节存储一些独立于程序代码的配置参数RAM运行内存SRAM存储运行过程中的临时变量运行内存SRAM存储各个外设的配置参数内核外设寄存器存储内核各个外设的配置参数。
2025-01-16 08:59:20
962
原创 嵌入式Linux(二)·配置VMware使用USB网卡连接STM32MP157实现Windows、Ubuntu以及开发板之间的通信
文章详细介绍了Ubuntu的联网模式,并且通过桥接和NAT双网卡的方式实现Windows、Ubuntu以及开发板之间的通信
2025-01-04 15:04:01
1337
基于STM32移植FreeRTOS-KEY调用挂起和恢复.zip
2025-05-17
基于STM32移植FreeRTOS使用外部中断EXTI
2025-05-17
基于STM32F1系列移植FreeRTOS实现串口进行DMA数据接收.zip
2025-05-17
FreeRTOS使用外部中断EXTI实现消息队列的发送与接收
2025-05-15
FreeRTOS-KEY调用挂起和恢复.zip
2025-05-14
基于STM32F1系列FreeRTOS移植模版
2025-05-14
FreeRTOS-CPU利用率.zip
2025-05-14
FreeRTOS中断管理.zip
2025-05-14
FreeRTOS内存管理.zip
2025-05-13
FreeRTOS任务通知-替代消息队列-读取上次通知值.zip
2025-05-13
FreeRTOS任务通知-替代消息队列-eSetValueWithoutOverwrite.zip
2025-05-13
FreeRTOS任务通知-替代消息队列-eSetValueWithOverwrite-模拟覆盖.zip
2025-05-13
FreeRTOS任务通知-替代消息队列-eSetValueWithOverwrite.zip
2025-05-13
FreeRTOS任务通知-替代计数信号量-eIncrement.zip
2025-05-13
FreeRTOS任务通知-替代事件-eSetBits.zip
2025-05-13
FreeRTOS任务通知-替代二值信号量-eNoAction.zip
2025-05-13
FreeRTOS任务通知-替代计数信号量-接收函数.zip
2025-05-13
FreeRTOS任务通知-替代计数信号量-发送函数.zip
2025-05-13
FreeRTOS任务通知-替代二值信号量-接收函数.zip
2025-05-13
FreeRTOS任务通知-替代二值信号量-发送函数.zip
2025-05-13
FreeRTOS内存管理.zip
2025-05-13
FreeRTOS任务通知-替代消息队列-读取上次通知值.zip
2025-05-13
FreeRTOS任务通知-替代消息队列-eSetValueWithoutOverwrite.zip
2025-05-13
FreeRTOS任务通知-替代消息队列-eSetValueWithOverwrite-模拟覆盖.zip
2025-05-13
FreeRTOS任务通知-替代消息队列-eSetValueWithOverwrite.zip
2025-05-13
FreeRTOS任务通知-替代计数信号量-eIncrement.zip
2025-05-12
FreeRTOS任务通知-替代事件-eSetBits.zip
2025-05-12
FreeRTOS任务通知-替代二值信号量-eNoAction.zip
2025-05-12
FreeRTOS任务通知-替代计数信号量-接收函数.zip
2025-05-12
FreeRTOS任务通知-替代二值信号量-接收函数.zip
2025-05-12
FreeRTOS任务通知-替代计数信号量-发送函数.zip
2025-05-12
FreeRTOS任务通知-替代二值信号量-发送函数.zip
2025-05-12
FreeRTOS软件定时器-删除函数xTimerDelete()
2025-05-11
FreeRTOS软件定时器-停止函数 xTimerStop()
2025-05-11
FreeRTOS软件定时器-启动函数-完整验证.zip
2025-05-11
FreeRTOS软件定时器-启动函数xTimerStart()
2025-05-11
FreeRTOS软件定时器-创建函数xTimerCreate()
2025-05-11
FreeRTOS软件定时器-删除函数.zip
2025-05-10
FreeRTOS软件定时器-停止函数.zip
2025-05-10
main函数可以再任意位置
2024-11-21
一个周期信号经过等间隔采样后是否是周期和什么有关?
2024-11-21
C语言--a的使用,uint32_t的坑
2024-11-20
降压电路设计问题(TPS54560)
2023-12-26
STM32F103C8T6烧录问题
2023-12-12
STM32F103C8T6的ADC采集问题
2023-12-05
STM32模块代码合并
2023-10-28
PB3,PB4引脚进行重定义
2023-10-28
数码管显示问题乱码显示
2023-10-26
STM32F103C8T6驱动七段数码管
2023-10-25
示波器如何测量占空比
2023-10-24
keil5头文件添加
2023-10-21
P10LED单元板如何实现滚屏显示
2023-10-17
STM32F1kile5中如何更改
2023-10-17
AD在b站上学习的为啥,这里和视频上的不一样点击完出来这个是为什么
2023-09-26
函数于结构体的分文件编写
2023-09-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人