- 博客(29)
- 收藏
- 关注
原创 FreeRTOS学习:优化系统
摘要:针对嵌入式系统中栈空间优化和任务调度问题,文章提出通过填充0xa5a5a5a5检测栈使用量,结合vTaskList和vTaskGetRunTimeStats函数分析任务状态。重点指出定时器优先级不足导致OLED显示异常的问题,建议提升中断优先级。同时提出空闲任务优化方案,通过启用GENERATE_RUN_TIME_STATS统计功能,解决MPU6050空闲时CPU占用率过高(4%降至1%)的问题。文章详细说明了FreeRTOS配置宏定义和基准函数设置方法,为实时系统性能优化提供实用方案。
2025-08-10 22:38:45
393
原创 FreeRTOS学习:资源管理:互斥操作的本质
。本文解析两类核心保护机制:中断屏蔽(taskENTER_CRITICAL 系列)与调度器暂停(vTaskSuspendScheduler),详解其对中断、任务调度的影响及适用场景。
2025-08-10 22:30:26
537
原创 FreeRTOS 任务与中断函数:运行机制、关键区别与使用准则
FreeRTOS任务与中断函数的关键区别在于运行上下文和操作限制。任务函数运行在可调度的任务上下文,允许阻塞操作,使用普通版本函数;而中断函数运行在不可调度的中断上下文,必须使用带FromISR后缀的中断安全版本,禁止阻塞。中断中操作内核对象时需传递pxHigherPriorityTaskWoken参数,记录是否有更高优先级任务被唤醒,并在中断退出前通过portYIELD_FROM_ISR()决定是否切换任务,以确保实时性。这种设计避免了中断中直接切换任务导致的延迟,同时保证了高优先级任务能及时响应。
2025-08-10 22:20:03
529
原创 FreeRTOS学习笔记:任务通知和软件定时器
本文探讨了RTOS中任务通信与定时器机制。在任务间通信方面,通过环形缓冲区和信号量实现异步通信,发送方和接收方互不知晓对方身份。任务通知机制分为简化版(类似信号量)和专业版(支持位操作),并分析了"舔狗式"通知场景。在软件定时器方面,介绍了两种实现方式:中断上下文直接处理(快速但可能影响系统响应)和通过任务队列处理(更安全但需保证高优先级)。最后以蜂鸣器控制为例,展示了定时器在PWM音效控制中的应用,强调需合理设置定时器优先级以确保功能正常。
2025-08-09 22:29:09
1107
原创 通信协议总结
本文介绍了SPI、I2C和USART三种常见通信协议的基本原理及实现方法。SPI采用全双工同步通信,通过主从架构和4种工作模式实现数据传输;I2C使用双线制(SDA/SCL)实现多主多从通信,包含起始/停止信号、地址传输和应答机制;USART是异步串行通信协议,支持轮询、中断和DMA三种工作模式,需配置波特率、数据格式等参数。文章详细阐述了各协议的硬件连接、时序控制、数据收发流程及典型应用场景,并提供了初始化配置和基本通信函数的实现代码,为嵌入式系统开发中的外设通信提供了实用参考。
2025-08-07 22:39:29
1002
原创 W25Q64模块
W25Q256 Flash存储器支持3字节和4字节地址模式,3字节模式仅能访问前16MB空间。芯片采用分层存储结构:8MB容量分为128个64KB块,每个块包含16个4KB扇区,每个扇区又分为16个256字节的页。SPI接口通过页缓存区实现高速数据传输,写入操作需先擦除(最小擦除单元为4KB扇区)。关键操作包括:写使能(0x06指令)、页编程(0x02)、扇区擦除(0x20)和读数据(0x03)。所有写入操作后需检测状态寄存器的BUSY位,确保操作完成。
2025-08-07 20:03:17
1091
原创 智能手表项目:原理图
STM32F103C8T6最小退耦电容滤除杂波的工作原理利用电容通交流、隔直流特性,把电源线上高频杂波旁路到地,让 MCU 等电路获得更纯净电源,保证系统稳定工作HSELSE复位电路。
2025-08-03 22:17:05
227
原创 智能手表:电源检查
本文介绍了一种嵌入式设备电池状态监测方案,通过AD采样获取电压值,经3000次平均滤波后转换为电量百分比,并在OLED屏上动态显示。系统采用线性转换公式计算电量(0-100%),并设计了三种显示模式:满电显示完整图标,10-99%按比例清除部分区域,低于10%突出警示。该方案包含AD采样、电压计算、容量转换和动态显示完整流程,支持STM32等平台移植,通过GPIO控制实现开机自检、关机节能功能。
2025-08-02 22:14:09
407
原创 智能手表:小恐龙游戏
本文详细介绍了Google小恐龙游戏的实现方案,包括按键控制逻辑、计分系统、地面滚动效果、障碍物随机生成、云朵移动动画以及碰撞检测机制。通过定时器实现0.1秒计分单位,采用双缓冲技术实现256像素地面的无缝滚动,使用正弦函数模拟恐龙跳跃轨迹,并建立矩形碰撞模型进行碰撞检测。游戏包含三种不同障碍物随机出现,恐龙奔跑动画通过图像交替显示实现,当碰撞发生时显示GameOver;并返回菜单界面。
2025-08-02 14:41:40
834
原创 智能手表:MPU6050和水平仪,动态表情包
MPU6050传感器姿态解算通过互补滤波融合陀螺仪(动态响应好但漂移)和加速度计(无漂移但噪声大)数据,计算出稳定的Roll、Pitch、Yaw角度。基于此实现的水平仪功能在OLED屏幕上显示倾斜状态,通过小球位置变化直观反映设备姿态。此外还开发了动态表情包功能,利用椭圆绘制和循环控制实现眼睛开闭动画效果。
2025-08-02 13:50:22
479
原创 BH1750模块
摘要:本文详细介绍了BH1750光照传感器的I2C通信协议和操作流程。主要包括:1)通过0x23/0x46地址进行写操作配置工作模式;2)通过0x47地址读取16位光照数据;3)传感器上电初始化过程,包括唤醒、复位和模式设置;4)状态切换逻辑,包括断电/通电模式和单次/连续测量模式的转换。
2025-07-31 23:10:14
404
原创 MPU6050模块
MPU6050是一种集成陀螺仪和加速度计的惯性测量单元,通过I2C协议与主控通信。文章首先介绍了MPU6050的基本原理,包括欧拉角(偏航角、俯仰角、滚转角)的定义及其在姿态测量中的应用,以及加速度计和陀螺仪的互补特性。随后详细解析了MPU6050的硬件接口,包括I2C总线配置(SDA/SCL)、地址设置(AD0引脚)和电源管理。文章重点阐述了I2C通信协议的物理层特性、时序规范和数据传输格式,并提供了完整的寄存器读写函数实现。
2025-07-31 22:03:57
864
原创 FreeRTOS学习笔记:事件组
事件组是RTOS中的一种广播机制,与队列、信号量不同,可以同时唤醒多个符合条件的任务。其特点包括:1.支持设置多个事件位;2.可等待任意位(OR)或所有位(AND)触发;3.可选择是否清除已触发事件。使用时需先创建事件组,通过xEventGroupSetBits设置事件位,使用xEventGroupWaitBits等待事件,可配置等待条件、阻塞时间和清除选项。事件组适用于需要多任务同步的场景,如控制多个设备的协同工作。
2025-07-31 14:49:39
361
原创 FreeRTOS 学习笔记:信号量和互斥量
FreeRTOS中信号量和互斥量是任务同步与互斥的核心机制。信号量分为二进制信号量(0/1计数)和计数信号量(0到最大值),分别用于资源互斥和有限资源管理。互斥量是特殊的二进制信号量,通过优先级继承机制解决优先级反转问题。
2025-07-31 00:44:11
770
原创 制作APP获取云平台的数据
本文介绍了使用HBuilderX开发OneNET物联网应用的完整流程:1. 项目搭建与Token生成:导入鉴权模块,通过key.js生成API访问Token;2. 数据获取实现:定时请求云平台接口,解析温湿度等设备数据并实时展示;3. 设备控制功能:通过switch组件触发属性下发API,实现远程控制;4. 前端界面开发:包含Vue组件结构、数据绑定和样式处理。文中提供了详细的代码示例,涵盖Token生成参数配置、定时数据刷新机制、设备控制请求等核心功能实现。
2025-07-30 23:27:24
837
原创 智能手表项目:秒表和手电筒
本文介绍了两个嵌入式系统功能模块的实现:秒表和手电筒。秒表模块包含UI设计、计时逻辑和转场动画,通过定时器实现精确计时,支持开始/停止/清零功能。手电筒模块提供简单的开关控制界面,通过LED控制指令实现开关功能。
2025-07-30 22:30:14
183
原创 智能手表项目:滑动菜单界面
本文介绍了一个基于OLED显示的滑动菜单系统实现方案。主要内容包括:1)32x32像素菜单图标的制作流程,包括图片处理与取模;2)菜单控制框架设计,通过menu_flag变量实现7个选项的循环切换;3)滑动动画效果实现,使用x_pre坐标控制图标的左右移动速度,并设计了前项/后项显示逻辑;4)Set_Selection函数作为动画控制开关,连接用户操作与动画执行。系统通过按键控制菜单切换,支持上下翻页和确认功能,并实现了平滑的滑动视觉效果。最终实现了一个包含7个功能选项(秒表、手电筒等)的可滑动交互式菜单界
2025-07-29 13:27:58
467
原创 智能手表项目:进入设置页面
基于 OLED 的 RTC 时间设置系统,以多级菜单架构,通过按键切换确认选项,标志位管理状态,依托数组与函数实现时间修改,含数值处理与边界管控,保障设置有效。
2025-07-28 21:08:21
764
原创 FreeRTOS学习笔记:队列总线架构优化+赛车游戏
本文总结了嵌入式系统开发中的两个关键优化点:1. 通过引入InputTask中间层和队列总线化架构,解决了原始"硬件中断→队列→任务"框架在扩展性和维护性上的不足,采用队列集技术实现多队列监听,提升系统灵活性和资源利用率;2. 实现了一个多车道赛车游戏Demo,通过结构体存储车辆信息,创建独立CarTask任务处理按键事件,采用"隐藏-移动-重绘"机制实现车辆移动,并设计了全局队列管理系统集中管理多个设备队列。
2025-07-27 21:55:52
817
原创 智能手表:显示UI界面
本文介绍了一个基于RTC实时时钟模块的智能手表项目实现。项目通过OLED显示屏显示日期和时间,系统实现了菜单导航功能,通过标志位控制光标位置,并利用按键进行交互操作。
2025-07-27 12:20:27
651
原创 智能手表项目:BKP和RTC学习
本文介绍了 STM32 的 BKP 备份寄存器(由 VBAT 供电、有防拆保护等)和 RTC 实时时钟(独立定时器、用 LSE 时钟源等)的功能、结构、配置流程及相关注意事项等内容。
2025-07-27 07:53:06
895
原创 基于 STM32 的智能环境监测与控制系统
本文聚焦 STM32 智能环境监测控制系统,采用双定时器分工(TIM2 高频消抖按键,TIM4 周期触发设备更新),实现手动 / 自动模式切换。集成传感器采集温湿度、光照,通过 OLED 双页面可视化,结合 MQTT 上传数据与解析指令,优化资源占用,为嵌入式智能环境控制提供高效方案 。
2025-07-25 16:29:35
1549
原创 FreeRTOS 学习笔记:同步互斥与通信
第六天深入学习 FreeRTOS 同步互斥与通信,解析 volatile 作用、环形缓冲区原理,梳理队列 / 信号量 / 互斥量关系,优化任务调度与数据传输,解决变量操作冲突问题 。
2025-07-22 23:36:00
1018
原创 FreeRTOS 学习笔记:任务状态与调度核心机制
本文围绕 FreeRTOS 第五天学习内容,详解任务状态转换、调度机制、优先级管理及核心变量作用。涵盖任务的就绪、运行、阻塞、挂起四种状态及转换条件,分析调度器如何按优先级与时间片调度任务,介绍优先级配置与就绪链表管理逻辑,阐释pxCurrentTCB在任务切换中的核心作用,同时对比阻塞与挂起状态差异,为理解实时系统任务管理提供清晰框架。
2025-07-20 22:05:54
606
原创 FreeRTOS 学习笔记(韦东山老师课程) 声光色影、任务管理与播放优化
第四天通过 “声光色影” 任务案例,演示动态与静态任务创建、多任务共享资源保护(如 LCD 打印的互斥控制)、任务动态管理(创建 / 删除的问题与优化),以及通过优先级调整和 vTaskDelay () 函数提升任务运行效果等实战技巧。
2025-07-19 23:53:01
558
原创 FreeRTOS 学习笔记(韦东山老师课程) 栈与任务管理实战
第三天聚焦 FreeRTOS 栈与任务管理,解析函数调用、局部变量的栈操作逻辑,以及任务栈为任务分配独立空间、支撑上下文切换与并发的核心机制,助理解多任务调度底层原理 。
2025-07-18 23:24:33
277
原创 FreeRTOS 学习笔记
本系列聚焦 FreeRTOS 入门,第一天解析 RTOS 基础、从裸机到多任务演进及工程创建;第二天深入任务创建与内存管理(堆、栈概念),带你逐步掌握嵌入式实时操作系统核心要点
2025-07-18 10:21:51
1018
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人