- 博客(153)
- 收藏
- 关注
原创 STM32——HAL库学习(实物)红外传感器计次,旋转编码器
摘要 EXTI(外部中断/事件控制器)是STM32单片机的“哨兵系统”,用于检测GPIO引脚的电平变化(如上升沿、下降沿或双边沿)并触发中断或事件。STM32F103C8T6的EXTI提供20条独立通道(0~19),支持灵活配置,包括软件触发、优先级管理和与NVIC(嵌套向量中断控制器)的协作。通过AFIO/SYSCFG实现引脚映射,确保EXTI与GPIO的正确连接。实际应用如对射红外传感器(下降沿触发)和旋转编码器(正交信号检测)可通过CubeMX便捷配置中断,并在Keil中编写中断服务函数,实现精准计数
2025-11-03 22:06:56
1221
2
原创 6层高速PCB设计,立创-逻辑派FPGA-G1开发板,万字笔记。基于立创EDA高速PCB,FPGA,GW2A-LV18PG256C8/17、GD32F303CBT6学习笔记
本文详细记录了使用立创EDA专业版设计六层FPGA开发板PCB的全过程,涵盖原理图导入、元件布局、叠层设计、高速信号布线、电源处理等关键环节。作者首先分析了电源树结构,按模块化思路进行元件布局,重点处理了DDR3、HDMI等高速信号的阻抗控制和等长调节。通过合理设置6层板叠层结构(包含两个完整地平面),并严格遵循3W间距原则,确保信号完整性。设计过程中充分考虑了电源载流能力、EMC防护和结构兼容性,最终完成了符合生产规范的Gerber文件输出。文章还分享了立创EDA的使用技巧,如快捷键设置、模块复用等实用功
2025-10-31 07:00:00
3348
1
原创 STM32仿真,低成本学习STM32-LED闪烁-流水灯
摘要:本文介绍了在STM32上实现LED灯控制的具体步骤。首先复制原有工程文件,在仿真软件中搭建LED电路(低电平驱动),通过网络标签连接元件。接着在STM32CubeMX中配置PA1为GPIO输出模式,初始电平设为高电平。使用HAL库函数编写LED闪烁程序,包含电平翻转和延时控制。最后编译并将生成的.hex文件下载到单片机进行验证,成功实现LED亮灭效果。文中还提到后续将补充流水灯程序的实现方法。
2025-10-17 09:01:15
1318
2
原创 STM32cubemx仿真,低成本学习stm32
摘要:本文详细介绍了使用Proteus、STM32CubeMX和Keil5搭建STM32仿真环境的完整流程。首先在Proteus中创建工程并添加STM32F103C8芯片,接着在STM32CubeMX中配置时钟系统(选择外部晶振8MHz,通过PLL倍频至72MHz),生成Keil工程文件。然后在Keil5中进行工程设置(包括编码格式、编译选项等),生成可执行文件后,将.hex文件导入Proteus中的STM32芯片完成仿真环境搭建。整个过程涵盖了从工程创建到编译仿真的关键步骤,为后续STM32开发奠定了基础
2025-10-11 11:03:29
1971
1
原创 移植MQTT到STM32
本文详细记录了将IoTSharp/mqttclient移植到嵌入式系统的过程。该MQTT客户端具有高性能、跨平台特性,支持多种操作系统。移植重点包括:1) 实现网络部分(AT命令驱动ESP8266);2) 处理内存、线程、定时器等核心模块;3) 解决编译过程中的各类错误(头文件缺失、类型未定义、GNU扩展语法兼容等)。通过逐步调试和修改,最终完成了基础功能的移植,为后续功能完善奠定了基础。文中特别强调了编译错误的排查方法和解决思路,包括宏定义调试、头文件包含顺序调整等实用技巧。
2026-04-30 08:51:40
786
原创 MQTT程序改造思路基于STM32
本文探讨了Modbus通信协议的实现与改造方案。首先介绍了Modbus的基本工作流程,包括设备初始化、参数设置、请求包构造和数据收发等关键步骤。然后提出了架构改造思路,建议将硬件操作层与中间软件层分离,通过创建独立的设备层来提高代码的可移植性。最后展示了libmodbus的改造实例,重点说明了send函数的修改方法,以及如何通过定义统一的结构体接口来适配不同操作系统。这种分层设计使得核心功能模块保持稳定,只需修改设备层即可实现跨平台移植,大大提高了代码的复用性和维护性。
2026-04-30 08:50:35
323
原创 直流电机位置式 PID 控制 和 舵机的区别
摘要:直流电机位置式PID控制与舵机虽然都能实现精准定位,但本质不同。直流电机PID控制是"自由组装的闭环系统",需自行搭建硬件(电机、编码器)和编写PID算法,适合大负载、高精度场景;舵机则是"一体化执行器",自带闭环控制,仅需PWM信号即可工作,开发简单但性能固定,适合小负载快速部署。项目选型应结合实际需求,二者可配合使用(如平衡车的驱动轮用PID控制,转向机构用舵机),发挥各自优势。
2026-04-29 21:48:47
363
原创 了解Modbus
本文介绍了Modbus协议的基本原理及libmodbus实现。Modbus采用主从结构,通过设备地址、寄存器类别、地址和操作类型进行数据通信,支持读写不同位宽的寄存器数据。libmodbus提供了RTU(串口)和TCP(网络)两种实现方式,通过统一接口封装底层硬件操作。其核心机制包括寄存器操作函数、消息发送结构和跨平台支持,采用面向对象方法抽象硬件操作,支持Windows和Linux系统。该实现提供了完整的Modbus协议栈,方便开发者快速集成Modbus功能。
2026-04-29 21:48:06
543
原创 MQTT协议遇到的问题
MQTT通配符使用规则解析 MQTT主题订阅遵循严格匹配原则,不使用通配符时需完全匹配才能接收消息。单层通配符"+"可匹配任意一个层级的主题名,如订阅"+/temp"可接收"bedroom/temp"和"livingroom/temp"。多层通配符"#"必须位于主题末尾,可匹配0个或多个层级,如"mysensor/#"可接收所有以"mysensor/"开头的主题。&qu
2026-04-28 08:21:29
377
原创 MQTT协议
MQTT协议是专为物联网设计的轻量级发布/订阅协议,具有以下核心特点:1)采用发布/订阅模式,最小报文仅2字节;2)包含客户端和代理服务器两类角色;3)支持通配符主题订阅(单层+和多层#);4)提供遗愿机制和三种QoS等级(0-2);5)支持保留消息和会话管理。协议适用于智能家居等场景,通过心跳包保持连接,需确保客户端ID唯一性。MQTTX客户端使用需配置服务器地址、端口等五个参数,3.1.1版本应用最广泛。
2026-04-28 08:19:29
501
原创 UAER问题+修复小bug
本文总结了结构体变量和指针的成员访问方法:普通结构体变量使用点运算符(.)访问成员,结构体指针使用箭头运算符(->)访问成员。文章通过STM32开发中的TIM_HandleTypeDef和WS2812_HandleTypeDef示例说明了两种运算符的正确用法,并澄清了关于箭头运算符的常见误解。同时介绍了串口通信开发中DMA循环模式的配置要点,包括硬件自动启动DMA、串口3的初始化流程,以及如何处理相关结构体变量和指针的访问。文章提供了实用的编程口诀"变量用点.,指针用箭头->"
2026-04-27 08:16:35
237
原创 UART+DMA
摘要: 本文介绍了串口DMA优化的实现流程,重点对比了中断与DMA机制的性能差异。通过重构代码,将DMA与空闲中断(idle)结合,实现高效数据接收:DMA批量搬运数据至内存后触发中断,避免频繁打扰CPU;空闲中断则处理不完整数据包。发送端优化为DMA自动搬运数据,减少CPU干预。调试过程中解决了类型匹配、设备指向及DMA重启动等问题,最终实现稳定收发功能。关键点在于DMA配置、中断协同及数据缓冲区管理,显著提升了串口通信效率。
2026-04-27 08:10:29
702
原创 STM32-UART抽象层封装调试
本文详细解析了结构体在嵌入式开发中的关键应用。首先对比了结构体带等号(创建+赋值)与不带等号(仅创建)的本质区别,强调函数指针成员必须赋值的必要性。文章通过UART设备驱动实例,阐述了结构体指针数组、字符串比较查找设备的方法,以及传递自身指针实现面向对象编程的原理。最后从内存层面分析了结构体初始化与否的实际差异,帮助开发者深入理解结构体在硬件驱动中的完整调用链路。全文采用比喻和对比表等形式,使复杂概念易于理解。
2026-04-26 09:36:06
552
原创 UART问题解析
本文解析了结构体指针数组与设备管理函数的配合机制。核心要点包括:1)指针数组只能存储结构体地址而非变量本身;2)通过"通讯录"比喻说明指针数组存储设备地址,函数通过遍历比对名称查找设备;3)展示了新增设备时只需扩展指针数组的便捷性。这种设计实现了高效的空间利用、统一设备管理和便捷操作,体现了嵌入式系统中指针数组与查找函数配合的典型模式,具有扩展性强、维护方便的特点。
2026-04-26 09:34:58
459
原创 UART面向对象编程问题解析
本文详细介绍了STM32串口驱动的完整实现流程。系统从上电初始化开始,依次完成硬件初始化、设备获取、数据收发等操作。核心实现采用结构体封装设备属性,函数指针实现多态,通过FreeRTOS的信号量和队列实现任务与中断的同步通信。设计上采用分层架构,上层应用只需调用统一接口即可完成串口操作,无需关心底层细节。文章重点解析了设备结构体数组与获取函数的配合机制,展示了如何通过面向对象思想在C语言中实现硬件抽象层,为嵌入式开发提供了清晰的可复用框架。
2026-04-25 10:11:50
211
原创 面向对象封装UART_编程
本文详细介绍了基于中断方式的串口通信程序编写流程。主要内容包括:1)发送回调机制实现,通过信号量管理发送完成状态;2)接收数据处理方案,使用队列缓存接收数据;3)完整的发送/接收流程设计;4)模块化接口设计,实现与HAL库解耦,便于移植维护。重点讲解了信号量创建、队列管理、中断处理等关键技术实现,并提供清晰的程序流程图,最终形成可复用的串口通信解决方案。
2026-04-25 10:09:44
359
原创 STM32-UART封装问题解析
本文介绍了一种基于STM32HAL库和FreeRTOS的串口设备抽象驱动实现方案。该方案采用C语言模拟面向对象思想,将串口硬件封装为统一设备接口,实现上层应用与底层硬件的解耦。文章详细讲解了头文件(.h)中的设备规则定义和接口声明,以及源文件(.c)中的硬件实现、中断处理和FreeRTOS同步机制。重点阐述了如何通过函数指针实现统一接口、使用void*指针分离抽象层和硬件层、利用FreeRTOS信号量和队列实现任务同步和数据缓存。该设计实现了从开机到收发数据的完整流程,体现了C语言在嵌入式系统中的面向对象编
2026-04-24 10:00:21
492
原创 STM32-UART抽象层封装
本文介绍了UART通信的封装设计与实现方法。主要内容包括:1)推荐采用多层软件架构(HAL库层、自定义封装层、AT命令层、APP层)提升代码可移植性;2)详细说明STM32的UART配置流程,包括cubemx设置、中断发送/接收实现;3)强调封装的重要性,建议避免直接调用HAL库函数,应设计统一的接口层以简化芯片更换时的代码修改;4)提供FreeRTOS集成方案,包括时钟基准调整和任务编写注意事项。文章通过具体代码示例演示了UART数据收发处理,并给出封装函数参数设计的优化建议,旨在构建稳定、可移植的串口通
2026-04-24 09:53:09
664
原创 STM32 HAL库定时器PWM输出全攻略:从零到精准控制
本文详细介绍了使用STM32 HAL库配置定时器PWM输出的完整方法。首先讲解了PWM基础概念和STM32定时器的PWM模式,然后分步骤演示了通过CubeMX和手动代码两种配置方式,包括时钟源设置、预分频计算、占空比调节等关键参数配置。文章还提供了互补PWM输出、多通道同步等高级技巧,并封装了实用函数。最后给出了LED呼吸灯、舵机控制等典型应用示例,以及调试技巧和性能优化建议,帮助开发者快速掌握STM32的PWM应用。
2026-01-03 11:46:29
2524
3
原创 STM32 USART接收中断:如何判断数据接收完成?
本文探讨了STM32串口通信中判断数据帧接收完成的四种方法:1)超时判断法,通过字节间隔时间判断;2)特定帧头帧尾法,适用于固定格式协议;3)固定长度法,适合已知长度的数据;4)长度字段法,通过数据包中的长度信息判断。文章建议根据实际需求选择合适方法,推荐结合超时机制与协议解析,并介绍了DMA+IDLE中断的高效方案。最后强调要根据数据格式、协议要求和系统资源选择最优方案,其中超时判断与长度字段的组合适用于多数场景,而高性能需求推荐使用DMA+IDLE中断。
2026-01-03 11:39:41
665
原创 STM32 DMA传输配置详解:数据宽度与传输方向设置指南
本文详细介绍了STM32中DMA传输的数据宽度和传输方向配置方法。DMA支持8/16/32位三种数据宽度,需根据外设特性选择并确保内存对齐。传输方向包括内存到外设、外设到内存及内存到内存三种模式,需正确设置DIR寄存器位。文章提供了使用标准库、HAL库和直接寄存器操作的配置示例,并强调了数据宽度匹配、地址递增设置等注意事项。此外还介绍了调试技巧、常见问题解决方案和性能优化建议,如使用FIFO处理数据宽度转换、根据数据量选择传输方式等。合理配置这些参数可充分发挥DMA性能优势,构建高效可靠的嵌入式系统。
2026-01-02 15:58:09
1117
原创 STM32如何通过寄存器直接禁止EXTI0中断
本文详细介绍了通过寄存器直接操作禁用STM32 EXTI0中断的方法。主要内容包括:1. EXTI中断系统架构,重点说明EXTI_IMR等关键寄存器功能;2. 具体实现步骤:通过清除EXTI_IMR寄存器位0禁用中断线,操作NVIC寄存器禁用中断控制器,并清除挂起标志;3. 提供了完整示例代码和安全操作方法;4. 强调操作顺序、临界区保护等注意事项。该方法虽不如HAL库直观,但对深入理解STM32中断机制具有重要意义,适用于底层调试和性能优化场景,但建议日常开发仍优先使用标准库保证可维护性。
2026-01-02 15:49:52
778
1
原创 配置STM32F411CEU6的系统时钟-避免芯片内核锁死
本文介绍了在STM32F411芯片上配置系统时钟时遇到的问题及解决方案。作者在使用正点原子提供的sys.c工程时发现内核锁死,原因是开发板晶振频率(8M)与目标板(25M)不匹配。通过重写sys.c和sys.h文件,实现了25M晶振→96MHz系统时钟的配置,完全匹配CubeMX参数(PLLM=25,PLLN=192,PLLP=2)。修改后的代码包含超时兜底机制,确保时钟源切换安全,并精确校准延时到500ms。经过测试,成功生成了预期的四路PWM波形,验证了时钟配置的正确性。
2026-01-01 17:56:43
724
原创 STM32内核锁死补救方法-STM32F411CEU6
摘要:STM32F4系列出现「Cannot halt the core」报错时,表明芯片内核和调试口被双重锁死。根本原因是调试接口被禁用、内核进入死循环、Flash写保护同时触发。解决方案的核心是利用上电300ms窗口期强制擦除:1)Keil中配置全片擦除选项;2)同时按住BOOT0和复位键上电;3)松开复位键后立即点击擦除按钮。该方法通过时序操作在错误程序运行前强制解锁,成功率极高,可使芯片恢复出厂状态。操作时需严格遵循步骤顺序,特别注意按键松开时机与擦除指令的同步性。
2026-01-01 17:39:30
1850
原创 STM32 I2C通信详解:从机地址 vs 寄存器地址
本文通过邮局系统类比,清晰区分了STM32 I2C通信中的从机地址和寄存器地址。从机地址(7位/10位)用于选择总线上的目标设备,如MPU6050的0x68;寄存器地址则指定设备内部的操作位置,如电源管理寄存器0x6B。文章详细解析了两者的结构差异,并提供了HAL库的典型用法:先发送从机地址(需左移1位)建立通信,再指定寄存器地址进行读写操作。通过MPU6050初始化、数据读取等实例代码,展示了完整通信流程。最后给出地址冲突解决方案、总线扫描方法和调试建议,强调"先选设备再选位置"的操作
2025-12-31 17:18:49
1290
原创 使用STM32 HAL库配置ADC单次转换模式详解
本文详细介绍了如何使用STM32 HAL库配置ADC单次转换模式。单次转换模式适用于节能或事件触发的场景,仅执行一次转换后自动停止。文章从硬件准备开始,分步骤讲解了引脚初始化、ADC参数配置、通道设置、转换启动与结果读取的实现方法,并提供了完整的示例代码。同时解析了采样时间、触发方式等关键参数,给出了调试技巧和常见问题解决方案,最后提出了使用DMA、校准等性能优化建议。通过本文可以快速掌握STM32 ADC单次转换的基本配置方法。
2025-12-31 17:12:41
695
2
原创 STM32 I2C通信详解:从机地址与寄存器地址的作用
I2C通信中的地址机制解析 本文系统介绍了I2C总线通信中的关键地址概念。从机地址作为设备的唯一标识(7位或10位),用于总线设备识别;寄存器地址则用于访问设备内部存储单元。文章详细讲解了两种地址的格式、作用及典型应用场景,包括MPU6050传感器、OLED显示屏和EEPROM等实例。同时提供了完整的通信流程分析、常见问题排查方法和STM32硬件配置建议。通过对比从机地址与寄存器地址的特性差异,帮助开发者掌握I2C通信的核心机制,并给出从简单EEPROM到复杂传感器驱动的渐进式学习建议。
2025-12-30 18:57:27
1457
原创 STM32中USART和UART的区别是什么?
摘要:UART和USART是嵌入式通信中常见的串行接口。UART仅支持异步通信,使用TX/RX两根线;而USART支持同步/异步两种模式,增加了时钟信号线(CK)。STM32中,USART功能更丰富,支持硬件流控制、LIN总线等,同步模式下可实现更高波特率。实际应用中,简单通信可选UART,高速同步通信必须使用USART。现代STM32芯片中,USART通常可向下兼容UART功能,但反之不行。开发时应根据具体需求选择接口类型,充分利用外设资源。
2025-12-30 18:47:24
1159
原创 STM32定时器中断配置详解:以TIM2为例
本文详细介绍了STM32定时器中断的配置方法,以TIM2为例讲解了五个关键步骤:1)使能定时器时钟;2)配置预分频器和自动重载值;3)设置中断优先级;4)启动定时器;5)编写中断服务函数。文章提供了1ms定时中断的完整示例代码,并扩展介绍了PWM输出、输入捕获等高级应用。同时指出了调试常见问题,如中断标志未清除、时钟未使能等。针对不同STM32系列(F1/F4/F7)的差异进行了说明,强调掌握底层寄存器操作的重要性。通过本文,开发者可系统学习STM32定时器中断配置,从基础应用到高级功能实现。
2025-12-29 13:52:31
989
原创 STM32 GPIO输出模式配置详解:从寄存器层面理解引脚控制
STM32 GPIO寄存器详解及配置方法:本文系统介绍了STM32微控制器的GPIO寄存器组,包括MODER(模式)、OTYPER(输出类型)、OSPEEDR(速度)等7个核心寄存器功能及配置方法。重点解析了输出模式设置、推挽/开漏选择、速度优化等关键配置,提供了完整的LED闪烁示例代码,并对比了F1与F4/F7系列的寄存器差异。文章强调时钟使能、原子操作等最佳实践,给出了位带操作等性能优化技巧,指出寄存器级编程在代码精简、执行效率和控制精度方面的优势,建议开发者结合参考手册灵活选择库函数或直接寄存器操作方
2025-12-29 13:43:09
1113
原创 STM32平衡车测试,定时中断读取速度
摘要:本文介绍了STM32中PWM输出和编码器测速的实现方法。首先通过HAL库配置PWM输出并动态调整占空比,然后详细说明了编码器接口的配置流程,包括定时器设置、中断处理和速度计算。重点阐述了编码器溢出检测机制和转速计算公式,通过TIM3记录脉冲数、TIM2提供时间基准来实现精确测速。最后提到在CubeMX中完成配置后,可通过串口输出测试结果。
2025-12-28 09:08:26
851
原创 STM32的ADC是什么,其转换精度通常有那些选项?
本文深入解析STM32微控制器的模数转换器(ADC)模块,重点探讨其转换精度的关键要素。文章指出ADC精度不仅取决于12位分辨率,更受参考电压稳定性、采样时间配置、时钟频率及PCB布局等多因素影响。详细介绍了偏移误差、增益误差等关键参数,并提供了实用建议:使用外部基准电压源、合理配置采样周期、实施软件校准与滤波等优化措施。通过系统性考虑内部误差和外部条件,开发者可充分发挥STM32ADC性能,实现高精度模拟信号采集。
2025-12-28 09:02:52
900
原创 江科大无限透传模块程序编写HC-40,无线调节PID,各种参数。
本文介绍了基于STM32的蓝牙串口通信程序实现过程。主要内容包括:1.硬件连接采用蓝牙模块替代USB转串口;2.程序实现了串口数据收发、OLED显示、按键控制、滑杆和摇杆数据处理等功能;3.详细讲解了数据包格式修改、字符串分割(strtok)、比较(strcmp)和数值转换(atoi/atof)等关键函数的使用;4.提供了完整的main.c和serial.c程序代码,实现了蓝牙指令解析、数据显示和波形绘制等功能。通过该程序,可以完成蓝牙指令接收、数据显示和远程控制等功能,为物联网设备开发提供了实用参考。
2025-12-27 09:18:24
1086
原创 逻辑最清晰的STM32F1/F4标准库工程创建
首先我们来了解一下各个文件的作用是干什么的。在嵌入式开发中,STM32系列微控制器因其强大的性能和丰富的外设资源而广受欢迎。对于初学者和习惯于传统开发方式的工程师来说,标准库(Standard Peripheral Library)提供了一种直观且易于理解的编程接口。本文将详细介绍如何从零开始创建一个STM32F1/F4的标准库工程。开发板:STM32F103C8T6(F1系列)或STM32F407VET6(F4系列)开发环境:Keil MDK-ARM 或 IAR EWARM或者免费的VSCode + AR
2025-12-27 09:11:22
1557
原创 STM32 电源管理模式全解析:低功耗场景该如何选型?
摘要:本文详细解析STM32系列MCU的电源管理模式及其在低功耗场景下的应用。重点介绍四种核心模式(运行、睡眠、停止、待机)的工作机制、功耗范围及适用场景,并提供标准库代码示例。针对不同休眠需求(短时快速响应、中等休眠、长时极低功耗)给出选型策略,强调外设预处理和时钟优化的重要性。最后指出唤醒后时钟恢复、数据保存等实战注意事项,帮助开发者在电池供电场景下优化设备续航能力。
2025-12-26 09:51:29
923
原创 江科大HC-40蓝牙模块测试无限透传模式。
本文介绍了蓝牙模块的基本功能和使用方法。首先概述了经典蓝牙和低功耗蓝牙的区别,以及蓝牙模块的三种连接方式。详细说明了通过AT指令配置模块参数的过程,包括查询波特率、设置模块名称等操作。重点讲解了如何通过手机蓝牙助手小程序实现远程控制功能,包括滑杆调参、摇杆控制、OLED显示和波形绘制等功能。文章还介绍了数据包的解析方法,以及如何在串口通信中处理接收到的控制指令。最后预告了后续将介绍STM32蓝牙互传的程序实现方法。
2025-12-26 09:47:01
506
原创 STM32平衡车: 电机测速+正反测速
本文介绍了基于STM32的电机控制系统实现方案。系统通过定时器配置实现PWM波输出控制电机转速,采用编码器模式进行速度测量。文章详细阐述了减速电机参数计算,包括电机轴每转脉冲数(44个)、输出轴每转脉冲数(836个)以及转速计算公式。同时提供了完整的程序代码,包含PWM初始化、编码器配置、方向控制等功能实现,并通过串口输出调试信息。系统能够准确识别电机正反转状态,动态调整PWM占空比实现转速控制,最终完成了对减速电机的精确速度检测与控制。
2025-12-25 12:37:58
725
原创 STM32F103C8T6中定时器分类以及作用。
STM32F103C8T6单片机定时器功能详解 摘要:STM32F103C8T6内置多种定时器,包括高级控制定时器(TIM1/TIM8)、通用定时器(TIM2-4)、基本定时器(TIM6/7)和看门狗定时器。高级定时器支持互补输出和死区控制,适用于电机驱动;通用定时器可实现PWM输出、输入捕获等常用功能;基本定时器提供简单定时功能;看门狗用于系统监控。SysTick定时器为操作系统提供时基。根据具体应用需求,如电机控制、PWM生成或系统保护等,可选择不同类型的定时器实现相应功能。
2025-12-25 12:37:29
1047
原创 编码器测速思路,以及如何进行测速,速度调整
摘要:本文详细解释了编码器脉冲计数中溢出部分的计算方法。当计数器CNT在0-9范围内循环时,每次溢出(从9→0或0→9)代表完成一个完整循环(10个脉冲)。总脉冲数=n×10+x,其中n是完整循环次数,x是当前循环的计数值。通过时钟和里程表等生活化比喻说明原理,并纠正了常见的边界错误(差1错误)。最终得出统一公式:总脉冲数=当前CNT值+n×M(M=10),该公式适用于正反向旋转,结果的正负表示转动方向。
2025-12-24 12:26:22
782
原创 STM32平衡车工具-匿名助手+虚拟串口如何使用。
摘要:匿名助手显示波形的关键是通过串口实现单片机与电脑的数据传输。单片机需按匿名协议打包数据(包含帧头、功能码、数据长度等),通过串口定时发送。匿名助手端需正确配置串口连接,在高级收码中设置匹配的数据帧格式,并在波形显示界面添加对应数据源。注意事项包括协议一致性、数据类型匹配等,常用于显示传感器数据、PID调试曲线等。具体操作涉及虚拟串口设置、数据帧测试和波形添加,是平衡车等项目中观察PWM、PID波形的重要工具。
2025-12-24 12:24:32
1138
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅