登录社区云,与社区用户共同成长
邀请您加入社区
有效值为 "on"(开)、"off"(关)和 "keep"(保持)。如果 LED 已经处于开启或关闭状态,并且 default-state 属性设置为相同的值,则不应产生导致 LED 瞬间关闭(或开启)的毛刺(glitch)。混杂设备(Misc Device)通常用于那些主设备号(Major Number)统一为 10,但拥有不同次设备号(Minor Number)的小型、简单的硬件驱动。例如:如
本文深入解析STM32 RTC外设的底层原理与实战难点,涵盖备份域机制、LSE晶振调试、BCD时间存储、预分频寄存器及闹钟唤醒逻辑。重点指出常见问题如断电走时不准、闹钟不触发、时间丢失等根源在于硬件设计与备份域保护。通过寄存器级分析和精简代码示例,强调“先读时间再读日期”“首次上电设置时间”等关键实践,助力开发者从源头解决RTC稳定性难题,实现低功耗定时应用的可靠落地。
结合智能化工具学习教材,尤其针对晦涩内容,可通过针对性交互实现高效突破。以Arduino Mega 2560为例,利用其4路硬件串口、54个数字引脚与16路模拟输入等丰富资源,可构建多设备协同实验环境。通过智能编程工具(如IDE、仿真软件)实时调试代码、可视化信号波形,将抽象原理具象化。例如,用Serial1/2/3并行连接蓝牙、GPS、WiFi模块,避免冲突,提升系统级理解。智能化工具辅助下,复
本实验以STM32MP157A开发板为例,详解GPIO寄存器控制原理。GPIO是外设操作的基础,其输入/输出、复用等功能均由寄存器配置决定。通过分析七组核心寄存器(MODER、OTYPER、OSPEEDR、PUPDR、IDR、ODR、BSRR),掌握引脚模式设置与电平控制方法。结合原理图,明确三颗绿色LED连接于GPIOZ的PZ5/PZ6/PZ7,采用高电平点亮(正逻辑)。实验确立“读写内存地址即
通过内核文档可以知道,SysTick 定时器有两个时钟源:一个是内部时钟 FCLK,也就是 MCU 的自由运行时钟,在 STM32F407ZET6 中为 168MHz;在 MCU 时钟系统中,外部晶振常作为高速外部时钟(HSE)输入,而负载电容直接决定晶振能否稳定起振以及实际振荡频率。实际调试时,建议使用频率计观测晶振输出频率:若实测频率偏正,可适当增大负载电容;若偏负,则适当减小负载电容,最终以
ESP32-S3 基于 esp-idf 的 SSD1306 OLED 滚动字符显示。
本文为STM32 GPIO第一课学习笔记,系统梳理了GPIO的定义与原理,详细讲解4种输出模式(通用/复用 + 推挽/开漏)和4种输入模式(浮空、上拉、下拉、模拟),并结合STM32CubeMX配置实例说明实际应用。通过速查表与口诀总结,帮助快速掌握GPIO配置逻辑,适用于嵌入式初学者复习参考。
设计以STM32单片机、74HC595锁存器、一位数码管、喇叭等构成简易音乐播放器。利用定时器输出不同频率驱动喇叭发声,数码管显示歌曲序号;电位器调节音量,按键实现切歌、播放暂停,播放时红灯点亮,内置9首曲目。
有机发光二极管OLED硬件电路:4针脚的右边两个针脚提供电源,剩下两个是I2C通信引脚,这里会使用GPIO口模拟I2C通信,因此可以接任意GPIO口。7针脚也同理,两个供电,其余是SPI通信引脚,如果是GPIO口模拟SPI通信,则可以接任意GPIOEXIT外部中断EXIT可以检测指定的GPIO口的电平变化,当指定的GPIO口发生电平变化时,EXIT立即向NVIC发送中断申请,经过NVIC裁定后即可
本文系统讲解I2C协议原理与STM32实战应用,涵盖物理层特性、时序结构、应答机制及读写流程。对比硬件与软件模拟I2C优劣,结合AT24C02 EEPROM实例,详述初始化、读写操作及主函数测试。重点解析常见问题如总线卡死、ACK丢失,并提供逻辑分析仪调试方法,助力开发者高效掌握I2C通信技术。
本文系统讲解STM32 ADC数据采集全流程,涵盖基础原理、硬件结构、CubeMX配置及HAL库实现。重点介绍单次/连续转换、DMA多通道循环采集(支持3通道交错数据处理),并通过电压换算、中值滤波等方法提升精度与稳定性,适用于温度、电压等模拟信号的高可靠采集。
本文基于Wokwi仿真平台,系统梳理了从Arduino MEGA到ESP32的嵌入式开发入门路径。通过“理论—仿真—实物”三步法,以blink_mega、led_bar_pot_mega等项目打基础,掌握数字/模拟I/O与串口通信;进阶至DHT、MQ2传感器应用;再转向ESP32的WiFi、MQTT及WS2812灯带控制,实现IoT与复杂时序编程;最终结合步进电机与舵机项目,深入理解电气控制逻辑。
本项目合集系统讲解ESP32与舵机的多模式控制,涵盖从单舵机基础控制到无线同步、卡尔曼滤波云台及Python头部追踪等高级应用。通过I2C、ESP-NOW、串口通信及PCA9685扩展驱动,结合MPU6050姿态传感器与MediaPipe计算机视觉,实现精准、低延迟的舵机控制。内容包含硬件连接、核心代码、平滑滤波与死区优化,适用于嵌入式学习与智能交互项目开发。
本文详解STM32通用定时器TIM2~5的核心功能,对比基础定时器,突出其支持向上/向下/中央对齐计数、4个独立通道、多种时钟源及输入输出能力。重点解析输出比较机制,阐述PWM频率(由ARR/PSC决定)与占空比(由CCR决定)的计算关系,并通过“7步配置法”实现精准波形输出。强调“软件可调占空比”特性:仅需修改CCR,无需停机,硬件自动生效。深入剖析“时基、比较、DMA、中断”四模块协同机制,结
本设计以STM32F103C8T6单片机为主控芯片,WIFI模块ESP8266-01S作为通信模块连接onenet云平台,通过通过MQ-2烟雾传感器检测烟雾浓度是否正常,预防垃圾桶火灾发生。OLED屏幕显示烟雾浓度、当前厨余垃圾,其他垃圾,有害垃圾,可回收垃圾状态和是否满溢。当一级口令识别之后,二级口令说出垃圾的名字,语音识别模块自动识别此垃圾的类型,语音播报出垃圾种类(四种类型:厨余垃圾,其他垃
本设计以STM32F103C8T6单片机为主控芯片,WIFI模块ESP8266-01S作为通信模块连接onenet云平台,通过DHT11温湿度传感器采集温度和湿度、火焰传感器检测是否发生火灾、光照传感器检测光照数据、紫外线传感器检测紫外线强度、时钟模块自动走时。OLED屏幕显示当前温度、湿度、光照强度、紫外线强度、是否发生火灾、窗帘状态、系统时间和模式。通过WIFI连接ONENET云平台,手机AP
MQTT QoS 0、1、2 分别对应“最多一次”、“至少一次”、“恰好一次”。QoS 0 无确认,速度快但可能丢失;QoS 1 通过 PUBACK 确保消息送达,但可能重复,需保证命令幂等性;QoS 2 采用四步握手(PUBLISH → PUBREC → PUBREL → PUBCOMP),确保消息仅传递一次,适用于高可靠性场景。实际应用中,需区分网络 ACK 与 MQTT ACK,且消息确认不
本文梳理了STM32国产替代的主流方案,涵盖替代思路、主流厂商(如兆易创新GD32、华大HC32、极海APM32等)及选型要点。强调替代需综合评估硬件兼容性、软件迁移成本与工具链支持,建议优先选择生态成熟、文档完善的产品,并通过小批量验证后逐步替换,确保项目稳定过渡。
本文基于STM32与FreeRTOS,系统阐述高并发任务设计方法。通过合理划分任务、采用消息队列、信号量、事件标志组等同步机制,结合中断安全通信与内存优化策略,实现传感器采集、数据处理、无线上报等多任务高效协同。重点讲解任务优先级管理、资源竞争规避及栈溢出检测,辅以实战代码演示,为嵌入式多任务系统开发提供可落地的解决方案。
本文系统对比STM32中常规SRAM与CCMRAM的硬件特性、访问方式及应用场景。SRAM通过总线矩阵支持内核、DMA和外设访问,适用于通用存储与DMA缓冲;而CCMRAM直接耦合内核,访问延迟低、无总线竞争,专用于实时性要求高的关键数据(如中断变量、电机控制算法)。使用时需在链接脚本中配置,并通过编译器属性指定变量位置,严禁将DMA缓冲区置于CCMRAM。建议优先使用SRAM,仅在高实时性场景下
先吐一波苦水,我真的吐了,我之前用ESP32-C3-Supermini的时候就遇到过这个问题;怎么都无法连接,后面换了 arduino 之后又可以了,设置功率就行了。现在没办法换回了 ESP-IDF 没办法 FREERTOS太香了。如果不行,请克隆下面的仓库试一试;解决办法,加上这一行就可以了;
在VSCode配合GCC开发STM32时,-O0与-Os优化选项需合理选择:-O0关闭优化,变量可实时调试,适合开发阶段;-Os优先减小代码体积,提升执行效率,适用于发布阶段。前者利于调试,后者节省Flash空间,提升性能。建议开发用-O0,发布用-Os,关键模块可局部启用-O2。务必在-Os下充分测试,避免优化引入问题。
本文围绕 PWM(脉冲宽度调制)展开,从概念理解、主要参数到定时器输出比较模块的 PWM 产生机制,再到实验硬件(舵机与电机)的选型与电压考量,系统梳理了 PWM 在嵌入式控制中的核心原理与典型应用。文章以通用定时器为重点,讲解输出比较通路、输出模式控制器及 PWM 模式 1 的工作机制,并简要介绍高级定时器的死区生成电路;最后通过舵机与电机两个实验,对比“控制”与“驱动”两类模块的差异,帮助读者
一行C代码点亮LED,背后是内存映射与寄存器操作的魔法。在单片机中,硬件寄存器通过地址映射为内存空间,直接写入特定地址即可控制外设。通过结构体封装寄存器、使用volatile防止优化、开启时钟并精确位操作,实现对GPIO的控制。理解寄存器本质、掌握地址计算与位操作,是嵌入式开发的核心。
├─ 一键安装.bat # 首次安装入口├─ 检查烧录包.bat # 只校验,不写设备├─ 初始化外置NAND.bat # 按需单独初始化存储├─ 开始使用.md├─ 新手安装说明.md├─ 硬件支持说明.md│ ├─ merged-binary.bin # 首次安装使用的完整镜像│ └─ esp_mini_platform.bin # 后续 OTA 使用的应用镜像└─ tools/└─ espt
本文通过STM32CubeMX配置时钟树,利用外部8MHz晶振经PLL倍频至72MHz系统时钟,实现对LED闪烁速度的控制。采用CPU_Delay()软件延时函数,其执行时间受主频影响,从而直观展示时钟配置对系统行为的影响。结合GPIO初始化与寄存器操作,详细解析了时钟使能、分频配置及硬件寄存器映射机制,强调外设需开启时钟方可工作,并指出软件延时的局限性。最终实现PF8引脚输出方波,验证时钟树配置
STM32和GD32在开发上既有高度兼容的一面,也有诸多细节差异。对于初学者和追求稳定生态的团队,STM32是更稳妥的选择;对于成本敏感、需要更高主频或国产化替代的项目,GD32是极具竞争力的选项。无论选择哪一方,建议在项目初期就确定芯片型号,并基于目标芯片的参考手册和官方库进行开发,避免后期移植带来的额外成本。
ESP Mini App Platform 0.4.9 Beta 已经把系统界面、WebAssembly 运行环境、应用包、权限与私有数据、在线目录和系统更新连成一条使用路径。本文介绍这次发布交付了什么、系统与应用如何分层、首次安装与 OTA 的区别,以及目前仅直接支持 ESP-Mosaico/ESP32-S31 的硬件边界。本文是版本发布说明,不是烧录命令教程。
芯片看不见、听不到,也不直接知道前方有什么。地面的明暗要经过什么才算变成程序能比较的数字,同一块灰度模块又为什么有时给结论、有时把差别也留下?
设计以STM32单片机、四路GL5516光敏电阻采集四周光照,搭配28BYJ48步进电机与ULN2003驱动搭建双轴追光云台。系统可按键切换手动、自动模式,手动模式下可直接控制云台转动;自动模式依据四路光强差值与设定灵敏度自动追踪光源。OLED实时显示云台坐标与工作模式,按键可修改追光灵敏度并保存至FLASH,云台水平转角±180°、垂直转角±90°。
系统以STM32F103单片机为核心控制器,通过集成按键模块、XL01心率检测模块、DS18B20体温检测模块、OLED液晶显示模块、电机调速模块以及HC06蓝牙通信模块,实现了对跑步机的智能化控制。HC06蓝牙通信模块:实现跑步机与手机APP之间的通信,通过蓝牙将监测到的数据传输到手机上,同时接收手机端发送的指令,实现远程控制和数据传输。电机调速模块:控制跑步机电机的转速,根据用户设定的速度调整
1.光敏电阻传感器2.热敏电阻传感器3.对射式红外传感器4.反射式红外传感器他们通过传感器原件(光敏电阻/热敏电阻/红外接收管)的电阻会随着外界影响而变化,通过与定值电阻分压即可得到模拟电压输出,再通过电压比较器进行二值化即可得到数字电压输出模拟电压输出就是图中的1,通过N1和R1进行电阻分压输出模拟信号(两个分压可以类比上拉下拉电阻)。数字输出就是图中的2,通过对AO二值化输出(运算放大器当比较
GPIO(General Purpose Input/Output,通用输入输出)是微控制器、单片机以及树莓派等开发板上普遍提供的一类可编程引脚。我们可以通过软件把这些引脚配置为输入或输出,用来读取外部信号,或者控制外部设备。简单来说,GPIO就是一块开发板与外界硬件“打交道”的通道:既能感知外部世界发生的变化(输入),也能对外部世界产生影响(输出)。
本文系统介绍STM32与传感器通信的常见方式(GPIO、I2C、SPI、单总线),并对比典型传感器(如DS18B20、SHT30、MPU6050)的选型参数。以DS18B20为例,提供基于HAL库的完整驱动代码,涵盖复位、读写时序及温度采集逻辑,帮助开发者快速实现传感器数据采集,适用于温湿度监测、姿态解算等嵌入式项目。
本文对比了STM32中硬件SPI与软件模拟SPI在W25Q系列Flash通信中的实现差异。硬件SPI利用专用外设,配置复杂但效率高;软件模拟则通过GPIO手动控制时序,灵活性强且可任意选引脚。两者接线一致,均遵循“主机MOSI接从机DI,MISO接DO”原则。硬件版本依赖SPI外设寄存器操作,软件版本通过位操作模拟时序,需精确延时。关键区别在于:硬件版由外设自动处理电平翻转和收发,软件版需手动控制
而从A到C8T6使用的是一个串口接口,从C8T6到B也是一个串口接口,所以需要借助于C8T6这个媒介,B设备运行状态也可以通过串口传回给C8T6,C8T6将处理好的信息给上位机去显示,这相当于拥有两个串口。在上位机中如果连接的是串口1,上位机发送数据,然后在代码中,将上位机发送的数据用数据保存起来,然后在串口1执行任务函数中,调用发送数据的函数,函数的第一个参数更改为串口3,这样就可以将数据发送到
如果想让I2C输出1或者高电平,只需要让N-MOS管断开,SDA就会上拉到VDD,输出高电平。如果想让I2C输出1或者高电平,只需要让N-MOS管闭合,SDA就会下接入VSS,输出低电平。在I2C复用GPIO的时候,使用开漏模式的时候,N-MOS管默认处于断开状态,它是一种串行、同步、半双工、两线制的通信总线,一根总线上可以挂多个设备。但是开漏模式下面,外部有电阻,防止可以外部的VDD和内部的GE
操作STM32的GPIO的三个步骤:1.使用RCC开启GPIO时钟。2.使用GPIO_Init函数初始化GPIO3.使用输入或输出函数控制GPIO总共用到RCC与GPIO两个外设。
CAN总线不是万能方案——它需要每个帧不超过8字节(CAN FD可到64字节),不适合传视频或文件。但在实时性、可靠性、抗干扰性要求高的工业控制场景里,它仍然是性价比最高的选择。掌握三个要点就能覆盖80%的工程需求:一是波特率采样点设在75%~87.5%,二是总线两端必须挂120Ω终端电阻,三是用HAL库时先开回环模式验证软件再切正常模式。把这三点做到位,CAN总线调试基本不会卡太久。关于CAN总
STM32H533RET6是意法半导体推出的高性能、高安全MCU,基于250MHz Cortex-M33内核,集成TrustZone、FPU与MPU,具备375 DMIPS性能与1023 CoreMark跑分。内置512KB双Bank Flash、272KB SRAM及硬件加密加速器,支持安全启动、OTA升级与PSA Level 3认证。集成I3C、CAN-FD、USB PD、SDMMC等丰富接口
本文详解STM32驱动OLED屏幕的完整流程,基于STM32F103C8T6与SSD1306芯片,通过I2C协议实现。内容涵盖硬件接线、I2C初始化、命令/数据传输、屏幕初始化及显示字符、字符串与图形。提供标准库与HAL库双版本代码,支持0.96寸OLED显示,可直接移植使用,适合嵌入式开发入门与项目实战。
二值信号量 vs 计数信号量:二值只有 0/1,适合 "中断 → 任务" 事件同步;计数信号量可累计 N 次事件。信号量 vs 队列:信号量只通知不带数据;队列拷贝传递数据,可缓存多条。中断上下文规则:禁止osDelay、禁止普通,只能用xxxFromISR家族,配合。是一次性的:每收满指定字节数就自动关闭 RXNE 中断,必须在回调 / 任务里重新调用才能继续收。句柄命名规则:CubeMX 生成
STM32C5以Cortex-M33内核、144MHz主频及丰富外设(如FDCAN、USB、CORDIC)刷新入门级MCU性能标杆,性价比突出。配套CubeMX2采用HAL2/LL驱动与CMake工程结构,代码组织更清晰但需适应新流程,虽无直接MDK5支持,但通过KeilStudio等路径仍可兼容。对老用户而言,迁移成本存在,但学习价值仍在。未来三年内,F103仍具教学意义,而C5有望成为新一代入
系统采用STM32单片机作为主控制器,通过DHT11传感器、红外传感器、DS1302时钟芯片实现药盒存储环境温湿度、药品余量、实时时间的数据采集,采集数据均可通过OLED12864液晶实时显示。用户可通过按键模块设置定时吃药时间和药品保质期时间,当到达设定的吃药时间时,蜂鸣器进行报警提示同时LED灯亮起,系统通过GSM模块向用户手机端发送短信提示用户及时吃药。当用户吃完药后,按下按键LED灯熄灭。
这里排查了很久stm32上的灯一直不亮,最后发现是串口发的是字符过来的1不是数字1,要转成文本模式。
本文分享了作者大四参加工创赛的项目经验,涵盖基于STM32与树莓派的智能小车系统设计。硬件包括多传感器融合、麦克纳姆轮底盘与升降夹取结构;软件方面,结合OpenCV与OpenMV实现物料识别与定位,通过串口通信协同控制。虽因现场光照干扰导致识别失败,最终遗憾止步27名,但总结出宝贵教训:重视环境适应性、优化代码结构、加强鲁棒性。希望为后续参赛者提供参考,避免重蹈覆辙。
本系统以STM32F103C8T6为主控,MAX30102采集心率血氧数据,OLED实时显示测量信息。按键可设置心率、血氧上下限并保存至FLASH,指标超出范围时触发蜂鸣器与LED声光报警。设备通过HC-05蓝牙连接手机APP,可上传实时心率血氧数据,也能在APP端直接修改各项监测阈值。
本文为教学接线与设计预期,尚无实物测量记录;使用 STM32F030F4P6 TSSOP20;芯片接上三点三伏,为什么电源脚旁还要放电容?芯片工作时会突然多取电流;长走线有阻抗,脚边电压可能瞬时变化。去耦电容不是另一块电池,它帮忙稳住短时变化;小熊从远处水站拿水,长管像供电走线;它把一个小水杯放在工位旁。芯片突然要水时,小熊先举需求旗,小杯就近倒出一点;水站再经长管把杯补满。小杯对应电容,旗对应瞬