自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 STM32——HAL库学习(实物)红外传感器计次,旋转编码器

摘要 EXTI(外部中断/事件控制器)是STM32单片机的“哨兵系统”,用于检测GPIO引脚的电平变化(如上升沿、下降沿或双边沿)并触发中断或事件。STM32F103C8T6的EXTI提供20条独立通道(0~19),支持灵活配置,包括软件触发、优先级管理和与NVIC(嵌套向量中断控制器)的协作。通过AFIO/SYSCFG实现引脚映射,确保EXTI与GPIO的正确连接。实际应用如对射红外传感器(下降沿触发)和旋转编码器(正交信号检测)可通过CubeMX便捷配置中断,并在Keil中编写中断服务函数,实现精准计数

2025-11-03 22:06:56 1288 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 3693 2

原创 STM32仿真,低成本学习STM32-LED闪烁-流水灯

摘要:本文介绍了在STM32上实现LED灯控制的具体步骤。首先复制原有工程文件,在仿真软件中搭建LED电路(低电平驱动),通过网络标签连接元件。接着在STM32CubeMX中配置PA1为GPIO输出模式,初始电平设为高电平。使用HAL库函数编写LED闪烁程序,包含电平翻转和延时控制。最后编译并将生成的.hex文件下载到单片机进行验证,成功实现LED亮灭效果。文中还提到后续将补充流水灯程序的实现方法。

2025-10-17 09:01:15 1348 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 2053 1

原创 指针数组+指针+通俗理解+为了freertos

本文摘要:文章系统讲解了指针相关概念及应用。首先介绍了指针数组(元素为指针的数组)和数组指针(指向数组的指针)的区别与用法,重点说明它们在内存访问和运算时的特性差异。其次详细阐述了函数指针的定义、赋值和调用方法,包括回调函数的实现原理。最后以qsort函数为例,说明如何通过函数指针实现通用排序功能,并特别指出结构体排序时的类型转换要点。全文贯穿指针在数组处理、函数调用等场景的实际应用,强调理解指针类型对内存操作的关键作用。

2026-05-14 09:50:31 318

原创 杰杰MQTT移植+USART线程+FreeRTOS

本文详细介绍了AT命令模块的实现方案,重点包括:1)封装AT命令处理模块,实现与底层硬件解耦;2)采用信号量机制实现命令发送与返回数据的同步控制;3)构建硬件抽象层(HAL)和内核抽象层(KAL)提升系统可移植性;4)实现带超时检测的互斥量机制;5)设计完整的数据接收解析流程,包括特殊字符处理(如"+IPD")和状态管理;6)提供全局变量和缓冲区管理方案。通过FreeRTOS任务实现异步处理,最终构建出可扩展的AT命令框架,适用于ESP8266等模块的稳定通信。

2026-05-14 09:47:01 543

原创 STM32F103C8T6新手避坑全指南:从外设使用到内存管理

本文详细剖析了STM32F103C8T6开发中的常见问题,重点针对外设使用和内存管理两大维度。在外设方面,深入分析了GPIO模式配置、UART波特率计算、SPI时序匹配、ADC采样精度等高频错误;在内存管理方面,系统讲解了栈溢出、堆分配、全局变量过多等致命问题。每个问题都提供了"现象描述-原因分析-解决方案"的完整思路,并给出具体配置示例和优化建议。文章特别强调了这款芯片20KB RAM和64KB Flash的资源限制,帮助开发者建立内存敏感意识。通过规避这些典型陷阱,开发者能够快速掌握

2026-05-12 21:38:14 497

原创 MQTT+STM32+云平台+AT命令的编写

本文介绍了一个AT指令发送函数的实现方法。该函数通过串口向WiFi/蓝牙模块发送AT指令,并等待模块返回"OK"响应。函数包含参数检查、FIFO清空、指令发送、超时等待等步骤,通过strstr()函数检测响应内容,返回0表示成功,-1表示超时,-2表示参数错误,-3表示指令错误。文章详细解释了入参检查、Tick计时、字符串查找等关键概念,并分析了FreeRTOS延时机制与超时判断的关系,建议超时时间应大于任务阻塞时间,以确保正确处理模块响应。该实现具有健壮性,能有效避免程序崩溃和CPU资

2026-05-12 21:36:18 559

原创 MQTT+STM32+ESP8266网络程序分层+韦老师

本文记录了使用ESP8266实现MQTT功能的开发过程。首先通过AT指令测试建立基础通信,包括WiFi模式配置(STA/AP模式)和路由器连接。重点介绍了MQTT连接流程:配置TLS参数(域名+8883端口)、服务器连接、主题订阅与发布。开发中采用分层设计思路,使用环形缓冲区处理串口数据收发,并提供了串口发送函数示例。文章还包含TCP连接、数据发送长度控制等关键实现细节,为后续更换ESP32等芯片预留了兼容性设计。通过逐步完善网络函数,最终实现了MQTT通信的基础框架。

2026-05-10 13:12:37 586

原创 在freertos中,为什么最先创建的任务最后执行,同等优先级的任务

摘要:在FreeRTOS默认配置(抢占式开启、时间片关闭)下,同等优先级任务的执行顺序由就绪链表规则决定。新创建的任务会插入链表头部,调度器从头部取任务执行,因此最后创建的任务最先运行。这种设计确保高优先级任务能立即抢占CPU。要改变执行顺序可关闭抢占式调度或开启时间片轮转。默认情况下,若运行中的任务不主动阻塞,后续任务将无法执行。核心机制是抢占式调度的链表插入规则,而非任务创建顺序。

2026-05-10 13:10:38 222

原创 移植MQTT到STM32

本文详细记录了将IoTSharp/mqttclient移植到嵌入式系统的过程。该MQTT客户端具有高性能、跨平台特性,支持多种操作系统。移植重点包括:1) 实现网络部分(AT命令驱动ESP8266);2) 处理内存、线程、定时器等核心模块;3) 解决编译过程中的各类错误(头文件缺失、类型未定义、GNU扩展语法兼容等)。通过逐步调试和修改,最终完成了基础功能的移植,为后续功能完善奠定了基础。文中特别强调了编译错误的排查方法和解决思路,包括宏定义调试、头文件包含顺序调整等实用技巧。

2026-04-30 08:51:40 866

原创 MQTT程序改造思路基于STM32

本文探讨了Modbus通信协议的实现与改造方案。首先介绍了Modbus的基本工作流程,包括设备初始化、参数设置、请求包构造和数据收发等关键步骤。然后提出了架构改造思路,建议将硬件操作层与中间软件层分离,通过创建独立的设备层来提高代码的可移植性。最后展示了libmodbus的改造实例,重点说明了send函数的修改方法,以及如何通过定义统一的结构体接口来适配不同操作系统。这种分层设计使得核心功能模块保持稳定,只需修改设备层即可实现跨平台移植,大大提高了代码的复用性和维护性。

2026-04-30 08:50:35 336

原创 直流电机位置式 PID 控制 和 舵机的区别

摘要:直流电机位置式PID控制与舵机虽然都能实现精准定位,但本质不同。直流电机PID控制是"自由组装的闭环系统",需自行搭建硬件(电机、编码器)和编写PID算法,适合大负载、高精度场景;舵机则是"一体化执行器",自带闭环控制,仅需PWM信号即可工作,开发简单但性能固定,适合小负载快速部署。项目选型应结合实际需求,二者可配合使用(如平衡车的驱动轮用PID控制,转向机构用舵机),发挥各自优势。

2026-04-29 21:48:47 387

原创 了解Modbus

本文介绍了Modbus协议的基本原理及libmodbus实现。Modbus采用主从结构,通过设备地址、寄存器类别、地址和操作类型进行数据通信,支持读写不同位宽的寄存器数据。libmodbus提供了RTU(串口)和TCP(网络)两种实现方式,通过统一接口封装底层硬件操作。其核心机制包括寄存器操作函数、消息发送结构和跨平台支持,采用面向对象方法抽象硬件操作,支持Windows和Linux系统。该实现提供了完整的Modbus协议栈,方便开发者快速集成Modbus功能。

2026-04-29 21:48:06 568

原创 MQTT协议遇到的问题

MQTT通配符使用规则解析 MQTT主题订阅遵循严格匹配原则,不使用通配符时需完全匹配才能接收消息。单层通配符"+"可匹配任意一个层级的主题名,如订阅"+/temp"可接收"bedroom/temp"和"livingroom/temp"。多层通配符"#"必须位于主题末尾,可匹配0个或多个层级,如"mysensor/#"可接收所有以"mysensor/"开头的主题。&qu

2026-04-28 08:21:29 402

原创 MQTT协议

MQTT协议是专为物联网设计的轻量级发布/订阅协议,具有以下核心特点:1)采用发布/订阅模式,最小报文仅2字节;2)包含客户端和代理服务器两类角色;3)支持通配符主题订阅(单层+和多层#);4)提供遗愿机制和三种QoS等级(0-2);5)支持保留消息和会话管理。协议适用于智能家居等场景,通过心跳包保持连接,需确保客户端ID唯一性。MQTTX客户端使用需配置服务器地址、端口等五个参数,3.1.1版本应用最广泛。

2026-04-28 08:19:29 519

原创 UAER问题+修复小bug

本文总结了结构体变量和指针的成员访问方法:普通结构体变量使用点运算符(.)访问成员,结构体指针使用箭头运算符(->)访问成员。文章通过STM32开发中的TIM_HandleTypeDef和WS2812_HandleTypeDef示例说明了两种运算符的正确用法,并澄清了关于箭头运算符的常见误解。同时介绍了串口通信开发中DMA循环模式的配置要点,包括硬件自动启动DMA、串口3的初始化流程,以及如何处理相关结构体变量和指针的访问。文章提供了实用的编程口诀"变量用点.,指针用箭头->&quot

2026-04-27 08:16:35 248

原创 UART+DMA

摘要: 本文介绍了串口DMA优化的实现流程,重点对比了中断与DMA机制的性能差异。通过重构代码,将DMA与空闲中断(idle)结合,实现高效数据接收:DMA批量搬运数据至内存后触发中断,避免频繁打扰CPU;空闲中断则处理不完整数据包。发送端优化为DMA自动搬运数据,减少CPU干预。调试过程中解决了类型匹配、设备指向及DMA重启动等问题,最终实现稳定收发功能。关键点在于DMA配置、中断协同及数据缓冲区管理,显著提升了串口通信效率。

2026-04-27 08:10:29 719

原创 STM32-UART抽象层封装调试

本文详细解析了结构体在嵌入式开发中的关键应用。首先对比了结构体带等号(创建+赋值)与不带等号(仅创建)的本质区别,强调函数指针成员必须赋值的必要性。文章通过UART设备驱动实例,阐述了结构体指针数组、字符串比较查找设备的方法,以及传递自身指针实现面向对象编程的原理。最后从内存层面分析了结构体初始化与否的实际差异,帮助开发者深入理解结构体在硬件驱动中的完整调用链路。全文采用比喻和对比表等形式,使复杂概念易于理解。

2026-04-26 09:36:06 573

原创 UART问题解析

本文解析了结构体指针数组与设备管理函数的配合机制。核心要点包括:1)指针数组只能存储结构体地址而非变量本身;2)通过"通讯录"比喻说明指针数组存储设备地址,函数通过遍历比对名称查找设备;3)展示了新增设备时只需扩展指针数组的便捷性。这种设计实现了高效的空间利用、统一设备管理和便捷操作,体现了嵌入式系统中指针数组与查找函数配合的典型模式,具有扩展性强、维护方便的特点。

2026-04-26 09:34:58 473

原创 UART面向对象编程问题解析

本文详细介绍了STM32串口驱动的完整实现流程。系统从上电初始化开始,依次完成硬件初始化、设备获取、数据收发等操作。核心实现采用结构体封装设备属性,函数指针实现多态,通过FreeRTOS的信号量和队列实现任务与中断的同步通信。设计上采用分层架构,上层应用只需调用统一接口即可完成串口操作,无需关心底层细节。文章重点解析了设备结构体数组与获取函数的配合机制,展示了如何通过面向对象思想在C语言中实现硬件抽象层,为嵌入式开发提供了清晰的可复用框架。

2026-04-25 10:11:50 226

原创 面向对象封装UART_编程

本文详细介绍了基于中断方式的串口通信程序编写流程。主要内容包括:1)发送回调机制实现,通过信号量管理发送完成状态;2)接收数据处理方案,使用队列缓存接收数据;3)完整的发送/接收流程设计;4)模块化接口设计,实现与HAL库解耦,便于移植维护。重点讲解了信号量创建、队列管理、中断处理等关键技术实现,并提供清晰的程序流程图,最终形成可复用的串口通信解决方案。

2026-04-25 10:09:44 371

原创 STM32-UART封装问题解析

本文介绍了一种基于STM32HAL库和FreeRTOS的串口设备抽象驱动实现方案。该方案采用C语言模拟面向对象思想,将串口硬件封装为统一设备接口,实现上层应用与底层硬件的解耦。文章详细讲解了头文件(.h)中的设备规则定义和接口声明,以及源文件(.c)中的硬件实现、中断处理和FreeRTOS同步机制。重点阐述了如何通过函数指针实现统一接口、使用void*指针分离抽象层和硬件层、利用FreeRTOS信号量和队列实现任务同步和数据缓存。该设计实现了从开机到收发数据的完整流程,体现了C语言在嵌入式系统中的面向对象编

2026-04-24 10:00:21 518

原创 STM32-UART抽象层封装

本文介绍了UART通信的封装设计与实现方法。主要内容包括:1)推荐采用多层软件架构(HAL库层、自定义封装层、AT命令层、APP层)提升代码可移植性;2)详细说明STM32的UART配置流程,包括cubemx设置、中断发送/接收实现;3)强调封装的重要性,建议避免直接调用HAL库函数,应设计统一的接口层以简化芯片更换时的代码修改;4)提供FreeRTOS集成方案,包括时钟基准调整和任务编写注意事项。文章通过具体代码示例演示了UART数据收发处理,并给出封装函数参数设计的优化建议,旨在构建稳定、可移植的串口通

2026-04-24 09:53:09 706

原创 STM32 HAL库定时器PWM输出全攻略:从零到精准控制

本文详细介绍了使用STM32 HAL库配置定时器PWM输出的完整方法。首先讲解了PWM基础概念和STM32定时器的PWM模式,然后分步骤演示了通过CubeMX和手动代码两种配置方式,包括时钟源设置、预分频计算、占空比调节等关键参数配置。文章还提供了互补PWM输出、多通道同步等高级技巧,并封装了实用函数。最后给出了LED呼吸灯、舵机控制等典型应用示例,以及调试技巧和性能优化建议,帮助开发者快速掌握STM32的PWM应用。

2026-01-03 11:46:29 2732 3

原创 STM32 USART接收中断:如何判断数据接收完成?

本文探讨了STM32串口通信中判断数据帧接收完成的四种方法:1)超时判断法,通过字节间隔时间判断;2)特定帧头帧尾法,适用于固定格式协议;3)固定长度法,适合已知长度的数据;4)长度字段法,通过数据包中的长度信息判断。文章建议根据实际需求选择合适方法,推荐结合超时机制与协议解析,并介绍了DMA+IDLE中断的高效方案。最后强调要根据数据格式、协议要求和系统资源选择最优方案,其中超时判断与长度字段的组合适用于多数场景,而高性能需求推荐使用DMA+IDLE中断。

2026-01-03 11:39:41 712

原创 STM32 DMA传输配置详解:数据宽度与传输方向设置指南

本文详细介绍了STM32中DMA传输的数据宽度和传输方向配置方法。DMA支持8/16/32位三种数据宽度,需根据外设特性选择并确保内存对齐。传输方向包括内存到外设、外设到内存及内存到内存三种模式,需正确设置DIR寄存器位。文章提供了使用标准库、HAL库和直接寄存器操作的配置示例,并强调了数据宽度匹配、地址递增设置等注意事项。此外还介绍了调试技巧、常见问题解决方案和性能优化建议,如使用FIFO处理数据宽度转换、根据数据量选择传输方式等。合理配置这些参数可充分发挥DMA性能优势,构建高效可靠的嵌入式系统。

2026-01-02 15:58:09 1173

原创 STM32如何通过寄存器直接禁止EXTI0中断

本文详细介绍了通过寄存器直接操作禁用STM32 EXTI0中断的方法。主要内容包括:1. EXTI中断系统架构,重点说明EXTI_IMR等关键寄存器功能;2. 具体实现步骤:通过清除EXTI_IMR寄存器位0禁用中断线,操作NVIC寄存器禁用中断控制器,并清除挂起标志;3. 提供了完整示例代码和安全操作方法;4. 强调操作顺序、临界区保护等注意事项。该方法虽不如HAL库直观,但对深入理解STM32中断机制具有重要意义,适用于底层调试和性能优化场景,但建议日常开发仍优先使用标准库保证可维护性。

2026-01-02 15:49:52 800 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 752

原创 STM32内核锁死补救方法-STM32F411CEU6

摘要:STM32F4系列出现「Cannot halt the core」报错时,表明芯片内核和调试口被双重锁死。根本原因是调试接口被禁用、内核进入死循环、Flash写保护同时触发。解决方案的核心是利用上电300ms窗口期强制擦除:1)Keil中配置全片擦除选项;2)同时按住BOOT0和复位键上电;3)松开复位键后立即点击擦除按钮。该方法通过时序操作在错误程序运行前强制解锁,成功率极高,可使芯片恢复出厂状态。操作时需严格遵循步骤顺序,特别注意按键松开时机与擦除指令的同步性。

2026-01-01 17:39:30 2006

原创 STM32 I2C通信详解:从机地址 vs 寄存器地址

本文通过邮局系统类比,清晰区分了STM32 I2C通信中的从机地址和寄存器地址。从机地址(7位/10位)用于选择总线上的目标设备,如MPU6050的0x68;寄存器地址则指定设备内部的操作位置,如电源管理寄存器0x6B。文章详细解析了两者的结构差异,并提供了HAL库的典型用法:先发送从机地址(需左移1位)建立通信,再指定寄存器地址进行读写操作。通过MPU6050初始化、数据读取等实例代码,展示了完整通信流程。最后给出地址冲突解决方案、总线扫描方法和调试建议,强调"先选设备再选位置"的操作

2025-12-31 17:18:49 1357

原创 使用STM32 HAL库配置ADC单次转换模式详解

本文详细介绍了如何使用STM32 HAL库配置ADC单次转换模式。单次转换模式适用于节能或事件触发的场景,仅执行一次转换后自动停止。文章从硬件准备开始,分步骤讲解了引脚初始化、ADC参数配置、通道设置、转换启动与结果读取的实现方法,并提供了完整的示例代码。同时解析了采样时间、触发方式等关键参数,给出了调试技巧和常见问题解决方案,最后提出了使用DMA、校准等性能优化建议。通过本文可以快速掌握STM32 ADC单次转换的基本配置方法。

2025-12-31 17:12:41 753 2

原创 STM32 I2C通信详解:从机地址与寄存器地址的作用

I2C通信中的地址机制解析 本文系统介绍了I2C总线通信中的关键地址概念。从机地址作为设备的唯一标识(7位或10位),用于总线设备识别;寄存器地址则用于访问设备内部存储单元。文章详细讲解了两种地址的格式、作用及典型应用场景,包括MPU6050传感器、OLED显示屏和EEPROM等实例。同时提供了完整的通信流程分析、常见问题排查方法和STM32硬件配置建议。通过对比从机地址与寄存器地址的特性差异,帮助开发者掌握I2C通信的核心机制,并给出从简单EEPROM到复杂传感器驱动的渐进式学习建议。

2025-12-30 18:57:27 1601

原创 STM32中USART和UART的区别是什么?

摘要:UART和USART是嵌入式通信中常见的串行接口。UART仅支持异步通信,使用TX/RX两根线;而USART支持同步/异步两种模式,增加了时钟信号线(CK)。STM32中,USART功能更丰富,支持硬件流控制、LIN总线等,同步模式下可实现更高波特率。实际应用中,简单通信可选UART,高速同步通信必须使用USART。现代STM32芯片中,USART通常可向下兼容UART功能,但反之不行。开发时应根据具体需求选择接口类型,充分利用外设资源。

2025-12-30 18:47:24 1218

原创 STM32定时器中断配置详解:以TIM2为例

本文详细介绍了STM32定时器中断的配置方法,以TIM2为例讲解了五个关键步骤:1)使能定时器时钟;2)配置预分频器和自动重载值;3)设置中断优先级;4)启动定时器;5)编写中断服务函数。文章提供了1ms定时中断的完整示例代码,并扩展介绍了PWM输出、输入捕获等高级应用。同时指出了调试常见问题,如中断标志未清除、时钟未使能等。针对不同STM32系列(F1/F4/F7)的差异进行了说明,强调掌握底层寄存器操作的重要性。通过本文,开发者可系统学习STM32定时器中断配置,从基础应用到高级功能实现。

2025-12-29 13:52:31 1050

原创 STM32 GPIO输出模式配置详解:从寄存器层面理解引脚控制

STM32 GPIO寄存器详解及配置方法:本文系统介绍了STM32微控制器的GPIO寄存器组,包括MODER(模式)、OTYPER(输出类型)、OSPEEDR(速度)等7个核心寄存器功能及配置方法。重点解析了输出模式设置、推挽/开漏选择、速度优化等关键配置,提供了完整的LED闪烁示例代码,并对比了F1与F4/F7系列的寄存器差异。文章强调时钟使能、原子操作等最佳实践,给出了位带操作等性能优化技巧,指出寄存器级编程在代码精简、执行效率和控制精度方面的优势,建议开发者结合参考手册灵活选择库函数或直接寄存器操作方

2025-12-29 13:43:09 1188

原创 STM32平衡车测试,定时中断读取速度

摘要:本文介绍了STM32中PWM输出和编码器测速的实现方法。首先通过HAL库配置PWM输出并动态调整占空比,然后详细说明了编码器接口的配置流程,包括定时器设置、中断处理和速度计算。重点阐述了编码器溢出检测机制和转速计算公式,通过TIM3记录脉冲数、TIM2提供时间基准来实现精确测速。最后提到在CubeMX中完成配置后,可通过串口输出测试结果。

2025-12-28 09:08:26 867

原创 STM32的ADC是什么,其转换精度通常有那些选项?

本文深入解析STM32微控制器的模数转换器(ADC)模块,重点探讨其转换精度的关键要素。文章指出ADC精度不仅取决于12位分辨率,更受参考电压稳定性、采样时间配置、时钟频率及PCB布局等多因素影响。详细介绍了偏移误差、增益误差等关键参数,并提供了实用建议:使用外部基准电压源、合理配置采样周期、实施软件校准与滤波等优化措施。通过系统性考虑内部误差和外部条件,开发者可充分发挥STM32ADC性能,实现高精度模拟信号采集。

2025-12-28 09:02:52 924

原创 江科大无限透传模块程序编写HC-40,无线调节PID,各种参数。

本文介绍了基于STM32的蓝牙串口通信程序实现过程。主要内容包括:1.硬件连接采用蓝牙模块替代USB转串口;2.程序实现了串口数据收发、OLED显示、按键控制、滑杆和摇杆数据处理等功能;3.详细讲解了数据包格式修改、字符串分割(strtok)、比较(strcmp)和数值转换(atoi/atof)等关键函数的使用;4.提供了完整的main.c和serial.c程序代码,实现了蓝牙指令解析、数据显示和波形绘制等功能。通过该程序,可以完成蓝牙指令接收、数据显示和远程控制等功能,为物联网设备开发提供了实用参考。

2025-12-27 09:18:24 1097

原创 逻辑最清晰的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 1655

空空如也

空空如也

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

TA关注的人

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