自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 计算机二级公共基础知识点

计算机二级公共基础

2022-10-23 22:51:24 1540

原创 接触感知 & 钳位电路分析

以下是NG板接触感知电路的原理图。两极分别为P3和P4S,电压值P4S < P3。电路结构分两部分,第一部分对输入电压进行分压+钳位。后级电路使用LM113比较器芯片进行电压比较,输出ST接触感知信号。

2025-05-16 20:00:47 691

原创 STM32F429串口通信进阶:基于DMA的非阻塞数据收发解析

变量名类型功能描述rx3_buffer接收缓冲区,存储DMA搬运的字节数据uint16_t实际接收字节数,通过DMA剩余次数计算uint8_t接收完成标志,空闲中断触发后置1接收侧:DMA自动搬运数据,空闲中断精准检测帧结束发送侧:灵活支持单字节/批量数据,DMA独立完成传输系统级优势:CPU利用率提升90%以上,适合复杂嵌入式场景本文提供的代码框架可直接应用于实际项目,通过调整波特率、缓冲区大小等参数,能适配不同通信需求。

2025-05-16 15:03:09 605

原创 如何使用C51的Timer0实现定时功能

通过合理配置定时器0,可以实现从微秒级到秒级的定时控制。定时器从初值开始计数,溢出时触发中断。

2025-05-13 16:24:14 462

原创 STM32F429 引脚功能

通过合理规划引脚功能,结合 STM32CubeMX 工具,可高效完成 STM32F429 的硬件设计。实际开发中建议优先复用常用外设引脚(如 UART、SPI),并预留调试接口(SWD)。STM32F429 系列芯片通常采用。

2025-05-13 00:56:11 732

原创 基于 STM32 HAL 库实现 **串口 DMA + 状态机接收** 的代码框架(2)

以下是基于 STM32 HAL 库实现。,确保数据完整性和低 CPU 占用率。通过此方案,可高效实现串口数据的。的代码框架,支持帧头 (

2025-05-13 00:28:58 407

原创 八、基于HAL库,实现printf()打印调试函数

在STM32开发中,使用HAL库实现printf函数的重定向需要将标准输出映射到串口(如USART)。

2025-05-12 19:57:23 241

原创 七、基于HAL库,实现串口+DMA+状态机通信实现

在嵌入式系统中,实现可靠的串口通信至关重要。结合STM32 HAL库的串口、DMA功能和状态机设计模式,可以高效处理上位机发送的指令帧。下面我将详细介绍如何实现这个功能。这种设计结合了DMA的高效数据传输能力和状态机的灵活解析能力,能够可靠地接收和解析上位机发送的指令帧,同时最大限度减少CPU占用,是嵌入式系统串口通信的理想解决方案。

2025-05-12 18:58:00 437

原创 六、STM32 HAL库回调机制详解:从设计原理到实战应用

依赖倒置原则:高层模块(应用逻辑)不依赖低层模块(硬件驱动),二者都依赖抽象(回调接口)开闭原则:对扩展开放,对修改关闭——通过重写回调函数扩展功能,而不修改HAL库源码保持回调函数短小:避免在回调中执行耗时操作使用标志位或消息队列:将复杂处理逻辑放到主循环中合理使用临界区:保护共享资源,避免竞态条件文档化回调逻辑:清晰标注回调函数的触发条件和处理流程单元测试:对回调函数进行独立测试,确保其正确性。

2025-05-12 18:43:37 1016

原创 五、STM32 HAL库中断处理机制详解:从原理到实战

关注点分离:将硬件中断处理与应用逻辑解耦代码复用:相同的中断处理模式适用于所有外设简化开发:通过回调函数机制,降低中断编程复杂度提高可靠性:标准化的中断处理流程减少了潜在错误对于开发者而言,理解HAL库中断处理机制不仅是掌握一种编程技巧,更是学习现代嵌入式系统设计的重要一步。通过合理运用中断,结合DMA和低功耗技术,可以构建出高效、稳定且响应迅速的嵌入式系统。

2025-05-12 18:35:47 888

原创 四、STM32 HAL库API完全指南:从功能分类到实战示例

STM32 HAL库(Hardware Abstraction Layer)作为STMicroelectronics推出的统一驱动框架,提供了覆盖所有STM32外设的标准化API。HAL库的API设计遵循严格的分层架构和命名规范,旨在简化开发流程并提高代码可移植性。掌握这些API分类和使用技巧,开发者可以高效地利用HAL库完成各种STM32项目开发,从简单的GPIO控制到复杂的多外设协同工作。HAL库的标准化设计使得代码更具可读性、可维护性和可移植性,是STM32开发的首选方案。

2025-05-12 18:24:07 521

原创 三、HAL的MSP机制详解

关注点分离(Separation of Concerns)。代码的可维护性:硬件配置和应用逻辑清晰分离跨平台的兼容性:同一套应用代码可运行于不同STM32芯片开发效率提升:配合STM32CubeMX,大幅减少重复编码工作对于STM32开发者来说,掌握MSP机制不仅是使用HAL库的基础,更是理解如何设计高质量嵌入式系统架构的重要一步。通过合理运用MSP机制,开发者可以更专注于产品功能的实现,而非底层硬件的差异。

2025-05-12 18:03:45 453

原创 二、HAL库的命名规则详解

外设实例定义__HAL_RCC_<外设>_CLK_ENABLE()标志位操作__HAL_<外设>_GET_FLAG()配置参数HAL_<外设>_STATE_xxx示例// 使能USART2时钟// 获取UART接收标志HAL_UART_STATE_READY // UART就绪状态HAL库的命名规则不仅仅是代码风格的统一,更是一种面向接口编程隐藏实现细节:通过统一的命名和API,屏蔽不同芯片系列的底层差异降低学习成本:开发者掌握一套命名规则,即可通用于所有外设提高代码可读性。

2025-05-12 17:52:44 736

原创 一、HAL库的设计理念详解:从架构到实践

STM32 HAL库(Hardware Abstraction Layer)是STMicroelectronics为简化STM32系列芯片开发而设计的驱动框架,旨在解决跨系列兼容性和开发复杂性问题。HAL库采用分层架构,包括用户应用层、HAL API层、底层支持层(LL)和MCU硬件层,通过MSP机制将硬件相关配置与通用初始化解耦,提升代码复用性。HAL库广泛使用回调函数处理异步事件,支持事件驱动编程,并与LL库协同工作,提供高效且灵活的硬件控制。尽管HAL库在性能和代码体积上存在争议,但其设计哲学通过架构

2025-05-12 17:40:15 637

原创 学习模拟电路

掌握模拟电路需要耐心积累,尤其要注重理论与实践的结合,逐步培养对电路“直觉”和调试能力。

2025-04-22 14:31:50 783

原创 STM32的定时器输出PWM时,死区时间(DTR)如何计算

在 STM32F429(以及所有 STM32F4 “高级定时器”)中,死区时间由 TIMx_BDTR 寄存器的 8 位 “Dead‑Time Generator” 字段 DTG[7:0] 来配置。其计算分三步:不过,STM32F429芯片的TIM1时钟频率一般等于其系统频率:180MHz.2. DTG 字段分区及死区时间公式DTG[7:5] 共 3 位,根据其值可分为 4 个区间,不同区间死区增量和基数不同:citeturn3search3总结:死区时间 = 区间映射后的 “索引值” × 对

2025-04-22 14:05:28 666

原创 详解STM32时基单元中参数 TIM_ClockDivision 的含义

使用输入捕获功能且信号存在噪声时,通过分频提高滤波效果(如选择或高级定时器的互补输出场景,需优化死区时间和同步边沿(通常保持默认值,除非特殊需求)。低速信号测量时,通过降低滤波器时钟频率,避免高频干扰误触发输入捕获。配置原则:在保证信号可靠性的前提下,尽量选择最小分频系数()以减少响应延迟;噪声较大时逐步提高分频系数(→。

2025-04-18 15:49:58 764

原创 如何使用STM32F429 定时器 TIM1 输出 PWM

STM32F429 的。

2025-04-18 14:19:40 923

原创 STM32F429 的时钟系统,从AHB到APB1和APB2再到外设

系统时钟(180MHz)├─ AHB 总线(168MHz,HCLK)│ ├─ APB2 总线(90MHz,PCLK2)→ 高速外设(TIM1、GPIO、ADC)│ └─ APB1 总线(45MHz,PCLK1)→ 低速外设(TIM2、UART、I2C)└─ 其他时钟(如 USB、SDIO 专用时钟)

2025-04-18 14:18:08 909

转载 MDK_Keil5调试汇总

STM32单片机在开发过程中很多大一部分时间在调试与修改程序上,尤其是对于一些异常问题的抓取与分析,因此Keil5的在线调试功能便完美的契合了STM32的调试需求,各种调试手段与方法也层出不穷。本文着重从基本的调试原理、功能构件及技巧上进行分析,系统性的帮助读者了解在线调试功能以及解决调试中的问题,也可为后期的调试提供一些参考。内核调试框图 STM32F4xx 的内核是 Cortex™-M4F,该内核包含用于高级调试功能的硬件。

2025-03-21 12:34:17 734

原创 基于工程化的研发设计(模块化、版本控制、代码规范)

作为嵌入式软件工程师,掌握工程化的研发设计方法能显著提升代码质量、团队协作效率和项目可维护性。

2025-03-21 10:04:50 813

原创 逐次逼近型A/D原理

SAR ADC通过巧妙的二进制搜索机制,在速度与精度之间找到了优雅的平衡点。随着工艺进步(如28nm CMOS)和算法优化,其分辨率已突破18位,转换速率迈向10MSPS。理解其底层原理,将帮助工程师在IoT、可穿戴设备等新兴领域设计出更高效的数据采集系统。思考题:若要将SAR ADC用于超声波成像(需>1GHz采样率),现有技术瓶颈是什么?可能的突破方向有哪些?动手实验推荐使用Arduino Uno(内置10位SAR ADC)测量光敏电阻值,观察不同采样率下的噪声水平变化。// 使用外部基准电压。

2025-03-18 17:59:00 1038

原创 A/D转换基本原理

ADC技术仍在持续进化,但核心原理始终是连接模拟与数字世界的基石。理解这些基础概念,将帮助工程师在物联网、AI、自动驾驶等前沿领域做出更优设计。配套资源推荐交互式ADC仿真工具:Visual Analog(TI提供)开源硬件项目:Arduino ADC性能优化实践经典教材:《数据转换器》 by Walt Kester。

2025-03-18 17:53:36 396

原创 Clang-format格式化代码工具

KEIL5 & clang-format格式化代码插件使用方法clang-format下载和配置文件示例

2025-03-12 16:25:36 207

原创 STM32F103C8T6 引脚功能详述

注:带 FT 的 IO 口可容忍 5V 电压,部分功能需引脚重定义。引脚号引脚名称类型I/O 口电平主功能默认复用功能重定义功能1VBATSVBAT2I/OPC13TAMPER-RTC3I/OPC14OSC32_IN4I/OPC15OSC32_OUT5OSC_INIOSC_IN6OSC_OUTOOSC_OUT7NRSTI/ONRST8VSSASVSSA9VDDASVDDA10PA0-WKUPI/OPA011。

2025-03-11 11:37:24 24987

原创 UART传输层通信协议详解:从原理到实战应用

UART历经数十年发展仍是嵌入式系统的通信基石。其设计精髓在于简单性与灵活性的平衡对于传感器数据采集、调试日志输出等场景,UART仍是首选方案在工业控制领域,结合RS-485可构建可靠的多节点网络通过软件协议扩展(如SLIP、COBS编码),可实现长数据包传输随着物联网设备的普及,UART在BLE模组、NB-IoT模组的AT指令控制中继续发挥重要作用。理解其底层机制,开发者便可更高效地解决实际工程问题。

2025-03-10 15:33:31 787

原创 Modbus RTU协议详解:基于 STM32 与脉冲电源的通信项目实例

Modbus 是一种主 - 从式协议,在本项目中,上位机作为主站发起通信请求,整流机(脉冲电源)作为从站进行应答。采用 RTU(十六进制数)传输模式,数据以二进制代码形式传输,通过 CRC16 循环冗余校验确保数据传输的准确性。通过本项目,深入了解 Modbus RTU 协议的原理、通信设置、消息帧格式、功能代码和寄存器地址表等内容,并使用 STM32 单片机实现与脉冲电源的通信。Modbus RTU 协议以其简单、可靠的特点,为工业设备之间的通信提供了有效的解决方案。

2025-03-10 15:04:34 1075

原创 电火花加工的极间电流特性及控制策略

极间电流的精准控制是电火花加工技术的核心挑战,需综合运用电力电子技术、精密机械控制与智能算法。

2025-03-10 14:24:28 662

原创 极间电压与极间距离的相互作用及对电火花加工的影响

在电火花加工(EDM)中,极间电压(Voltage)和极间距离(Gap Distance)是核心控制参数,二者的协同作用直接决定了放电稳定性、加工效率、表面质量以及电极损耗。以下是它们的详细关系及影响机制:电场强度控制极间电压 ( U ) 直接影响极间电场强度 ( E = U/d )(( d ) 为极间距离):放电能量决定因素单脉冲能量 ( W ) 由下式决定:[W = \int_{0}^{T} U(t) \cdot I(t) , dt]其中 ( U ) 为极间电压,( I ) 为放电电流,(

2025-03-10 14:11:18 680

原创 电火花加工的物理过程

电火花加工原理

2025-03-10 14:00:05 519

原创 深入理解C/C++内联函数:原理、应用与优劣分析

内联函数是一种特殊的函数,在编译时,编译器会尝试将内联函数的代码直接嵌入到调用该函数的地方,而不是像普通函数那样进行常规的函数调用。这样做的好处是避免了函数调用的开销,从而提高程序的执行速度。在C++中,使用inline// 定义内联函数return 0;在上述代码中,add函数被定义为内联函数。当编译器遇到add(3, 5)的调用时,它可能会直接将add在C++中,内联函数通常需要在头文件中定义。

2025-03-10 11:42:51 851

原创 全面解析C语言预处理器:从宏、条件编译到高级指令

预处理器

2025-03-10 11:20:42 974

原创 C语言排序算法详解

排序算法平均时间复杂度最坏时间复杂度最好时间复杂度空间复杂度稳定性冒泡排序On2O(n^2)On2On2O(n^2)On2OnO(n)OnO1O(1)O1稳定选择排序On2O(n^2)On2On2O(n^2)On2On2O(n^2)On2O1O(1)O1不稳定插入排序On2O(n^2)On2On2O(n^2)On2OnO(n)OnO1O(1)O1稳定快速排序On。

2025-03-03 15:27:33 1040

原创 C语言链表详解(单链表、双向链表、循环链表)

链表详解

2025-03-03 14:54:27 1231

原创 C/C++结构体的内存对齐详解(深入探究结构体在内存里的保存形式)

结构体内存对齐

2025-03-03 12:48:35 1135

原创 C语言字符串详解

字符串详解

2025-03-03 11:17:17 451

转载 SPI通信协议详解

SPI 是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola(摩托罗拉)首先在其MC68HCXX系列处理器上定义的。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。

2025-03-03 11:08:00 174

转载 IIC通信协议详解

IIC(Inter-Integrated Circuit)总线是一种由NXP(原PHILIPS)公司开发的两线式串行总线,用于连接微控制器及其外围设备。多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。在 CPU 与被控 IC 之间、IC 与 IC 之间进行双向传送,高速 IIC 总线一般可达 400kbps 以上。PS:这里要注意IIC是为了与低速设备通信而发明的,所以IIC的传输速率比不上SPI。

2025-03-03 10:51:09 510

原创 C语言数组

数组是一组具有相同数据类型的元素的集合,这些元素在内存中是连续存储的。数据类型 数组名[数组大小];数据类型:指定数组中每个元素的数据类型,如intfloatchar等。数组名:是数组的标识符,用于引用数组。数组大小:指定数组中元素的个数,必须是一个常量表达式。// 定义一个包含5个整数的数组// 定义一个包含10个浮点数的数组// 定义一个包含26个字符的数组// 初始化包含5个整数的数组// 初始化时可以省略数组大小,编译器会根据初始化列表的元素个数自动确定数组大小。

2025-03-03 09:58:41 334

原创 什么是JTAG、SWD?

SWD(Serial Wire Debug)即串行调试接口,是ARM公司开发的一种用于调试ARM Cortex系列微控制器的串行通信协议,它为嵌入式系统开发人员提供了一种高效、便捷的方式来对芯片进行调试和编程。

2025-03-03 09:46:10 3181

FreeRTOS入门手册_中文

FreeRTOS入门手册_中文

2025-03-20

FreeRTOS源码压缩包

正点原子提供的FreeRTOS源码压缩包。B站视频教程对应的版本

2025-03-20

ADC知识相关论文,来自知网

介绍了ADC的基本原理,主流的ADC技术包括逐次逼近型、积分型等。详细介绍了逐次逼近型ADC的实现过程,并设计了一款16位模数转换器。

2025-03-18

FreeRTOS的入门脑图

内容概要:文档详述了嵌入式系统的两种操作模式:裸机与RTOS,强调实时操作系统的关键价值,并深度剖析了广泛使用的开源RTOS—FreeRTOS的功能特性,应用场景及相关学习资源。它讲解了RTOS的基本概念如多任务、分时切换,解决了传统单一大程序的不足之处,在提高CPU利用率和实时响应性能上有很大优势,同时阐述了任务调度、堆栈管理、抢占模式等方面的内容。对于FreeRTOS则特别提及了其开源免费性、灵活性和优秀的社区文档支持。文档提供了关于FreeRTOS的全面介绍,不仅有基本的概念解析还包括实用的学习资源链接。 适合人群:对于想要深入了解嵌入式系统的开发者和技术爱好者;从事或希望涉足物联网行业的专业人士。 使用场景及目标:帮助读者理解裸机与RTOS区别,掌握RTOS关键特性,学会利用FreeRTOS来构建高效、实时响应的嵌入式应用。 其他说明:提供的学习材料涵盖丰富案例源代码以及逐步指导教程,非常适合希望快速上手机器人项目或其他硬件平台的新手开发人员。此外,对于已经拥有初步了解RTOS的用户也有助于深化相关理论认知并拓宽技能储备。

2025-03-14

空空如也

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

TA关注的人

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