自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 收藏
  • 关注

原创 智能呼吸灯

智能呼吸灯:多色渐变 + 按键模式切换」在原有 红→绿→蓝→绿→红 循环呼吸的基础上,加入 按键控制,实现 多种呼吸模式切换。✅ 任务目标保留原有的 RGB 呼吸循环(周期约 6秒完成一个完整红-绿-蓝-绿-红)增加一个物理按键(如板载 KEY)每按一次按键,切换一种呼吸模式:模式 0:原版循环(红→绿→蓝→绿→红)模式 1:单色呼吸(只红灯呼吸)模式 2:心跳模式(快速亮 → 慢速灭,模拟心跳)模式 3:关闭(LED 全灭)

2026-03-17 20:22:37 41

原创 精准呼吸灯(PWM + 定时器)

目标:用 TIM3 产生 PWM,让 LED 实现“呼吸”效果(亮度渐变)输出:LED 平滑循环,周期约 2 秒红->绿->蓝->绿->红循环。新建项目File → New → STM32 Project。启用定时器3PWM通道,在主循环中调用呼吸灯更新函数。选择您的MCU型号(如STM32F103C8T6)非阻塞延时(用 SysTick 或主循环计数)精准呼吸灯(PWM + 定时器)全局变量定义,设置LED颜色。使用正弦波实现更平滑的呼吸。定时器 PWM 模式配置。配置系统时钟为72MHz。

2026-03-16 21:11:45 30

原创 STM32 CubeIDE 读取模拟信号电压值

3. 依次往下:bit9 → bit8 → bit7 → bit6 → bit5 → bit4 → bit3 → bit2 → bit1 → bit0。ADC模数转换器:把连续的模拟信号(电压、电流、温度、声音等),转成离散的数字信号(二进制代码),是模拟世界与数字系统的桥梁。平常的电信号分为数字信号和模拟信号,ADC有许多实现模拟数字转换的方法,这里使用的是逐次逼近法。步骤:从高位到低位,一位一位试,大就留1,小就清0,全部试完,数字就出来了。12次比较后,12 位数字就确定了。

2026-02-11 16:13:13 66

原创 STM32 CubeIDE 通过PWM占空比控制舵机角度

启动TIM1编码器模式来捕获编码器脉冲HAL_TIM_Encoder_Start(&htim1, TIM_CHANNEL_ALL);新建工程,在SYS将Debug模式设置为Serial Wire,在RCC中设置高速时钟源为晶振,时钟时钟里时钟主频为72HMz。启动TIM4通道3的PWM输出模式HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_3);PWM输出更新:通过 __HAL_TIM_SET_COMPARE 函数更新TIM4通道3的比较值,改变PWM输出。

2026-02-08 15:00:20 146

原创 STM32 CubeIDE 超声波测距

在TIM1将时钟源设置为内部时钟源,将通道3设置为输入捕获直接模式(Input Capture direct mode)将通道4设置为输入捕获间接模式(Input Caputre indirect mode)。在输入捕获通道3默认保持上升沿检测,在输入捕获通道4修改为下降沿检测。在main函数中初始化OLED函数 ,启动定时器计数,启动输入捕获通道3通道4函数。在输入捕获回调函数首先 if 一下进入中断的是不是定时器1,在判断一下触发回调函数的是不是通道4。并且勾选为每个外设单独生成单独的.c/.h文件。

2026-02-04 19:44:04 467

原创 STN32 CubeIDE 定时器

设置开启定时器Internal Clock,来到定时器下方配置对预分频器(Prescaler)进行设置为7200分频就可以填入7199或7200-1。

2026-01-31 15:24:30 98

原创 测试室内温湿度并在OLED上显示

在Proiect Manager下载代码生成器Code Generator 勾选为每个外设生成一对.c/.h文件。将OLED屏幕驱动的font,oled .c/.h文件复制到Src/Inc文件夹。将AHT20驱动文件的aht20.c/.h文件复制到Src/Inc文件夹。调用OLED_Init();在取模助手的驱动库下载oled屏幕驱动和AHT20驱动。清空OLED的显存OLED_NewFrame();最后刷新屏幕OLED_ShowFrame();

2026-01-28 18:38:16 329

原创 STM32 CubeIDE 控制OLED显示屏

/绘制一个填充三角形。// 绘制一个填充圆。

2026-01-27 13:14:14 789

原创 IIC通信与温湿度传感器AHT20

在项目游览的I2C项目下的inc与src的文件夹上右键新建Header Filer(头文件),Source File(源代码文件)。为了给AHT20写一个驱动文件来到项目管理,代码生成器勾选上为每个外设生成一对.c/.h文件。最后代码实现效果实时监测室内温湿度。新建一个工程,打开USART2。点击I2C1配置为IIC模式。根据AHT20数据手册。

2026-01-22 16:50:01 203

原创 STM32 CubeIDE 使用蓝牙模块实现手机控制LED灯

开启UART3异步模式,配置波特率9600。开启USART3中断,添加DMA 通道。将蓝牙模块连接到开发板上注意引脚对应。

2026-01-21 17:23:50 383

原创 stm32 CubeIDE DMA模式的串口收发

DMA(Direct Memory Access)模式允许外设(如串口)直接与内存交换数据,无需CPU介入。在串口通信中,启用DMA可降低CPU。把启动串口函数改为ReceiveToldle。将回调函数改为RxEventCallback。配置发送与接收DMA函数。

2026-01-21 15:50:59 226

原创 STM32 CubeIDE 使用串口中断模式

将处理逻辑移入到HAL_UART_RxCpltCallback。串口中断模式解决了串口操作一直占用CPU的问题。使用串口中断模式只需要勾选开启相应串口的中断。在发送和接收函数后加_IT后缀。

2026-01-19 15:41:36 239

原创 STM32 CubeIDE 串口通信

串口通信(Serial Communication)是一种通过单根数据线逐位传输数据的通信方式,常用于设备间的低速数据交互。在Connectivity的USART2里设置异步通信(Asyncharonous)手动设置下载调制器接口,防止相关接口关闭,出现下载一次程序后就无法下载程序的情况。在System Core 下的SYS中将Debug设置为Serial Wire。使用串口通信实现LED亮灭。

2026-01-18 15:54:00 203

原创 STM32 CuberIDE 中断

当特定事件(如外部信号、定时器溢出、数据接收完成等)触发中断时,处理器暂停当前任务,跳转到对应的ISR执行处理逻辑,完成后恢复原任务。运行以上代码后发现LED_RED延时亮灭可以实现,而LED_GREEN 按下KEY1按键实现亮灭无法实现。打开Core文件 找到Src下的stm32f1xx_it.c 在void EXTI15_10_IRQHandler(void)函数里写入命令。实现LED_RED延时亮灭,LED_GREEN 按下KEY1按键实现亮灭。至此通过外部中断实现按键控制LED的函数就完成了。

2025-12-19 14:40:25 249

原创 STM32 CubeIDE 按键控制LED

抬起KEY1,LED_GREEN亮。按一次KEY2,LED_RED亮。按一次KEY2,LED_RED灭。STM32CubeIDE(版本 ≥ 1.8.0)实现功能:按下KEY1,LED_GREEN灭。STM32F103C8T6 核心板。

2025-12-15 21:07:31 238

原创 STM32 CubeIDE(1.18.0) LED闪烁

在STM32微控制器开发中,LED闪烁是一个基础实验,帮助理解GPIO(通用输入输出)操作和定时控制。使用STM32 CubeIDE可以轻松配置硬件和编写代码来实现LED闪烁。

2025-12-11 17:30:20 245

原创 安装STM32 CubeIDE(1.18.0) 并点亮LED灯

点击help >STM32Cube updates Connection to myST登录你在官网创建的账号(登录失败多尝试几次)插入驱动(如果需要更新驱动点击help > ST-LINK更新(确保ST link进入dfu模式才可以更新驱动))搜索STM32 CubeIDE官网找到适配Windows的产品型号(需要登录账号,没有通过电子邮件注册)下载保存。对需要点亮的引脚(PA7)设置推挽输出:GPIO_Mode_Out_PP。选择你购买的板子型号点击右下角的型号 ,点击next。

2025-12-09 14:27:23 178

原创 STM32 备份寄存器

供电方式:主电源VDD正常时,BKP由VDD供电。当TAMPER引脚触发防篡改事件(电平变化或脉冲)时,可配置BKP自动清除部分或全部备份寄存器数据,或触发系统复位,保护敏感数据。部分BKP寄存器可配置为RTC闹钟/唤醒事件的触发输出口(如BKP_DR1~DR10可映射到TAMPER引脚)。存储容量:不同型号差异不大,典型为42个16位寄存器(共84字节),仅支持存储少量关键数据(非海量存储)。4. 敏感数据防篡改:配合TAMPER引脚,实现数据防篡改保护(如金融设备、工业控制中的关键参数)。

2025-12-07 19:49:26 391

原创 STM32 PWM驱动电机

PWM(脉宽调制)是一种通过调节数字信号占空比来控制平均输出电压的技术。在电机驱动中,PWM通过调节占空比来控制直流电机转速(0%停转,100%全速),配合GPIO实现正反转控制,还可用于软启动/制动。STM32可通过硬件定时器(设置ARR周期和CCR占空比)或软件中断方式生成PWM信号,适用于直流电机、舵机和步进电机等控制场景。

2025-12-06 19:29:20 324

原创 STM32单片机光敏传感器控制蜂鸣器

输出控制: 根据判断结果,STM32通过其GPIO(通用输入输出)引脚输出控制信号:当光照条件满足预设的触发条件(如过暗)时,控制GPIO输出高电平或低电平(具体取决于驱动电路设计)。驱动执行: 蜂鸣器(通常是无源蜂鸣器需要PWM驱动,或有源蜂鸣器只需要电平控制)连接到STM32的GPIO引脚。信号采集与转换: STM32的ADC(模数转换器)模块读取光敏传感器产生的模拟电压信号,并将其转换为数字量。功能:初始化蜂鸣器对应的GPIO引脚,并提供“开/关/翻转”蜂鸣器的接口。

2025-12-05 19:30:24 185

原创 STM32 单片机 按键控制led灯亮灭

按键通常连接有上拉或下拉电阻,以确保在未按下时引脚有确定的电平(高或低)。开启GPIOA的时钟,将GPIOA的Pin1、Pin2配置为推挽输出模式(输出电平控制LED亮灭),并设置输出速度为50MHz;将GPIOB的Pin1、Pin11配置为上拉输入模式(GPIO_Mode_IPU),输出速度设为50MHz。等待按键松开(电平恢复高电平)后,再延时20ms消抖,最终将 KeyNum 设为1。若当前为低电平(0),则调用 GPIO_SetBits 置高,LED熄灭。按键初始化( Key_Init 函数)

2025-12-04 16:55:49 218

原创 TIM编码器接口

TIM(Timer)编码器接口是嵌入式系统中用于处理增量式编码器信号的模块,常见于STM32等微控制器。其主要功能包括正交解码、计数方向识别、自动重装载等,适用于电机控制、位置测量等场景。编码器接口可接收增量正交编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置、旋转方向和旋转速度。

2025-12-01 14:18:16 414

原创 STM32 定时器(Timer)

STM32 的定时器是一个非常强大且灵活的外设,不仅能做简单的定时,还能实现 PWM、输入捕获、输出比较、编码器接口等多种功能。

2025-11-29 19:40:37 566 2

原创 TIM输入捕获

TIM(Timer,定时器)输入捕获(Input Capture)是微控制器(如STM32等)中定时器模块的一项重要功能,主要用于,比如脉冲宽度、周期、频率、相位差等。

2025-11-28 20:44:48 346

原创 STM32 PWM驱动LED呼吸灯

通过TIM_SetCompare1函数设置捕获比较寄存器(CCR)的值,控制PWM占空比。循环实现PWM占空比从0%逐渐增加到100%,再从100%逐渐减小到0%预分频系数(PSC):720-1,将72MHz系统时钟分频为100kHz。自动重装载值(ARR):100-1,使PWM周期为1ms(频率1kHz)配置GPIOA的Pin0为复用推挽输出(用于PWM信号输出)配置TIM2的通道1为PWM1模式,初始占空比为0。使能TIM2定时器和GPIOA的时钟。

2025-11-27 17:21:54 401

原创 STM32 TIM输出比较

输出比较功能就是定时器将CNT计数器寄存器与某个预设的CCR寄存器进行比较,从而对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形。

2025-11-25 20:03:59 236

原创 STM32 标准库常用函数

按模块分,STM32 标准库常用函数有GPIO、USART、TIM、ADC、SPI、I2C 等。功能:初始化 GPIO 口的模式(输入/输出/复用/模拟)、速度、上下拉等。功能:配置 SPI 模式(主/从)、数据大小、极性、相位等。功能:初始化串口波特率、数据位、停止位、校验位等。功能:配置定时器的预分频、计数模式、自动重载值等。功能:配置 ADC 分辨率、转换模式、通道顺序等。功能:配置 I2C 时钟频率、地址模式等。功能:配置 ADC 通道和采样时间。功能:发送/接收一个字节。一、GPIO 常用函数。

2025-11-24 18:06:59 958 1

原创 STM32 常用数据类型

uint16_t 16 无符号 16 位整数 定时器计数值、短周期计数。int32_t 32 有符号 32 位整数 通用计算、较大数值存储。uint32_t 32 无符号 32 位整数 寄存器访问、长周期计数。uint64_t 64 无符号 64 位整数 时间戳、大数据存储。

2025-11-23 17:38:14 502

原创 STM32旋转编码计次

实现对编码器脉冲的计数。

2025-11-21 23:28:50 232

原创 OLED 显示屏(I²C 接口)驱动程序

一.引脚宏定义使用使用采用方式通信。

2025-11-18 14:26:21 351

原创 OLED有机发光二极管

是一种利用有机半导体材料在电流驱动下发光的显示技术。优点:显示速度快,可视角度大,可柔性、轻薄,功耗相对低缺点:,寿命比 LCD 短(蓝光衰减快),成本较高(尤其大尺寸),亮度在强光下不如 LCD。

2025-11-17 15:35:16 298

原创 按键控制LED灯亮灭

初始化 GPIOA 的 Pin1 和 Pin2 为推挽输出,并默认熄灭 LED(高电平)。:初始化 GPIOB 的 Pin1 和 Pin11 为上拉输入,用于检测两个独立按键。按键按下时,引脚接地 → 读取为低电平(逻辑 0)。,按键未按时引脚为高(1),按下后接地为低(0)。读取当前 PA1 的输出状态,然后取反,实现。

2025-11-16 15:43:31 870

原创 LED闪烁功能代码详解

/ 延时 0.5s。设置输出模式下的最大翻转速度(仅对输出有效,要求不高时一般设置为50MHz)指定要配置的引脚( GPIO_Pin_0 ~ GPIO_Pin_15)使用 GPIO_ResetBits / GPIO_SetBits。// 第二组:使用 GPIO_WriteBit。的结构体变量,用于配置 GPIO 的各项参数。设置引脚的8种工作模式(输入/输出/复用等)

2025-11-15 14:00:56 391

原创 GPIO通用输入输出

输入模式下可读取端口的高低电平或电压,用于读取按键输入,外接模块电平信号输入,ADC电压采集,模拟通信协议接收数据等。输入模式下可控制端口输入高低电平,用以驱动LED,控制蜂鸣器,模拟通信协议输出时序等。内部上拉电阻使能,无外部信号时默认高电平:外部拉低,引脚为低电平。浮空输入:GPIO_Mode_IN_FLOATING。复用推挽输出:GPIO_Mode_AF_PP。复用开漏输出:GPIO_Mode_AF_OD。推挽输出:GPIO_Mode_Out_PP。开漏输出:GPIO_Mode_Out_DD。

2025-11-14 15:56:30 341

原创 STM32 读写备份寄存器

在 while循环中当检测到按键值 KeyNum == 1 时,将数组 ArrayWrite 的两个元素分别加 1,然后通过 BKP_WriteBackupRegister 函数将这两个元素写入备份寄存器 BKP_DR1 和 BKP_DR2 ,同时在 OLED 屏对应位置显示当前要写入的十六进制数据。这样即使单片机掉电,备份寄存器中的数据也能保留,实现了数据的掉电保存功能,下次上电后仍可读取到之前保存的数据。

2025-09-04 11:52:03 400

原创 硬件SPI读写W25Q64

在 W25Q64_ReadID 函数中,通过 MYSPI_Start() 使能 SPI 通信(拉低片选信号),然后依次发送读取 ID 的命令 W25Q64_JEDEC_ID ,并接收 MID 和 DID,最后通过 MYSPI_Stop() 停止 SPI 通信(拉高片选信号)。W25Q64_Init() 内部初始化自定义的 SPI 通信模块,包括 GPIO 引脚配置(如设置 SPI 相关引脚的模式、速度等)和 SPI 接口的参数配置(如主从模式、数据方向、数据大小、时钟极性、相位等)。

2025-08-30 15:48:49 517

原创 软件SPI读写W25Q64

初始化时,需配置 GPIO 模式(如推挽输出、上拉输入),并设置初始电平(如 MYSPI_W_SS(1);初始化片选为高电平,释放从机;初始化时钟为低电平 ) ,为通信做准备。W25Q64 通过指令集完成读写、擦除、ID 读取等操作。

2025-08-26 15:30:01 163

原创 STM32 硬件I2C读写MPU6050

本文代码基于 STM32 单片机,通过 I2C 总线驱动 MPU6050 六轴传感器(集成加速度计与陀螺仪),实现传感器初始化、ID 读取、原始数据采集,并借助 OLED 显示屏实时展示加速度(AccX、AccY、AccZ)与角速度(GyroX、GyroY、GyroZ)信息,为姿态检测、运动监测等应用提供基础数据支撑。通过宏定义传感器内部寄存器地址,简化代码中寄存器操作,避免硬编码,提升可读性与可维护性。发送寄存器地址、写入数据,通过 MPU6050_WaitEvent 等待通信完成。

2025-08-22 16:36:58 693

原创 STM32 软件I2C读写MPU6050

实现 I2C 总线的启动( MYI2C_Start )、停止( MYI2C_Stop )、数据发送( MYI2C_SendByte )、接收( MYI2C_ReceiveByte )及应答( MYI2C_SendAck 、 MYI2C_ReceiveAck )等操作。MPU6050_WriteReg 、 MPU6050_ReadReg 实现对 MPU6050 寄存器的读写。MPU6050_GetID 获取传感器 ID 用于设备校验。MPU6050_Init 完成传感器初始化配置。

2025-08-16 15:24:45 283

原创 STM32 DMA+AD多通道

AD_Init 函数完成 ADC 时钟、工作模式、通道及采样时间配置, AD_GetValue 函数通过软件触发 ADC 转换,读取多通道数据并存储,为后续显示提供数字量。借助 STM32 单片机,搭配多通道 ADC(模拟 - 数字转换器 ),实现对多路模拟信号的采集。采集到的数据经处理后,通过 OLED 显示屏显示。

2025-08-13 14:56:53 350

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除