自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 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 195

原创 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 196

原创 STM32 CubeIDE(1.18.0) LED闪烁

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

2025-12-11 17:30:20 209

原创 安装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 123

原创 STM32 备份寄存器

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

2025-12-07 19:49:26 333

原创 STM32 PWM驱动电机

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

2025-12-06 19:29:20 219

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

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

2025-12-05 19:30:24 159

原创 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 191

原创 TIM编码器接口

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

2025-12-01 14:18:16 370

原创 STM32 定时器(Timer)

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

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

原创 TIM输入捕获

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

2025-11-28 20:44:48 306

原创 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 371

原创 STM32 TIM输出比较

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

2025-11-25 20:03:59 209

原创 STM32 标准库常用函数

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

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

原创 STM32 常用数据类型

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

2025-11-23 17:38:14 417

原创 STM32旋转编码计次

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

2025-11-21 23:28:50 216

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

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

2025-11-18 14:26:21 277

原创 OLED有机发光二极管

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

2025-11-17 15:35:16 260

原创 按键控制LED灯亮灭

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

2025-11-16 15:43:31 818

原创 LED闪烁功能代码详解

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

2025-11-15 14:00:56 373

原创 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 303

原创 STM32 读写备份寄存器

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

2025-09-04 11:52:03 364

原创 硬件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 469

原创 软件SPI读写W25Q64

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

2025-08-26 15:30:01 145

原创 STM32 硬件I2C读写MPU6050

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

2025-08-22 16:36:58 670

原创 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 263

原创 STM32 DMA+AD多通道

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

2025-08-13 14:56:53 335

原创 STM32 DMA数据转运

MYDMA_Init :配置 DMA1_Channel1 通道,指定外设基地址( ADDA )、内存基地址( ADDB )、数据宽度(字节)、传输方向(外设到内存 )、是否自增(外设和内存地址均使能自增 )、传输模式(普通模式 )、是否内存到内存(使能 )、优先级(中等 ),并关闭 DMA 通道等待触发。MYDMA_Transfer :先关闭 DMA 通道,设置传输数据长度( MYDMA_Size ),再使能通道,最后等待传输完成(轮询 TC 标志 )并清除标志。

2025-08-11 16:24:29 209

原创 STM32 AD单通道

通过 ADC_InitTypeDef 设置 ADC 为 独立模式、数据 右对齐、不使用外部触发、单次转换模式(非连续)、只转换 1 个通道( ADC_NbrOfChannel = 1 ),最后使能 ADC1。调用 AD_GetValue() 获取 ADC 转换的数字量,再通过公式 Voltage = (float)ADValue / 4095 * 3.3 换算成实际电压(3.3V 是 STM32 参考电压)。AD_Init(void) 函数:ADC 初始化。

2025-08-10 12:00:00 170

原创 STM32 串口控制电机运行系统

通过串口接收发送的指令,解析指令后控制电机的运行状态(启动、停止、正转、反转、调速),并在OLED显示屏上显示程序状态。本项目基于STM32单片机,通过串口通信接收指令,实现对电机的启动/停止、正反转、速度调节等功能。本项目实现了串口指令→电机控制的完整流程,涵盖硬件驱动、中断处理、指令解析等核心知识点。电机控制功能:启动(默认速度50)、停止、正转、反转、自定义调速。serial_sendByte作用:通过串口发送一个字节的数据。serial_sendArray作用:通过串口发送一个数组的数据。

2025-08-07 16:16:00 510

原创 STM32 串口收发HEX数据包

代码实现了一个“按键触发发送、OLED显示收发数据”的串口通信系统,数据包格式为 0xFF + 4字节数据 + 0xFE ,适合短距离、低速率的设备间通信(如与传感器、上位机交互)。中断配置:使能“接收数据非空(RXNE)”中断,配置NVIC优先级(抢占1,子优先级1,分组2),确保中断能正常响应。PA9配置为复用推挽输出(AF_PP)(串口发送脚需复用功能),PA10配置为上拉输入(IPU)(避免接收脚浮空)。实现串口初始化、发送(字节/数组/字符串/数字/格式化数据/数据包)、接收中断处理等底层功能。

2025-08-04 15:31:48 242

原创 STM32 串口发送

支持多种数据位长度(如8位、9位)、停止位配置(1位、2位)以及校验方式(奇校验、偶校验、无校验);还拥有多种中断和DMA(直接内存访问)模式,能够满足不同场景下的数据传输需求,无论是简单的查询方式传输,还是高效的中断或DMA传输,都能轻松应对。在初始化时,需要将这些引脚配置为复用推挽输出模式(对于TX引脚)或浮空输入模式(对于RX引脚),以满足串口通信的电气特性要求。使用 USART_Init 函数对串口的各项参数进行配置,包括波特率、数据位长度、停止位、校验方式以及通信模式(仅发送、仅接收或收发模式)

2025-08-03 16:50:20 487

原创 PWM1模式测频率占空比

文章摘要:本文介绍了STM32定时器输入捕获和PWM输出的配置方法。输入捕获部分包括TIM3和GPIOA初始化、输入模式配置、捕获参数设置及频率/占空比计算函数IC_GetFreq()和IC_GetDuty()的实现。PWM输出部分涉及TIM2时基结构配置、输出比较PWM模式设置,以及通过PWM_setCompare1()和PWM_SetPrescaler()函数调节占空比和频率。文中详细说明了各功能模块的初始化流程和关键计算公式。(148字)

2025-08-02 14:58:07 365

原创 STM32 PWM驱动舵机

通过按键控制舵机旋转角度,每次按键按下,舵机角度增加30°,到达180°后重置为0°,同时OLED屏幕显示当前角度。启用TIM2定时器和GPIOA时钟,配置PA1为复用推挽输出(PWM信号输出脚)时钟预分频(PSC)=72-1,计数器周期(ARR)=20000-1。舵机常用脉宽范围:0°对应500μs,180°对应2500μs。PWM频率为:72MHz/(72*20000)=50Hz。配置TIM2的通道2为PWM1模式,初始占空比为0。将角度映射到500-2500μs的脉宽。

2025-07-30 13:36:52 238

原创 STM32定时器外部时钟

通过 RCC_APB1PeriphClockCmd 和 RCC_APB2PeriphClockCmd 函数分别使能TIM2定时器和GPIOA的时钟,为后续的定时器和GPIO配置做好准备。GPIOA的第0引脚配置为上拉输入模式,用于接收外部时钟信号。

2025-07-28 15:21:13 170

原创 STM32单片机 定时器定时中断

定时中断是指当定时器计数到设定值时,产生一个中断请求,CPU响应中断并执行相应的中断服务程序。通过定时中断,我们可以实现周期性的任务调度、精确的时间控制等功能。

2025-07-27 16:43:34 238

原创 STM32对射式红外传感器计次

对射式红外传感器由红外发射器和接收器两部分组成。发射器持续发射红外光,当有物体经过时,会遮挡红外光,导致接收器接收到的光强发生变化。通过检测这种变化,我们可以判断是否有物体经过,从而实现计数功能。配置GPIO的外部中断,设置为下降沿触发。当传感器检测到物体经过时,输出信号由高电平变为低电平,触发中断。将连接传感器的GPIO引脚配置为输入模式,并启用上拉电阻,以确保在没有物体经过时,引脚保持高电平。在中断服务函数中,检测到中断触发后,计数值加1,并清除中断标志。

2025-07-25 16:55:47 192

原创 STM32单片机OLED显示

在软件上使用OLED显示屏需要用到相关的程序源码以调用相关函数实现功能。在硬件上需要正确的接线,连接OLED显示屏。

2025-07-24 15:36:34 180

原创 STM32 LED闪烁 LED流水灯 蜂鸣器

设置GPIOA A0高低电平配合延时函数实现LED闪烁。

2025-07-21 15:47:20 222

原创 STM32 创建项目工程文件

找到在网盘上下载STM32入门教程资料的固件库文件夹打开Libraries, CMSIS, CM3,DeviceSupport, ST,STM32F10x,startup,arm 找到stm32的启动文件,将它们复制到项目文件夹里面并且在里面新建文件夹start。在keil将Target 1下的文件改名为start然后右键单击它选择添加已存在的文件到组里面来。然后找到新建的项目文件里面的start,将文件类型更改为All就能看到所有类型的文件。添加你所对应的启动文件,再吧所有的.c .h文件添加进来。

2025-07-20 16:19:01 175

空空如也

空空如也

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

TA关注的人

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