- 博客(42)
- 收藏
- 关注
原创 ZW101模块
摘要:该代码实现了一个自动识别功能,通过串口发送指令包并接收应答包进行状态判断。程序首先发送AutoIdentify指令,然后等待接收响应数据包,通过解析数据包中第9、10字节的内容来判断识别状态(初始/成功/错误)。设置了3秒超时机制,若超时或收到错误数据包则返回错误码。整个过程中通过串口打印调试信息来跟踪状态变化。
2025-09-26 00:58:30
202
原创 RFID--RC522模块
本文介绍了基于STM32的RC522 RFID读写模块开发,主要内容包括: RC522芯片特性:支持ISO14443A/MIFARE协议,集成SPI/UART/I2C接口,工作频率13.56MHz,最大传输速率424kbit/s。 M1卡结构:16个扇区×4块存储结构,每块16字节,块3为控制块存放密码和权限控制。 通信协议:详细说明ISO14443A协议的寻卡、防冲突、选卡流程,以及CRC校验计算。 SPI通信实现:通过STM32硬件SPI接口与RC522通信,包括初始化配置和读写时序控制。 功能实现:提
2025-09-23 09:39:50
354
原创 LVGL:基础对象
LVGL核心概念摘要: 对象体系:所有控件继承自基础对象lv_obj,通过lv_obj_create()创建,支持坐标、尺寸、父子关系等基本属性管理。 布局与样式: 采用LCD坐标系(左上原点),支持对齐、偏移及盒子模型(边框+填充影响内容区域)。 样式系统支持级联继承,通过lv_style_t定义外观属性,可绑定到对象的不同状态(如按下、聚焦)。 事件机制:支持冒泡传播,通过lv_obj_add_event_cb()绑定事件处理函数,可响应点击、滚动等交互行为。 定时器:非抢占式定时器通过lv_timer
2025-09-11 23:06:50
886
原创 LVGL移植源码
本文介绍了获取LVGL图形库源码的两种方式:1)直接从LVGL的GitHub仓库下载核心源码;2)获取基于Code::Blocks的Windows移植版本工程。后者需要额外下载对应版本的LVGL源码并解压到指定文件夹。文章提供了详细的下载地址和操作步骤,帮助开发者快速搭建LVGL开发环境。两种方法均需通过GitHub的Releases页面获取稳定版本源码。
2025-09-11 01:30:18
413
原创 提速下载方法(gitee和迅雷)
本文提供了两种文件下载方法:1. Git下载方式,需从官网获取Windows版Git,配置用户名和邮箱后安装文件;2. 迅雷网盘加速下载,通过百度网盘分享链接获取文件后,使用迅雷新建任务粘贴下载链接实现加速下载。两种方法分别适用于代码文件和普通文件的不同下载需求。
2025-09-11 01:27:03
362
原创 CAN总线学习
摘要:本文详细介绍了CAN总线的工作原理及STM32外设配置。主要内容包括:1. CAN总线物理层特性,如电平标准、终端电阻作用;2. 数据帧结构及仲裁机制;3. STM32 CAN外设架构,包括发送邮箱、接收过滤器和FIFO队列;4. 波特率计算和滤波器配置方法;5. 错误处理机制及状态转换。重点阐述了CAN特有的非破坏性仲裁原理、位填充规则,以及STM32的过滤器列表模式和屏蔽模式的实现方式。最后给出了初始化配置和收发流程的实践指导。
2025-09-06 23:33:33
803
原创 ST7789
本文介绍了TFT-LCD模块通过SPI通讯的驱动实现方法。主要内容包括:1)复位时序要求(reset低电平≥10us有效);2)SPI通信协议配置(CPOL=0,CPHA=0);3)核心函数实现:写指令/数据(8位/16位)、寄存器操作、复位及初始化流程;4)显示控制功能:设置坐标/区域、画点、清屏等。提供了完整的底层驱动代码,包括SPI数据发送、命令写入、寄存器配置等具体实现,适用于STM32平台开发TFT-LCD显示应用。
2025-09-03 18:35:15
396
原创 wifi控制舵机
本文介绍了基于ESP8266模块的TCP通信系统,实现客户端-服务器模式的舵机控制。系统分为服务器端和客户端:服务器端ESP8266工作在AP模式,创建TCP服务器(端口8080),解析客户端发送的"@角度值#*"格式数据并控制舵机转动,同时通过OLED显示连接状态和角度信息;客户端ESP8266作为TCP客户端,通过AD转换读取电位器数值,经一阶滤波和动态步长算法处理后,将角度数据发送至服务器。
2025-08-31 23:32:41
1004
原创 ADC模数转换
摘要:STM32的ADC模块采用12位逐次逼近型设计,支持0-3.3V模拟信号转换,分辨率为4095级。该模块包含18个输入通道(16个外部+2个内部),采用规则组(16通道)和注入组(4通道)两种转换模式,支持单次/连续转换和扫描序列。核心部件包括比较器、DAC和逐次逼近寄存器,通过二分法实现快速转换(1μs)。系统支持多种触发源(定时器/外部中断/软件),配备EOC/JEOC/AWD三种中断标志,并可通过DMA解决数据覆盖问题。ADC还提供模拟看门狗监测和校准功能,数据存储支持左右对齐格式。
2025-08-29 21:19:15
443
原创 ESP8266:Arduino学习
本文介绍了ESP8266开发的基础知识和实践项目。主要内容包括:1) 环境搭建,使用Arduino框架;2) 基础项目实现:LED控制、按键检测和DHT11温湿度读取;3) 网络通信:WiFi连接、TCP/UDP客户端和服务端开发;4) 物联网应用:Web服务器创建和MQTT协议对接。详细讲解了各功能模块的代码实现,包括引脚配置、串口通信、网络连接和数据处理等关键环节,为ESP8266物联网开发提供了实用指南。
2025-08-27 23:32:41
807
原创 红外遥控模块
本文介绍了红外通信的基本原理及NEC协议的解码实现。红外通信采用发射管和接收管实现信号传输,通过上拉电阻确保逻辑电平稳定。NEC协议采用38kHz载波调制,包含9ms低+4.5ms高的引导码,以及16位客户代码和8位数据码(含反码)。解码过程使用外部中断和定时器检测电平跳变时间:逻辑0为0.56ms高+0.56ms低,逻辑1为0.56ms高+1.68ms低。程序通过状态机实现引导码验证和数据接收,最终校验数据码与反码的匹配关系完成解码。该方案具有成本低、抗干扰强等特点,适用于家电遥控等场景。
2025-08-26 22:58:43
475
原创 ESP8266学习
本文介绍了ESP8266的三种通信方式:WiFi连接、ESP8266间通信和MQTT连接。在WiFi连接部分,详细说明了通过AT指令配置ESP8266连接手机热点和进入透传模式的步骤。在ESP8266间通信部分,分别介绍了服务器端和客户端的配置方法,包括创建AP热点、建立TCP连接等操作,并提供了STM32控制程序示例。最后简要提及MQTT连接方式。文中包含大量AT指令配置细节和代码片段,展示了如何实现ESP8266模块的网络连接和数据传输功能。
2025-08-25 23:38:01
1269
原创 Linux常用命令
本文摘要: 本文系统介绍了Linux常用命令操作,分为六大部分:1)文件目录管理,包括创建/删除/复制文件目录、查看/搜索文件内容、压缩解压等;2)用户与组管理,涵盖用户创建、权限分配、组管理等;3)系统监控,包括进程管理与资源查看;4)网络操作,涉及连通性测试和文件传输;5)开发工具使用,如gcc编译和gdb调试;6)其他实用工具,包括文本处理与软件安装。每个命令均配有典型应用场景和参数说明,适合作为Linux运维和开发的速查手册。
2025-08-25 20:25:00
868
原创 FreeRTOS学习:优化系统
摘要:针对嵌入式系统中栈空间优化和任务调度问题,文章提出通过填充0xa5a5a5a5检测栈使用量,结合vTaskList和vTaskGetRunTimeStats函数分析任务状态。重点指出定时器优先级不足导致OLED显示异常的问题,建议提升中断优先级。同时提出空闲任务优化方案,通过启用GENERATE_RUN_TIME_STATS统计功能,解决MPU6050空闲时CPU占用率过高(4%降至1%)的问题。文章详细说明了FreeRTOS配置宏定义和基准函数设置方法,为实时系统性能优化提供实用方案。
2025-08-10 22:38:45
668
原创 FreeRTOS学习:资源管理:互斥操作的本质
。本文解析两类核心保护机制:中断屏蔽(taskENTER_CRITICAL 系列)与调度器暂停(vTaskSuspendScheduler),详解其对中断、任务调度的影响及适用场景。
2025-08-10 22:30:26
601
原创 FreeRTOS 任务与中断函数:运行机制、关键区别与使用准则
FreeRTOS任务与中断函数的关键区别在于运行上下文和操作限制。任务函数运行在可调度的任务上下文,允许阻塞操作,使用普通版本函数;而中断函数运行在不可调度的中断上下文,必须使用带FromISR后缀的中断安全版本,禁止阻塞。中断中操作内核对象时需传递pxHigherPriorityTaskWoken参数,记录是否有更高优先级任务被唤醒,并在中断退出前通过portYIELD_FROM_ISR()决定是否切换任务,以确保实时性。这种设计避免了中断中直接切换任务导致的延迟,同时保证了高优先级任务能及时响应。
2025-08-10 22:20:03
924
原创 FreeRTOS学习笔记:任务通知和软件定时器
本文探讨了RTOS中任务通信与定时器机制。在任务间通信方面,通过环形缓冲区和信号量实现异步通信,发送方和接收方互不知晓对方身份。任务通知机制分为简化版(类似信号量)和专业版(支持位操作),并分析了"舔狗式"通知场景。在软件定时器方面,介绍了两种实现方式:中断上下文直接处理(快速但可能影响系统响应)和通过任务队列处理(更安全但需保证高优先级)。最后以蜂鸣器控制为例,展示了定时器在PWM音效控制中的应用,强调需合理设置定时器优先级以确保功能正常。
2025-08-09 22:29:09
1258
原创 通信协议总结
本文介绍了SPI、I2C和USART三种常见通信协议的基本原理及实现方法。SPI采用全双工同步通信,通过主从架构和4种工作模式实现数据传输;I2C使用双线制(SDA/SCL)实现多主多从通信,包含起始/停止信号、地址传输和应答机制;USART是异步串行通信协议,支持轮询、中断和DMA三种工作模式,需配置波特率、数据格式等参数。文章详细阐述了各协议的硬件连接、时序控制、数据收发流程及典型应用场景,并提供了初始化配置和基本通信函数的实现代码,为嵌入式系统开发中的外设通信提供了实用参考。
2025-08-07 22:39:29
1121
原创 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
1389
原创 智能手表项目:原理图
STM32F103C8T6最小退耦电容滤除杂波的工作原理利用电容通交流、隔直流特性,把电源线上高频杂波旁路到地,让 MCU 等电路获得更纯净电源,保证系统稳定工作HSELSE复位电路。
2025-08-03 22:17:05
394
原创 智能手表:电源检查
本文介绍了一种嵌入式设备电池状态监测方案,通过AD采样获取电压值,经3000次平均滤波后转换为电量百分比,并在OLED屏上动态显示。系统采用线性转换公式计算电量(0-100%),并设计了三种显示模式:满电显示完整图标,10-99%按比例清除部分区域,低于10%突出警示。该方案包含AD采样、电压计算、容量转换和动态显示完整流程,支持STM32等平台移植,通过GPIO控制实现开机自检、关机节能功能。
2025-08-02 22:14:09
555
原创 智能手表:小恐龙游戏
本文详细介绍了Google小恐龙游戏的实现方案,包括按键控制逻辑、计分系统、地面滚动效果、障碍物随机生成、云朵移动动画以及碰撞检测机制。通过定时器实现0.1秒计分单位,采用双缓冲技术实现256像素地面的无缝滚动,使用正弦函数模拟恐龙跳跃轨迹,并建立矩形碰撞模型进行碰撞检测。游戏包含三种不同障碍物随机出现,恐龙奔跑动画通过图像交替显示实现,当碰撞发生时显示GameOver;并返回菜单界面。
2025-08-02 14:41:40
1369
原创 智能手表:MPU6050和水平仪,动态表情包
MPU6050传感器姿态解算通过互补滤波融合陀螺仪(动态响应好但漂移)和加速度计(无漂移但噪声大)数据,计算出稳定的Roll、Pitch、Yaw角度。基于此实现的水平仪功能在OLED屏幕上显示倾斜状态,通过小球位置变化直观反映设备姿态。此外还开发了动态表情包功能,利用椭圆绘制和循环控制实现眼睛开闭动画效果。
2025-08-02 13:50:22
646
原创 BH1750模块
摘要:本文详细介绍了BH1750光照传感器的I2C通信协议和操作流程。主要包括:1)通过0x23/0x46地址进行写操作配置工作模式;2)通过0x47地址读取16位光照数据;3)传感器上电初始化过程,包括唤醒、复位和模式设置;4)状态切换逻辑,包括断电/通电模式和单次/连续测量模式的转换。
2025-07-31 23:10:14
520
原创 MPU6050模块
MPU6050是一种集成陀螺仪和加速度计的惯性测量单元,通过I2C协议与主控通信。文章首先介绍了MPU6050的基本原理,包括欧拉角(偏航角、俯仰角、滚转角)的定义及其在姿态测量中的应用,以及加速度计和陀螺仪的互补特性。随后详细解析了MPU6050的硬件接口,包括I2C总线配置(SDA/SCL)、地址设置(AD0引脚)和电源管理。文章重点阐述了I2C通信协议的物理层特性、时序规范和数据传输格式,并提供了完整的寄存器读写函数实现。
2025-07-31 22:03:57
1234
原创 FreeRTOS学习笔记:事件组
事件组是RTOS中的一种广播机制,与队列、信号量不同,可以同时唤醒多个符合条件的任务。其特点包括:1.支持设置多个事件位;2.可等待任意位(OR)或所有位(AND)触发;3.可选择是否清除已触发事件。使用时需先创建事件组,通过xEventGroupSetBits设置事件位,使用xEventGroupWaitBits等待事件,可配置等待条件、阻塞时间和清除选项。事件组适用于需要多任务同步的场景,如控制多个设备的协同工作。
2025-07-31 14:49:39
407
原创 FreeRTOS 学习笔记:信号量和互斥量
FreeRTOS中信号量和互斥量是任务同步与互斥的核心机制。信号量分为二进制信号量(0/1计数)和计数信号量(0到最大值),分别用于资源互斥和有限资源管理。互斥量是特殊的二进制信号量,通过优先级继承机制解决优先级反转问题。
2025-07-31 00:44:11
923
原创 制作APP获取云平台的数据
本文介绍了使用HBuilderX开发OneNET物联网应用的完整流程:1. 项目搭建与Token生成:导入鉴权模块,通过key.js生成API访问Token;2. 数据获取实现:定时请求云平台接口,解析温湿度等设备数据并实时展示;3. 设备控制功能:通过switch组件触发属性下发API,实现远程控制;4. 前端界面开发:包含Vue组件结构、数据绑定和样式处理。文中提供了详细的代码示例,涵盖Token生成参数配置、定时数据刷新机制、设备控制请求等核心功能实现。
2025-07-30 23:27:24
933
原创 智能手表项目:秒表和手电筒
本文介绍了两个嵌入式系统功能模块的实现:秒表和手电筒。秒表模块包含UI设计、计时逻辑和转场动画,通过定时器实现精确计时,支持开始/停止/清零功能。手电筒模块提供简单的开关控制界面,通过LED控制指令实现开关功能。
2025-07-30 22:30:14
223
原创 智能手表项目:滑动菜单界面
本文介绍了一个基于OLED显示的滑动菜单系统实现方案。主要内容包括:1)32x32像素菜单图标的制作流程,包括图片处理与取模;2)菜单控制框架设计,通过menu_flag变量实现7个选项的循环切换;3)滑动动画效果实现,使用x_pre坐标控制图标的左右移动速度,并设计了前项/后项显示逻辑;4)Set_Selection函数作为动画控制开关,连接用户操作与动画执行。系统通过按键控制菜单切换,支持上下翻页和确认功能,并实现了平滑的滑动视觉效果。最终实现了一个包含7个功能选项(秒表、手电筒等)的可滑动交互式菜单界
2025-07-29 13:27:58
536
原创 智能手表项目:进入设置页面
基于 OLED 的 RTC 时间设置系统,以多级菜单架构,通过按键切换确认选项,标志位管理状态,依托数组与函数实现时间修改,含数值处理与边界管控,保障设置有效。
2025-07-28 21:08:21
843
原创 FreeRTOS学习笔记:队列总线架构优化+赛车游戏
本文总结了嵌入式系统开发中的两个关键优化点:1. 通过引入InputTask中间层和队列总线化架构,解决了原始"硬件中断→队列→任务"框架在扩展性和维护性上的不足,采用队列集技术实现多队列监听,提升系统灵活性和资源利用率;2. 实现了一个多车道赛车游戏Demo,通过结构体存储车辆信息,创建独立CarTask任务处理按键事件,采用"隐藏-移动-重绘"机制实现车辆移动,并设计了全局队列管理系统集中管理多个设备队列。
2025-07-27 21:55:52
880
原创 智能手表:显示UI界面
本文介绍了一个基于RTC实时时钟模块的智能手表项目实现。项目通过OLED显示屏显示日期和时间,系统实现了菜单导航功能,通过标志位控制光标位置,并利用按键进行交互操作。
2025-07-27 12:20:27
777
原创 智能手表项目:BKP和RTC学习
本文介绍了 STM32 的 BKP 备份寄存器(由 VBAT 供电、有防拆保护等)和 RTC 实时时钟(独立定时器、用 LSE 时钟源等)的功能、结构、配置流程及相关注意事项等内容。
2025-07-27 07:53:06
940
原创 基于 STM32 的智能环境监测与控制系统
本文聚焦 STM32 智能环境监测控制系统,采用双定时器分工(TIM2 高频消抖按键,TIM4 周期触发设备更新),实现手动 / 自动模式切换。集成传感器采集温湿度、光照,通过 OLED 双页面可视化,结合 MQTT 上传数据与解析指令,优化资源占用,为嵌入式智能环境控制提供高效方案 。
2025-07-25 16:29:35
1891
原创 FreeRTOS 学习笔记:同步互斥与通信
第六天深入学习 FreeRTOS 同步互斥与通信,解析 volatile 作用、环形缓冲区原理,梳理队列 / 信号量 / 互斥量关系,优化任务调度与数据传输,解决变量操作冲突问题 。
2025-07-22 23:36:00
1214
原创 FreeRTOS 学习笔记:任务状态与调度核心机制
本文围绕 FreeRTOS 第五天学习内容,详解任务状态转换、调度机制、优先级管理及核心变量作用。涵盖任务的就绪、运行、阻塞、挂起四种状态及转换条件,分析调度器如何按优先级与时间片调度任务,介绍优先级配置与就绪链表管理逻辑,阐释pxCurrentTCB在任务切换中的核心作用,同时对比阻塞与挂起状态差异,为理解实时系统任务管理提供清晰框架。
2025-07-20 22:05:54
799
原创 FreeRTOS 学习笔记(韦东山老师课程) 声光色影、任务管理与播放优化
第四天通过 “声光色影” 任务案例,演示动态与静态任务创建、多任务共享资源保护(如 LCD 打印的互斥控制)、任务动态管理(创建 / 删除的问题与优化),以及通过优先级调整和 vTaskDelay () 函数提升任务运行效果等实战技巧。
2025-07-19 23:53:01
669
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅