自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 野火STM32_HAL库版课程笔记-I2C介绍

最上面的时序图,描述了主机向从机写入数据的过程。S:起始信号。表示通信开始。:从机地址。主机发送要通信的从设备地址。R/W:读写位。此处为'0',表示写操作。A:应答信号。从机收到地址和读写位后,拉低总线表示应答。DATA:数据。主机发送数据字节。A / A̅:应答/非应答。每发送一个字节数据,接收方都需要发送一个应答位。最后一个字节传输完后,可以是应答也可以是非应答。P:停止信号。表示通信结束。

2026-05-11 23:32:40 446

原创 野火STM32_HAL库版课程笔记-DWT应用与DHT11温湿度传感器

本文介绍了基于STM32的DHT11温湿度传感器应用开发。主要内容包括:1)DHT11模块的单总线通信协议解析,详细说明了数据格式和通信时序;2)硬件连接方案,将DHT11数据引脚连接到STM32的GPIOB12;3)软件实现,通过DWT精确计时实现40us级信号检测,完成数据读取和校验;4)应用层设计,实现温湿度数据的周期性采集和串口打印输出。系统采用模块化设计,包含底层驱动和应用层代码,实测可稳定输出温湿度数据,并能实时响应环境变化。

2026-05-10 15:37:48 519

原创 野火STM32_HAL库版课程笔记-DWT基础应用与获取程序运行时间Debug练习(上)

DWT 是 一个内核外设DWT 用于系统调试和跟踪DWT 中的寄存器 CYCCNT 记录内核时钟运行个数CYCCNT 精度非常高(可以达到纳秒, HAL_Delay 是毫秒级, TIM 定时器是微秒级)其几乎不受任何的中断和代码影响 (因为依赖的是硬件计数器)

2026-04-10 15:59:17 264

原创 野火STM32_HAL库版课程笔记-手动建立工程模板与CubeMX后续用法(重要)

本文介绍了手动建立STM32工程模板的完整流程。首先强调了不依赖CubeMX工具的重要性,然后详细说明了工程目录结构,包括Doc文档、Libraries库文件和User用户代码等关键目录。接着给出了工程创建步骤:新建文件夹、拷贝必要文件、设置Keil工程框架、添加分组文件并进行魔术棒配置。最后提供了点灯测试代码,重点说明了STM32外设时钟需手动开启的特性(如__HAL_RCC_GPIOA_CLK_ENABLE()),并给出了GPIO配置和翻转LED的示例。

2026-04-06 18:09:49 166

原创 野火STM32_HAL库版课程笔记-TB6612FNG驱动有刷电机

摘要:本文介绍了使用STM32通过PWM控制有刷电机的实现方法。采用TB6612FNG驱动模块,通过TIM3输出PWM信号控制电机转速(占空比20%-80%),并用GPIO控制电机方向(正转/反转)。系统包含两个按键:KEY1切换速度模式(低速20%/高速80%),KEY2切换旋转方向。重点说明了驱动电路的安全注意事项,严禁同侧MOSFET直通导致短路。实验结果表明,该系统能稳定控制电机转速和转向。

2026-04-03 23:11:10 729

原创 野火STM32_HAL库版课程笔记-TIM通道捕获应用之超声波测距

本文介绍了超声波测距模块的实现方法。通过定时器输入捕获模式,使用通道2直接捕获上升沿、通道1间接捕获下降沿,计算高电平持续时间。关键配置包括:TRIG引脚输出10μs触发信号,定时器计数周期需大于33ms(模块最远测量时间),预分频设置为72-1。程序通过计算上升沿和下降沿的时间差,结合声速(340m/s)计算距离。实验现象显示,当改变模块距离时,串口输出的距离值会相应变化。该方法实现了非接触式距离测量,适用于各类测距应用场景。

2026-04-01 19:13:47 480

原创 野火STM32_HAL库版课程笔记-TIM通道捕获应用之编码器模式

摘要:本文介绍了STM32定时器的输入捕获功能在编码器模式下的应用。通过分析TIM高级定时器框图,详细说明了从信号输入到捕获处理的五个阶段流程。重点阐述了EC11编码器模块在STM32中的实现方法,包括硬件配置(TIM3设置为EncoderModeTI1andTI2)、GPIO设置(PA8上拉输入)和关键函数使用(如HAL_TIM_Encoder_Start)。程序实现了编码器旋转方向判断(通过__HAL_TIM_IS_TIM_COUNTING_DOWN检测)、位置计数、静止状态检测(2秒无动作判断)和按钮

2026-03-31 22:48:25 556

原创 野火STM32_HAL库版课程笔记-TIM触发ADC采集

摘要:本文介绍了STM32微控制器中TRGO信号(触发输出)的功能与应用,重点演示了通过定时器TIM3周期性触发ADC1采集芯片内部温度的实现方法。系统配置TIM3每500ms产生TRGO信号触发ADC转换,将原始值转换为电压后再计算温度值,最终通过USART1串口输出。该方案利用硬件触发实现了精确的周期性数据采集(0.5秒间隔),适用于对时序要求严格的温度监测等应用场景。程序运行时会先进行ADC校准和传感器稳定,随后持续输出温度数据,通过手指接触芯片可观察到温度变化。

2026-03-29 09:57:11 364

原创 野火STM32_HAL库版课程笔记-TIM通道输出应用之PWM实现呼吸灯

本文介绍了基于STM32的PWM呼吸灯实现方法。通过配置TIM2定时器的3个PWM通道(PA1、PA2、PA3),设置预分频为72-1,计数周期为1000-1,并将通道极性设为低电平点亮LED。程序中使用变量pwm_val控制占空比(0-1000),通过调整该值实现LED亮度渐变。主循环中每5ms改变一次占空比,当达到上限或下限时反转变化方向,从而形成呼吸灯效果。最终成功实现了3个LED同步的平滑呼吸效果。

2026-03-28 23:18:39 100

原创 野火STM32_HAL库版课程笔记-TIM通道输出应用之PWM控制舵机

这篇文章介绍了PWM(脉宽调制)的工作原理及其在舵机控制中的应用。主要内容包括: 详细解析了PWM模式1和模式2的工作原理,通过计数器与比较值的不同关系实现电平变化; 提供了舵机控制的代码实现,包括初始化设置、角度调节(通过按键控制)和延时处理; 代码中定义了舵机角度范围(-90°到+90°),通过改变PWM占空比来控制舵机转动,每次按键调整45°并加入防抖延时。

2026-03-28 17:39:26 262

原创 野火STM32_HAL库版课程笔记-TIM高级定时器基础中断应用

摘要:本文详细介绍了STM32高级定时器TIM1的配置与应用。重点解析了定时器的6个核心功能模块:时钟源选择、触发控制、时基单元、输入捕获、输出比较及刹车功能。通过代码示例展示了如何配置TIM1实现两种不同频率(100ms和1s)的中断控制LED闪烁,包括时钟源选择、预分频器设置、自动重装值修改等关键参数配置。实验现象表明,通过按键可切换定时器工作模式,实现LED不同频率的闪烁效果。该方案为STM32定时器的典型应用提供了参考实例。

2026-03-26 22:12:15 515

原创 野火STM32_HAL库版课程笔记-TIM通用定时器基础中断应用

摘要: STM32定时器分为高级、通用和基本三类,其中TIM1~4定时器均为16位计数器。本文以TIM2为例,演示了通用定时器的基础中断应用。通过配置预分频系数7200-1和自动重载值1000-1,实现100ms定时中断。使用HAL库函数控制定时器启停,并通过按键切换100ms和1000ms两种闪烁模式。代码展示了中断回调函数实现LED灯状态切换,以及动态修改ARR值改变定时周期的方法。实验现象为按键可切换LED的闪烁频率。

2026-03-24 21:31:44 605

原创 野火STM32_HAL库版课程笔记-空气、烟雾传感器公式换算

本文介绍了使用STM32通过ADC+DMA方式采集MQ135空气质量传感器和MQ2烟雾传感器的数据,并转换为实际浓度值的方法。系统采用12位ADC采集传感器电压信号,通过公式换算得到传感器电阻值,再利用y=ax^b的经验公式计算气体浓度ppm值。程序实现了500ms采样间隔,通过串口输出实时电压值和计算后的浓度数据,并设置了合理的检测范围限制。实验表明,该系统能有效检测丁烷气体浓度变化,但需注意操作安全。关键点包括ADC校准、电压转换、电阻计算和ppm换算公式实现。

2026-03-23 19:33:35 396

原创 野火STM32_HAL库版课程笔记-ADC多通道采集空气、烟雾传感器(DMA传输)

摘要:本文介绍了使用DMA方式实现ADC多通道数据采集的方法。通过配置ADC1的IN4和IN5通道,结合DMA自动传输功能,实现了对MQ135空气检测模块和MQ2烟雾检测模块的数据采集。相比传统轮询/中断方式,DMA能自动将转换数据存入指定数组,减轻CPU负担。文中详细说明了CubeMX配置步骤,包括ADC采样时间设置、DMA参数配置,并提供了关键代码实现,包括DMA启动函数和转换完成回调函数。最终通过串口输出两个传感器的电压值,验证了方案的可行性。

2026-03-21 16:54:58 432

原创 野火STM32_HAL库版课程笔记-ADC多通道采集雨量、土壤湿度传感器(中断+注入)

本文介绍了从轮询方式转为中断方式采集ADC电压值的方法。通过配置ADC1的规则通道(IN4)和注入通道(IN5)分别采集土壤湿度和雨量传感器数据。程序使用HAL库函数实现中断回调,每500ms读取一次电压值并转换为0-3.3V范围输出。结果显示触摸传感器时电压值会随接触位置和面积变化,验证了中断采集方式的可行性。代码包含ADC校准、中断处理及串口输出等功能模块。

2026-03-21 14:50:21 214

原创 野火STM32_HAL库版课程笔记-ADC多通道采集热敏、光敏、反射传感器(轮询)

在前面单通道的应用中, 就是采集一个通道的 ADC 值, 也就是只采集一个电位器.而想要采集多个传感器的情况下, 就要用到多通道.多通道相较于单通道只不过是把扫描一个通道的值, 变成转换多个通道, 并且依次转换。

2026-03-20 13:55:18 269

原创 野火STM32_HAL库版课程笔记-ADC单通道采集电位器应用(轮询)

本文介绍了STM32F10x系列ADC模块的工作原理及配置方法。主要内容包括:1)ADC通道类型区分,规则通道用于常规采集,注入通道用于高优先级任务;2)转换顺序配置方法,通过SQR寄存器设置;3)转换触发方式,支持软件触发和定时器/外部中断触发;4)时钟配置与转换速度计算;5)实际应用示例,通过HAL库实现电位器ADC轮询读取,包括初始化配置、电压值转换公式及串口输出实现。文中还详细说明了CubeMX中ADC参数的配置要点,如独立模式、数据对齐、采样时间等关键设置项。

2026-03-18 23:18:00 1331

原创 单片机开发注意点-读取引脚电平状态多次判断, 用变量还是直接调函数? 用变量!

在嵌入式开发中,使用变量存储硬件读取值比重复调用函数更优。示例展示了两种温度检测方案:第一种先将GPIO状态存入变量再判断,第二种直接重复调用读取函数。前者具有明显优势:1)减少硬件访问开销;2)避免两次读取间状态变化的竞态风险;3)提升代码可读性;4)增强可维护性。这种优化原则不仅适用于单片机开发,也是通用编程的最佳实践,能显著提高程序性能和可靠性。

2026-03-18 17:53:10 46

原创 野火STM32_HAL库版课程笔记-外部中断应用与回调函数

EXTI(External interrupt/event controller)—外部中断/事件控制器,管理了控制器的20 个中断/事件线。每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测。EXTI 可以实现对每个中断/事件线进行单独配置,可以单独配置为中断或者事件,以及触发事件的属性。

2026-03-16 23:18:41 523

原创 野火STM32_HAL库版课程笔记-系统定时器与中断闪灯

SysTick—系统定时器是属于CM3 内核中的一个外设,内嵌在NVIC (嵌套向量中断控制器)中。系统定时器是一个24bit的向下递减的计数器,计数器每计数一次的时间为 1/SYSCLK,一般我们设置系统时钟 SYSCLK 等于 72M。当重装载数值寄存器的值递减到 0 的时候,系统定时器就产生一次中断,以此循环往复。因为 SysTick 是属于 CM3 内核的外设,所以所有基于 CM3 内核的单片机都具有这个系统定时器,使得软件在CM3 单片机中可以很容易的移植。

2026-03-15 23:31:52 237

原创 野火STM32_HAL库版课程笔记-DMA与串口应用

DMA 的核心参数:数据传输量: 字节(8bit), 半字(16bit), 字(32bit)打开 USART1, 并打开 NVIC Settings. 配置 USART1 中断使能。

2026-03-14 18:07:03 218

原创 野火STM32_HAL库版课程笔记-串口型雷达模块基础应用

Rd-03 是由深圳市安信可科技有限公司开发的雷达模组, 搭载矽典微的 S3KM1110 芯片。S3KM1110 是一种基于 FMCW 雷达收发器技术的集成单片机毫米波传感器 SoC。它工作在 24 GHz 的 K 波段, 每个单频扫描的调制带宽高达 1 GHz。利用 FMCW 调频连续波,对设定空间内的目标进行探测。结合雷达信号处理, 实现高灵敏度的运动检测和微动检测。Rd-03 模组可感知区域内是否有运动或者微动的人体, 实现实时检测结果。

2026-03-13 22:57:01 98

原创 野火STM32_HAL库版课程笔记-串口之多串口应用

向串口 1 发送数据, 串口 1 接收到数据后转发到串口 2, 串口 2 收到数据进行回显.向串口 2 发送数据, 串口 2 接收到数据后转发到串口 1, 串口 1 收到数据进行回显.配置两个 USART , 并且开启中断.

2026-03-13 09:44:31 41

原创 野火STM32_HAL库版课程笔记-串口接收之空闲中断接收不定长数据

通过硬件自动检测一帧数据的接收结束, 当串口线路(RX引脚)在接收完一个字节后,持续保持高电平(空闲状态)的时间超过一个完整数据帧的传输时间时,硬件就会自动判定“一帧数据已经收完了”,并触发一个中断请求。

2026-03-12 14:46:31 318

原创 野火STM32_HAL库版课程笔记-串口接收之控制LED灯

串口发送 'ON', 三个 LED 灯亮, 发送 'OFF', 三个 LED 灯灭。记得勾选 Use MicroLIB。

2026-03-12 14:46:07 38

原创 野火STM32_HAL库版课程笔记-串口接收之中断接收定长数据

发送 5 个长度的数据, 单片机接收到后成功回显发送给 PC.将 USART1 global interrupt 使能。

2026-03-11 14:31:43 54

原创 野火STM32_HAL库版课程笔记-串口发送之阻塞接收定长数据

阻塞接收非阻塞接收 (轮询)中断接收DMA 接收。

2026-03-11 14:31:38 55

原创 野火STM32_HAL库版课程笔记-串口发送之更换脚组实验

在使用 UART1 时, 是使用 PA9 和 PA10 分别作为 TX 和 RX.当使用其他 UART 时, 则需要将对应引脚通过公对母杜邦线连接到 PC 侧的 RX 和 TX本例中使用 PA2 (TX) 和 PA3 (RX) (UART2) 进行更换脚组实验这里需要将原本插在上面的两个横向跳帽拔下来.那么就是将 PA2 (TX) 连接到 PC 侧的 RXD, 将 PA3 (RX) 连接到 PC 侧的 TXD.

2026-03-10 11:18:24 45

原创 野火STM32_HAL库版课程笔记-串口发送之发送字符串与printf函数

如果不勾选 MicroLIB,默认的 printf 实现可能会尝试初始化文件系统或占用大量栈空间,甚至导致程序无法运行。这里可以看出来, 这样使用 HAL 库函数来进行串口发送实现调试数据输出是不如 printf 来的便捷的.Keil 中设置文件编码格式是 UTF8 , 则发送数据的编码格式也为 UTF8。这里输出的字符串编码是根据 Keil 中设置的文件编码格式决定的.既然上一节已经实现了发送字节, 那么发送字符串也很简单.只需要将字节的部分改为字符串即可实现发送字符串.以替代默认的完整标准 C 库。

2026-03-10 11:18:11 88

原创 野火STM32_HAL库版课程笔记-串口发送之发送字节

串口通讯 (Serial Communication) 是一种设备间非常常用的串行通讯方式,因为它简单便捷,因此大部分电子设备都支持该通讯方式,电子工程师在调试设备时也经常使用该通讯方式输出调试信息。对于通讯协议,我们也以分层的方式来理解,最基本的是把它分为物理层和协议层。而该开发板可以通过 USB 线直接与串口进行通讯, 是因为使用了串口芯片, 通过 CH340, 转化为串口能够理解的数据. (即 RXD 和 TXD)Data Direction (数据方向, 有三种: 发送接收, 只接受, 只发送)

2026-03-09 18:11:52 412

原创 野火STM32_HAL库版课程笔记-反射式传感器&热敏传感器&火焰传感器

火焰检测模块可以检测火焰或者波长在 760nm~1100nm 范围内的光源,通过旋转可调节电位器,可以设定火焰检测模块感应火焰的强度,当火焰强度达不到设定阈值时, DO 端输出高电平, 当火焰强度超过设定阈值时, DO 端输出低电平, AO 端供 ADC 采集火焰检测模块的模拟量检测到火焰且火焰强度达到, DO 输出低电平, 灯亮没有火焰或火焰强度未达到, DO 输出高电平, 灯灭。

2026-03-09 18:11:38 265

原创 野火STM32_HAL库版课程笔记-延时流水灯&按键开关灯&蜂鸣器&光敏传感器

按键机械触点断开、闭合时,由于触点的弹性作用,按键开关不会马上稳定接通或一下子断开,使用按键时会产生图按键抖动说明图中的带波纹信号,需要用软件消抖处理滤波,不方便输入检测。光敏电阻模块可以旋转可调节电位器来设置阈值, 模块在环境光线亮度达不到设定阈值时, DO 端输出高电平,当外界环境光线亮度超过设定阈值时, DO 端输出低电平, AO 端输出为 ADC 采集的光敏电阻的模拟量。通过 4.7K 的电阻, 连接到 3.3V, 而当按键按下之后, 会被直接连接到地, 从 3.3V 变为 0V.

2026-03-05 23:08:53 486

原创 野火STM32_HAL库版课程笔记-GPIO输出与点灯

基础项目生成与相关配置一致在 GPIO 的 Configuration 中, 可以配置 每个引脚的配置参考核心板原理图可见, 为共阳极 (均接 3V3), 故对应的引脚为低电平即可点亮 LED所以在配置中可以将引脚默认电平配置成低电平 (即上电后 LED 就亮)可以配置 GPIO 模式, 可以配置 推挽输出 或 开漏输出推挽输出: 可以真正输出高电平和低电平开漏输出只能主动拉低电平(输出0),无法主动输出高电平。当它不拉低时,引脚处于高阻态(悬空),必须依靠外部上拉电阻才能获得高电平。

2026-03-05 22:52:15 67

原创 野火STM32_HAL库版课程笔记-STM32CubeMX使用(软件包获取与安装)与HAL库获取

然后将 1.8.6 版本的软件包解压后, 将解压的所有文件拷贝到 ST 软件包存储库默认路径下对应软件包中, 提示重复文件, 点击进行替换.这里显示我已经安装过了, 应该是因为之前安装 CubeIDE 自动下载的 (软件包存储库路径默认)可以看到有 文档, 驱动, 中间件, 示例项目(官方提供的一些评估版的外设使用示例), 工具集。选择对应版本, 然后 From Local ... (从本地安装)HAL 库就在已安装的软件包中的 Drivers 中。需要登录 ST 官方账号。根据自己的路径进行操作。

2026-03-04 22:58:50 76

原创 野火STM32_HAL库版课程笔记-STM32CubeMX新建MDK工程

流程与 STM32CubeIDE 中新建工程基本一致同样需要进行一些配置。

2026-03-04 22:57:20 197

原创 野火STM32_HAL库版课程笔记-DAP调试器使用与Keil项目配置

3V3(DAP 引脚) - 3V3(开发板引脚), ... , RST(DAP 引脚) - RST(开发板引脚).如果不勾选则每次下载之后, 手动按 Reset 进行复位才能运行程序。Reset and Run: 下载成功后, 自动复位并启动。将 DAP 调试器的引脚端与开发板的对应引脚相连。连接成功后, DAP 调试器两灯常亮.可以避免浪费很多时间。

2026-03-02 22:24:43 337

原创 野火STM32_HAL库版课程笔记-ISP(烧录方式)

野火 STM32F103C8T6 ISP烧录方式

2026-03-02 22:22:26 403

原创 MEMS技术与微型传感器 介绍 - 含 MEMS加速度计 和 MEMS陀螺仪 基本原理演示

你是否想过,智能手机为何能自动旋转屏幕?智能手表如何精准监测心率?无人机又靠什么保持稳定飞行?这些看似“魔法”的功能背后,其实都离不开一种关键技术——及其衍生的。MEMS 技术将 机械结构、电子电路、光学元件 等集成在毫米甚至微米尺度的 芯片上,实现了“感知+处理+执行”一体化,被誉为继集成电路之后的又一次半导体产业革命。

2025-12-19 17:27:40 3153

空空如也

空空如也

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

TA关注的人

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