STM32
雾削木
分享个人学习资料,仅供学习参考使用,如有侵权请联系删除。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
stm32 hal i2c3 mpu6050姿态解析代码
摘要:本文介绍了MPU6050六轴传感器的驱动实现,包含完整的寄存器定义、初始化配置和姿态解算算法。代码提供了陀螺仪和加速度计的校准功能,采用自适应互补滤波算法融合传感器数据,有效抑制漂移问题。主要功能包括:传感器初始化、量程设置、数据读取、零漂校准、姿态角计算等。通过优化时间间隔处理、低通滤波和运动状态检测,显著提高了姿态解算的精度和稳定性。该实现基于STM32 HAL库的I2C接口,可直接应用于嵌入式系统开发。原创 2026-01-04 17:02:32 · 73 阅读 · 0 评论 -
点亮LED 的几种写法
摘要:本文展示了STM32标准库中控制GPIO输出的多种方法。首先介绍了GPIOC时钟初始化和引脚配置过程,随后列举了6种输出控制方式:1)使用GPIO_ResetBits/SetBits函数;2)调用GPIO_WriteBit函数;3)直接写入0/1值;4)整体端口写入;5)位带操作;6)直接操作寄存器(ODR/BSRR/BRR)。最后给出了自定义LED控制宏的示例代码,包括点亮、熄灭和电平翻转操作。这些方法适用于STM32F103等系列MCU的GPIO控制需求。原创 2025-12-20 08:29:25 · 100 阅读 · 0 评论 -
Stm32H7 四路PWM控制四驱小车
本文介绍了一个四驱电机控制系统的实现方案。通过STM32的PWM输出和GPIO控制,实现了左右两侧电机的独立启停和差速控制。系统使用TIM1/TIM16控制左侧电机,TIM8/TIM17控制右侧电机,提供了电机启动(motor_start)、停止(motor_stop)和速度调节(motor)等函数接口。其中motor()函数可接收-500~500的速度参数,通过设置PWM占空比和GPIO电平来控制电机正反转及转速。该系统适用于需要精确控制左右轮差速的四驱应用场景。原创 2025-12-19 16:43:03 · 146 阅读 · 0 评论 -
STM32 HAL 软件SPI任意GPIO控制st7735
本文介绍了如何通过软件SPI控制任意GPIO驱动ST7735屏幕的硬件接口和驱动实现。主要内容包括: 硬件接口定义 使用STM32F1系列MCU,通过GPIO模拟SPI接口控制ST7735液晶屏 定义了复位(RST)、数据/命令选择(DC)、片选(CS)、时钟(CLK)和数据(SDA)等控制引脚 显示驱动功能 实现了屏幕初始化、旋转设置、区域选择等基本功能 提供了像素点绘制、矩形绘制、直线绘制等图形绘制函数 实现了ASCII字符和32x32中文字符的显示功能 包含图片显示功能,支持40x40像素图片显示 颜原创 2025-12-07 13:16:58 · 170 阅读 · 0 评论 -
ST7735 1.8TFT屏幕驱动 128*160
摘要:本文介绍基于STM32F103C8T6的硬件SPI1+DMA驱动ST7735 1.8寸LCD的开源方案(GitHub链接)。使用时BL引脚可不接,屏幕保持常亮。实际测试发现显存偏移问题,可通过修改st7735.h中的屏幕尺寸参数或ST7735_XSTART/YSTART偏移值解决,也可在st7735_cfg.h中通过宏定义调整(示例设置为XSTART=2/YSTART=1)。项目包含完整的引脚定义说明(蓝奏云链接)。原创 2025-12-07 10:56:29 · 217 阅读 · 0 评论 -
STM32CubeHAL 外设仿真大合集 | Proteus 8.15 (LCD1602+OLED+DHT11+DS18B20+舵机+蜂鸣器)
本文介绍了基于STM32的多外设控制系统设计,详细说明了LCD1602、OLED、DHT11、DS18B20、SG90舵机和无源蜂鸣器等外设的硬件连接与软件配置。系统采用STM32CubeMX 6.11+Keil MDK5.38开发环境,提供了完整的工程下载资源。文章重点阐述了各外设的驱动移植要点,包括LCD1602的8位并口通信、OLED的软件I²C实现、单总线器件的精确时序控制、舵机的PWM配置以及蜂鸣器的驱动方式。同时给出了常见问题解决方案和核心代码片段,展示了温度读取、舵机控制和蜂鸣器报警等功能实现原创 2025-12-05 20:44:31 · 1064 阅读 · 0 评论 -
CMSIS RTOS V1.0 核心函数全解析与实战指南
本文详细解析了CMSIS-RTOS V1.0的核心函数及其应用。作为ARM为Cortex-M系列微控制器设计的实时操作系统接口标准,CMSIS-RTOS提供了包括内核控制、线程管理、定时器、信号量、互斥量等在内的统一API。文章系统介绍了各类函数的功能、参数及返回值,如osKernelStart启动内核、osThreadCreate创建线程、osTimerCreate创建定时器等。通过掌握这些核心函数,开发者可以快速构建嵌入式实时应用,实现任务调度、同步互斥等功能,提高开发效率并降低不同RTOS间的移植难度原创 2025-11-22 16:46:50 · 616 阅读 · 0 评论 -
stm32记得喂狗
文章摘要:程序烧录后出现不断重启问题,排查发现是由于解锁芯片时未勾选WDG_SSW选项,错误启用了硬件看门狗功能,但未进行喂狗操作,导致芯片持续重启。该问题源于看门狗配置不当,通过调整软件设置即可解决。原创 2025-10-12 14:50:51 · 233 阅读 · 0 评论 -
stm32解锁芯片
摘要:STM32F103C8T6芯片在Keil中报错"FlashTimeout",提示需重置目标设备。解决方法为使用STM32 ST-LINK Utility工具,将ReadOutProtection选项改为Disabled并应用,即可成功解锁芯片。该操作可解决Keil下载程序时出现的Flash下载失败问题。原创 2025-10-12 14:19:23 · 275 阅读 · 0 评论 -
ESP8266 制作一个网页控制程序
ESP8266开发项目摘要:本项目使用NodeMCU开发板,配合SSD1306 OLED显示屏、SG90舵机、LED和按键实现物联网控制功能。硬件采用I2C接口连接OLED,PWM控制舵机,并实现按键触发和LED状态显示。通过WiFiManager实现自动配网,ESP8266WebServer提供网页控制界面,可远程设置舵机角度、控制LED和D0引脚状态。OLED实时显示舵机角度和D0状态。注意事项包括:舵机需单独5V供电并共地、OLED地址需匹配、D0引脚的特殊性等。项目集成了硬件控制、网络通信和可视化界原创 2025-10-03 22:40:54 · 1152 阅读 · 0 评论 -
stm32 hal库高级流水灯代码
摘要:该代码实现了6种LED灯光效果控制,使用PD4、PD5、PD6三个引脚控制LED。效果包括:1)流水灯(3LED循环点亮);2)双向追逐(来回移动);3)呼吸灯(轮流渐亮渐暗);4)随机闪烁(保证至少1个LED亮);5)渐变流水(带淡入淡出效果);6)同步闪烁(含快速闪动)。每个模式运行固定时间后自动切换,通过计数器控制效果速度和模式切换。采用状态机设计,使用全局变量跟踪当前模式和相关参数。原创 2025-09-26 14:01:11 · 235 阅读 · 0 评论 -
MPU6050 翻新模块rev 0x70 自检不通过解决
MPU6050 DMP初始化过程分析,包括正常版本和翻新版本的对比。正常版本DMP初始化成功,各传感器参数配置正确,自检通过。翻新版本在自检阶段失败(错误代码1),导致DMP初始化失败(错误代码8)。两版本在硬件版本(2 vs 7)和初始化结果上存在差异。文中提到可强制修改dmp库判断值,但建议谨慎使用该模块,因其偏移量较大。初始化过程涉及I2C总线、传感器参数配置、DMP固件加载等步骤,采用软件I2C实现,后续将移植硬件I2C。原创 2025-09-20 14:26:50 · 535 阅读 · 0 评论 -
MPU6050
摘要: MPU6050是一款集成3轴陀螺仪(±250°/s至±2000°/s量程)、3轴加速度计(±2g至±16g量程)及温度传感器的运动处理芯片,内置数字运动处理器(DMP)可硬件解算姿态角(横滚/俯仰/偏航),减轻主控负担。通过I²C接口(地址0x68/0x69)连接主控(如STM32),需初始化寄存器并校准零偏。数据融合采用互补滤波(权重0.98陀螺仪积分+0.02加速度计重力分量),解决陀螺仪漂移和加速度计动态干扰问题。偏航角需磁传感器辅助修正。实际应用中需注意安装避震、定期校准及固定采样间隔(如1原创 2025-09-20 10:08:45 · 684 阅读 · 0 评论 -
SPI - 总线协议
SPI是一种高速全双工同步串行通信接口,采用4线制(SCK、MOSI、MISO、CS)实现主从设备通信。其特点是通过CPOL(时钟极性)和CPHA(时钟相位)组合形成4种工作模式,通信双方必须模式一致。在STM32开发中,可通过CubeMX配置SPI参数并生成初始化代码,使用HAL库的HAL_SPI_Transmit()等函数实现数据传输,操作时需注意片选信号的控制时序。该接口广泛用于连接传感器、存储芯片等外设。原创 2025-09-20 09:25:39 · 637 阅读 · 0 评论 -
GigaDevice(兆易创新)GD25Q64CSJGR 64Mbit FLASH
该代码实现了基于STM32G070RBT6的SPI接口(PA12-MOSI、PA11-MISO、PA10-CS、PD8-SCK)与GD25Q64 Flash存储器的通信控制。主要功能包括:Flash设备选择/取消选择(CS控制)、命令发送与响应接收、忙状态检测、ID读取、写使能/解锁、扇区擦除(4KB)、页编程(256字节)和数据读取等操作。代码采用HAL库实现SPI通信,包含严格的地址对齐检查(扇区地址需4KB对齐、页地址需256B对齐)和操作时序控制(写操作前需使能,操作后需等待忙状态清除)。头文件定义原创 2025-09-05 23:33:30 · 337 阅读 · 0 评论 -
RTThread Vision Board开发资料
本文介绍了一个基于RT-Thread操作系统的嵌入式应用开发实例,实现了LED控制、ADC采样、按键中断和串口通信功能。系统通过ADC线程定期采集传感器数据,并将电压值通过消息队列传递给串口线程,以JSON格式输出。同时实现了按键外部中断控制和LED状态切换,主循环中LED1以1秒间隔闪烁。该设计展示了RT-Thread多线程、设备驱动、中断处理等核心功能的应用,为嵌入式系统开发提供了参考实例。原创 2025-08-12 21:12:21 · 140 阅读 · 0 评论 -
STM32 HAL PWM频率蜂鸣器
本文介绍了STM32中动态调整PWM频率的实现方法。通过解析定时器的PWM频率计算公式,给出了基于HAL库的频率更新函数Tim_Update_PwmFreq(),该函数通过计算新的自动重装载值(ARR)来设置目标频率,并保持50%占空比。文章详细说明了函数执行流程,包括停止PWM、更新ARR值、设置比较值和重启PWM等步骤,并提供了使用注意事项和扩展建议。示例代码展示了如何利用该函数实现简单的音乐播放功能,通过循环调用频率更新函数来输出不同音符。原创 2025-07-11 17:02:40 · 511 阅读 · 0 评论 -
MPU6050 模块使用和错误记录
本文介绍了MPU6050传感器使用中的常见问题及解决方法。主要内容包括:1)DMP库下载地址和版本选择(eMD6.12和5.1.3);2)新版模块可能无需初始化,但会出现"Unsupported software product rev"错误,需添加版本7支持;3)I2C通信问题,包括地址应为0x70(新版)或0xD0,以及IIC_Send_Ack函数修改建议;4)调试发现关闭I2C主机模式会导致数据读取失败。文中还提供了相关代码片段和问题参考链接。原创 2025-07-01 13:44:39 · 499 阅读 · 0 评论 -
STM32HAL 旋转编码器教程
摘要:该文介绍了一种时钟编码器的读取方法,通过判断TIM计数方向(__HAL_TIM_IS_TIM_COUNTING_DOWN)来调整累计值,顺时针旋转时(0)减少计数器值,逆时针(1)时增加。使用__HAL_TIM_GET_COUNTER获取当前计数值,每次旋转约1-2个计数。可通过__HAL_TIM_SET_COUNTER将计数器重置为0,用于判断单次旋转的计数变化。该方法直接操作定时器寄存器(TIMx->Instance->CNT),实现精确的旋转方向与步数检测。原创 2025-06-28 18:04:06 · 449 阅读 · 0 评论 -
DHT11 STM32 HAL驱动库 整数
摘要:该代码实现了一个STM32平台下的DHT11温湿度传感器驱动库。主要包含DHT11.h头文件定义数据结构和接口,以及DHT11.c源文件实现具体功能。通过GPIO单总线协议通信,提供初始化(DHT11_Init)和数据读取(DHT11_ReadData)函数,可获取温度(整数℃)和湿度(整数%RH)数据。使用时需自定义微秒延时函数delay_us,并包含超时检测和数据校验机制。示例代码展示了读取数据后根据阈值控制LED和OLED显示的逻辑。该驱动适用于STM32F1/F4系列MCU,需根据具体硬件调整原创 2025-06-27 15:50:13 · 300 阅读 · 0 评论 -
STM32G070x 单片机项目代码解析:基于 HAL 库的嵌入式系统开发
一个基于STM32的嵌入式系统项目架构。项目采用标准STM32工程结构,包含系统头文件、外设配置、用户变量定义、初始化和主程序等模块。系统配置了外部时钟(HSE)和PLL锁相环,通过SPI、TIM、UART等外设实现功能,包括LED控制、按键检测和OLED显示。主程序采用轮询方式处理LED状态切换、按键输入和显示更新等任务。该架构展示了STM32项目的基本开发流程和常用外设配置方法。原创 2025-06-25 12:32:08 · 454 阅读 · 0 评论 -
STM32 环境监测与控制系统的设计与实现
本文介绍了一个基于STM32F103微控制器的环境监测与控制系统设计。系统采用DHT11传感器采集温湿度数据,通过OLED显示环境参数,并支持用户通过按键设置阈值参数。系统具备PWM电机控制、状态指示和异常报警功能,可实现自动环境调节。硬件设计包含传感器模块、显示模块和控制模块,软件采用模块化架构实现数据采集、处理和显示功能。系统支持Flash存储阈值参数,具有掉电保护功能。设计重点解决了DHT11时序控制、OLED显示优化和按键处理等技术难点。该系统适用于智能家居、温室大棚等环境监测场景,未来可扩展无线通原创 2025-06-24 23:21:08 · 983 阅读 · 0 评论 -
STM32F4 RTThread error: macro “Error_Handler“ passed 1 arguments, but takes just 0
摘要:文章指出CubeMX生成的代码与RTThread的函数存在冲突,解决方法是在main.h文件中进行相应修改,然后在main.c中重新引用修改后的main.h文件即可解决冲突问题。该方法通过调整头文件引用顺序和内容来消除函数命名冲突。原创 2025-06-23 19:29:00 · 352 阅读 · 0 评论 -
RThread Studio STM32F407ZGT6 移植案例
【摘要】在STM32F407ZGT6移植RT-ThreadOS4.0.3时,需在CubeMX生成项目后新建SConscript文件,排除冲突文件并指定构建源文件。通过修改Src目录内容,使用__weak关键词重定义函数,移植其他库时需手动补充缺失的HAL库文件。关键步骤包括配置SConscript构建脚本、调整源文件包含关系及处理库依赖问题。原创 2025-06-23 17:58:04 · 398 阅读 · 0 评论 -
DS1307实时时钟模块的时间显示
摘要:该代码实现了基于DS1307实时时钟模块的时间显示和RGB灯控制功能。主要包含三个部分:(1) DS1307读写函数封装,支持BCD码与十进制转换;(2) 数码管时间显示处理,将时分秒数据分解为数码管显示缓冲;(3) RGB灯控制逻辑,通过按键切换不同显示模式和亮度档位,使用PWM调节实现呼吸灯效果。系统通过按键SW1-SW4控制LED闪烁模式、时间显示切换和RGB灯状态,具有生日日期循环显示功能。代码采用模块化设计,包含硬件抽象层和应用逻辑层。原创 2025-06-20 19:53:27 · 158 阅读 · 0 评论 -
STM32 HAL 初始化I2C启动DS1307
本文介绍了一个针对DS1307实时时钟模块的初始化函数,该函数通过验证用户自定义区域的4字节密码决定是否写入初始化数据。初始化配置包含时钟控制(1Hz方波输出)、初始时间(2021年1月1日00:00:00)和预设密码。文章指出原始代码存在时钟振荡器未启动的问题(秒寄存器CH位置1),并提供了改进方案:修改初始值为0x00,并在初始化后强制清除CH位。同时提醒注意用户自定义区域(0x08-0x0F)可能与其他功能的存储冲突风险。该方案兼顾了密码验证和时钟可靠性需求。原创 2025-06-19 22:22:44 · 549 阅读 · 0 评论 -
DS1307 读取时间示例代码 STM32 HAL
摘要:该代码实现了DS1307实时时钟(RTC)芯片的驱动功能,包含BCD码与十进制转换、初始化配置、时间读取和设置等功能。通过I2C接口通信,定义时间结构体DS1307_Time_t存储秒、分、时、日、月、年等数据。主要函数包括DS1307_Init(初始化)、DS1307_ReadTime(读取时间)和DS1307_WriteTime(设置时间),使用HAL库的I2C接口进行数据传输,并处理BCD格式与十进制格式的相互转换。代码结构清晰,包含头文件保护机制和详细的寄存器定义。原创 2025-06-11 20:21:59 · 189 阅读 · 0 评论 -
STM32G DMA串口发送接收
本文介绍了基于UART3和DMA的串口通信实现方法。系统通过串口接收RGB颜色命令(格式如"R:255,G:128,B:64"),利用空闲中断(IDLE)触发数据处理,采用DMA方式完成数据传输。解析过程使用sscanf提取RGB值并验证其有效性(0-255范围),成功则存储到rgb_color数组并返回"OK",失败返回"ERROR"。关键技术包括:IDLE中断实现不定长数据捕获、DMA传输降低CPU负载、sscanf格式化解析命令。该系统实现了原创 2025-06-11 08:42:19 · 645 阅读 · 0 评论 -
STM32 CubeMX时钟配置PWM信号输出
PWM(脉宽调制)通过调节方波的占空比控制输出功率。STM32中,定时器与CCR寄存器协同工作实现PWM:定时器计数至ARR值后复位,CCR寄存器存储比较值,当计数值小于CCR时输出高/低电平(取决于PWM模式)。示例代码展示了如何配置TIM3通道1生成50HzPWM,频率由ARR和PSC决定,占空比由CCR/ARR比值控制。通过修改CCR值可动态调整占空比,实现对电机、LED等设备的精确控制。原创 2025-05-24 00:08:11 · 1244 阅读 · 0 评论
分享