
stm32
文章平均质量分 86
jmlinux
擅长单片机、STM32、Linux ARM、项目管理。
高级项目工程师,有项目管理双证书:PMP(项目管理专业人员资格认证),软考高级证书。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C 语言开发中常见的开发环境
C语言开发环境选择指南:1)Dev-C++适合初学者但较老旧;2)VS Code灵活但需配置GCC/MinGW编译器;3)虚拟机+Linux(Vim+GCC)提供完整开发环境;4)嵌入式开发推荐KeilMDK或IAR等商用IDE。不同场景各有优势,可根据需求选择。#开发工具原创 2025-05-31 11:43:22 · 393 阅读 · 0 评论 -
STM32 利用SysTick实现高精度计时
STM32 HAL库利用ARM Cortex-M内核自带的24位递减计数器SysTick(系统节拍),它属于 NVIC的一部分,且可以产生 SysTick 异常(异常类型#15)。通过读取并判断计数值来实现精确延时,从0xFFFFFF向下计数到0。可以用作I2C、SPI通信中的时序控制,RTOS环境中作为心跳时钟原创 2025-02-24 22:45:23 · 1393 阅读 · 0 评论 -
STM32开发常用延时方式详解:原理、场景与代码示例
在STM32开发中,延时是常见的操作之一,实现方法多样。下面将详细介绍几种常用的延时方式、其工作原理、适用场景,并结合示例代码进行分析。原创 2025-02-24 21:31:57 · 1250 阅读 · 0 评论 -
STM32 HAL库0.96寸OLED显示液晶屏
本文介绍了使用STM32 HAL库通过I2C协议驱动0.96寸OLED显示屏的方法。首先概述了OLED的基本特性和应用,然后详细讲解了汉字点阵生成的方法,并提供了完整的代码示例,包括初始化、清屏、字符串显示和自定义汉字显示函数。这些代码实现了在STM32F103ZET6开发板上显示特定内容的功能,如英文句子和中文字符“慢慢变好”。原创 2025-02-23 21:28:22 · 3739 阅读 · 0 评论 -
仅需一个 HAL 库函数:轻松实现 STM32 的 SPI 编程(以 Flash 25Q128 为例)
主要介绍如何用HAL_SPI_TransmitReceive()函数实现对W25Q128 Flash存储器ID的读取。先介绍SPI是一种高速且简单的同步串行接口技术,由四根线((MOSI、MISO、SCLK和SS/CS))组成。接着介绍Flash ,它是串行闪存芯片,能提供更大存储容量。还提到STM32 HAL库简化了SPI编程,以正点原子精英V2开发板为例,给出开发环境及函数原型和参数。最后展示读取ID的代码示例,通过发送命令、接收数据并判断状态来获取ID。原创 2025-02-22 18:54:50 · 2866 阅读 · 0 评论 -
Flash串行闪存芯片入门指南:最小必要知识
Flash串行闪存芯片是一种非易失性存储器,即使在断电的情况下也能保存数据。它们通过 SPI(Serial Peripheral Interface) 接口与主控设备进行通信。相比于并行闪存,串行闪存具有引脚数少、封装小、成本低等优点。W25Q64和W25Q128都是常见的串行闪存芯片。原创 2025-02-20 22:54:03 · 1461 阅读 · 0 评论 -
一文读懂SPI通讯:简单易懂的大白话讲解
有些在电子设备里,主机和从机就靠着SPI通讯。它控制着数据传输的节奏,让主设备和从设备在规定的时间点上完成数据的发送和接收,就跟餐厅按照时间表保证服务流程有序进行一样。主设备通过这个引脚选中特定的从设备进行通信,只有被选中的从设备会响应主设备的命令,其他从设备就乖乖待着不吭声,当听不见。这一系列操作,就好比从设备接收到主设备的数据后,经过一番“加工”,再把处理好的数据通过MISO线返回给主设备。比如说顾客喊“来一份红烧肉,一份炒青菜”,这信息就从顾客这儿传到服务员耳朵里啦,就跟主设备把数据传给从设备一样。原创 2025-02-20 22:21:30 · 774 阅读 · 0 评论 -
STM32 HAL库I2C函数使用详解:以MPU6050传感器为例
引言I2C(Inter - Integrated Circuit)总线作为一种简单、高效的串行通信协议,广泛应用于各种传感器、存储器等设备的通信中。MPU6050 六轴传感器便是常见的基于 I2C 通信的设备,它能同时测量加速度和角速度,在机器人、无人机等领域有着广泛的应用。本文将详细介绍如何使用 STM32 HAL 库中的 I2C 函数与 MPU6050 传感器进行通信。一、开发环境。原创 2025-02-19 22:43:13 · 2196 阅读 · 0 评论 -
I2C(Inter-Integrated Circuit)协议:用大白话揭开它的神秘面纱
I2C是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息,主要用于短距离、低速的数据传输。这两条信号线分别是:SDA(Serial Data Line):数据线SCL(Serial Clock Line):时钟线通过这两条线,多个设备可以连接到同一个I2C总线上,并且每个设备都有一个唯一的地址,这样它们就能互相识别并进行数据交换了。CPU作为主机,被控IC1、IC2、IC3、IC4作为从机,通过SDA和SCL来连接。原创 2025-02-19 22:10:41 · 1075 阅读 · 0 评论 -
STM32 HAL库USART串口DMA IDLE中断编程:避坑指南
本文介绍STM32F103 HAL库USART串口DMA IDLE中断.坑在HAL_UARTEx_ReceiveToIdle_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)的DMA的半满中断-UART_DMARxHalfCplt,关闭 DMA 的半传输完成中断 __HAL_DMA_DISABLE_IT(&hdma_usart1_rx, DMA_IT_HT);原创 2025-02-18 22:45:15 · 2355 阅读 · 0 评论 -
STM32 HAL库USART串口中断编程:环形缓冲区防止数据丢失
HAL_UART_Receive接收最容易丢数据了,可以考虑用中断来实现,但是HAL_UART_Receive_IT还不能直接用,容易数据丢失,实际工作中不会这样用,STM32 HAL库USART串口中断编程:演示数据丢失,需要在此基础优化一下. 本文介绍STM32F103 HAL库USART串口中断,利用环形缓冲区来防止数据丢失.原创 2025-02-18 09:50:18 · 1302 阅读 · 0 评论 -
STM32 HAL库USART串口中断编程:演示数据丢失
,HAL_UART_Receive最容易丢数据了,可以考虑用中断来实现,但是HAL_UART_Receive_IT还不能直接用,容易数据丢失,实际工作中不会这样用,本文介绍STM32F103 HAL库函数使用并指出问题,下一篇再解释解决方案:加入环形缓冲区.主要是两个函数的调用和实现.HAL_UART_Receive_IT和HAL_UART_RxCpltCallback(huart)原创 2025-02-17 23:05:06 · 1398 阅读 · 0 评论 -
STM32 Keil报错#67: expected a “}“ 和 Error: L6915E: Library reports error: __use_no_semihosting
一、问题:Keil报错#67: expected a "}"STM32 在Keil中更改主控芯片导致的编译报错:..\CMSIS\stm32f10x.h(298): error: #67: expected a "}"keil程序默认选的是STM32F103C8芯片,现在要用STM32F103F103ZET6型号,直接更改魔法棒里的devices的芯片型号1、报错原因:宏定义与型号不匹配 STM32F10X_MD2、解决方法宏定义改为:2、解决方法宏定义改为:STM32F10X_HD原创 2025-01-05 22:30:35 · 1100 阅读 · 0 评论 -
STM32定时器对象捕获功能测量市电频率
在很多嵌入式系统中,精确地测量外部信号的频率是一个常见需求,尤其是对于需要同步外部电源(如市电)的应用。市电频率(50Hz或60Hz)是电力系统中一个至关重要的参数。在许多场景下,特别是UPS(不间断电源)和电力监控系统中,我们需要通过微控制器实时测量市电频率。在这篇博客中,介绍如何使用 STM32F4 系列微控制器的 定时器2的输入捕获功能 来精确测量市电频率。我们不仅会展示如何配置硬件和编写代码,还会深入理论背景,帮助你全面理解这个过程。原创 2024-12-21 21:44:43 · 1159 阅读 · 0 评论 -
STM32 HAL库 + LM2904运算放大器 + ADC + 4-20ma液位传感器:电路设计及代码实现
4-20ma液位传感器在工业自动化和日常应用中非常常见,例如水位监测、液体储罐管理等。本文将结合STM32 HAL库,带你实现一个简单的液位监测demo,从电路设计到代码实现,实现通过单通道ADC采集4-20ma液位传感器的信号,并通过串口将采集到的液位百分比打印输出。具体流程包括:通过分压电阻将获得4-20ma液位传感器的分压电压,再利用运算放大器LM2904对信号进行放大,随后将信号输入STM32的ADC2模块读取通道6(对应引脚PA6)。最终,处理后的温度数据通过串口1发送至串口助手进行实时显示。原创 2024-12-14 21:01:03 · 2140 阅读 · 1 评论 -
STM32 HAL库 + LM358运算放大器 + ADC + VDO温度传感器:电路设计及代码实现
本文将详细介绍如何使用STM32F407的HAL库,实现通过单通道ADC采集VDO温度传感器的信号,并通过串口将采集到的温度值打印输出。具体流程包括:通过分压电阻将获得VDO温度传感器的分压电压,再利用运算放大器LM358对信号进行放大,随后将信号输入STM32的ADC1模块读取通道9(对应引脚PB1)。最终,处理后的温度数据通过串口1发送至串口助手进行实时显示。该电路在气压传感器等同样适用。原创 2024-12-03 09:24:04 · 1705 阅读 · 0 评论 -
STM32 HAL库 + LM2904运算放大器 + ADC + VDO温度传感器:电路设计及代码实现
本文将详细介绍如何使用STM32F407的HAL库,实现通过单通道ADC采集VDO温度传感器的信号,并通过串口将采集到的温度值打印输出。具体流程包括:通过分压电阻将高电压转换为低电压,再利用运算放大器LM2904对信号进行放大,随后将信号输入STM32的ADC1模块读取通道7(对应引脚PB0)。最终,处理后的温度数据通过串口1发送至串口助手进行实时显示。原创 2024-12-02 22:19:46 · 1402 阅读 · 0 评论 -
STM32F407 HAL库实现LM2904运算放大后的单通道ADC采集与串口电压值显示
本文将介绍如何使用STM32F407的HAL库实现测量经过运算放大器LM2904的,实现单通道ADC采集,并通过串口将采集到的电压值打印出来。具体地,通过分压电阻,将高电压转化成小电压,再经过运算放大器LM2904放大,输入到ADC3读取通道7(对应引脚PF9),并将转换后的电压值用串口1发送到串口助手上进行显示。原创 2024-11-26 09:54:20 · 1506 阅读 · 0 评论 -
基于STM32 HAL库的FFT计算与数学运算:幅值、频率、均方根、平均值、最大值、最小值、峰峰值与标准差
介绍如何使用STM32微控制器执行FFT计算,以提取信号的幅值、频率、均方根、平均值、最大值、最小值、峰峰值与标准差。1. 信号采集首先,我们需要使用STM32的ADC模块来采集模拟信号,比如三相交流电。ADC将模拟信号(如电压或电流)转换为数字信号,供后续处理。采样数量:FFT的计算通常需要2的整数次幂的采样点数(如1024、2048)。采样点数越多,频率分辨率越高。采样频率:采样频率必须至少是信号频率的两倍(奈奎斯特定理)。例如,分析50Hz的信号时,采样频率应至少为100Hz。原创 2024-11-17 23:01:56 · 4794 阅读 · 0 评论 -
STM32F407 HAL+定时器TIM+ADC+DMA计算正弦波的平均值、均方根、最大值、最小值、峰峰值
STM32F407 HAL+定时器TIM+ADC+DMA计算正弦波的平均值、均方根、最大值、最小值、峰峰值。在STM32F407系列微控制器的开发中,结合定时器、ADC(模数转换器)与DMA(直接存储器访问)控制器,能够显著提升数据采集与传输的效率。本文将指导你如何使用STM32 HAL库,通过定时器触发ADC1的单通道采集,利用DMA传输数据,累加的方式计算正弦波的平均值、均方根、最大值、最小值、峰峰值,最终通过串口将电压值打印出来,仅显示简单演示过程,精度不高。具体实现中,我们将读取ADC1的通道5(原创 2024-11-14 23:22:54 · 1951 阅读 · 0 评论 -
SMT(表面贴装技术)
当时,随着电子设备的日益复杂和集成度的提高,传统的插装技术已经无法满足生产的需求。乔布斯刚在车库创立苹果公司时候,手工焊接的方式生产了一批苹果电脑,做100个可以手工焊接,如果要10000个,随着生产规模的扩大和产品复杂度的提高,手工焊接已经无法满足生产需求。PCBA的形成过程包括PCB的设计、制造、元器件的采购与筛选、SMT贴片、DIP插件(如有需要)、焊接、测试与调试等步骤。这些元件是电子产品功能实现的基础。:SMT工艺通过精确的贴装和焊接,能够确保元器件的准确放置和牢固连接,从而提高产品的质量。原创 2024-10-28 23:12:43 · 2799 阅读 · 0 评论 -
STM32 HAL库UART查询方式实例
本文中介绍USART编程涵盖了三种主要方法,详细介绍STM32F407微控制器结合HAL库,通过UART的查询方式来实现一个实用的密码验证程序。提示用户键入一个字符作为密码。只有当用户精准地输入字符'6'时,系统才会反馈“密码正确”的确认信息。反之,若输入的字符非'6',则会立即显示“密码错误,请重新输入”的提示。原创 2024-10-07 08:21:08 · 1294 阅读 · 0 评论 -
环形缓冲区(Ring Buffer)在STM32 HAL库中的应用:防止按键丢失
环形缓冲区(Ring Buffer)又称为循环缓冲区或圆形队列,是一种数据结构,它用于管理固定大小的数据存储空间。环形缓冲区本质是一个一维数组,不过是收尾相连的,类比一条蛇咬自己尾巴。环形缓冲区重要性:避免数据被覆盖。比如,使用中断函数或者定时器函数记录按键,如果只能记录一个键值的话,如果不能及时读走出来,再次发生中断时新值就会覆盖旧值。使用环形缓冲区可以避免数据被覆盖。本文将详细介绍环形缓冲区的概念、工作原理,并以STM32F407微控制器结合HAL库为例,探讨如何利用环形缓冲区有效防止按键输原创 2024-10-06 22:19:34 · 1499 阅读 · 0 评论 -
STM32F407 HAL库定时器触发ADC采集与DMA数据传输(定时器TIM+ADC+DMA)
在STM32F407系列微控制器的开发中,结合定时器、ADC(模数转换器)与DMA(直接存储器访问)控制器,能够显著提升数据采集与传输的效率。本文将指导你如何使用STM32 HAL库,通过定时器触发ADC1的单通道采集,利用DMA传输数据,最终通过串口将电压值打印出来。具体实现中,我们将读取ADC1的通道5(对应引脚PA5),并将转换得到的电压值发送到串口助手上进行显示。原创 2024-10-06 10:01:40 · 5649 阅读 · 11 评论 -
STM32F407 HAL库单通道ADC采集并串口打印电压值
本文将介绍如何使用STM32F407的HAL库实现单通道ADC采集,并通过串口将采集到的电压值打印出来。具体地,我们将使用ADC1读取通道5(对应引脚PA5),并将转换后的电压值用串口1发送到串口助手上进行显示原创 2024-10-05 17:44:48 · 2760 阅读 · 0 评论 -
移远NB模块(BG95-M6)用串口助手对接MQTT平台方法
同时串口助手收到APP RDY则为正常的工作状态。二、BG95-M6设备开机,当BG95-M6红灯(POWER)亮起则为设备正常上电开机。指令,收到如下图所示回复则说明卡正常工作。其他状态为卡未正常注网,请检查卡的问题。2.串口调试端,接到COM1(MAIN)接口位置,USB端接入电脑。发送结束符后,MQTT服务器做出“登录”主题的回应,此时应收到如下图所示数据。其他状态为卡未正常注网,请检查卡的问题。如下图所示返回为进入了数 据模式,可以发送数据。发送设置如下图所示。如下图 所示返回状态为正常。原创 2024-09-28 23:15:54 · 744 阅读 · 0 评论 -
STM32上实现FFT算法精准测量正弦波信号的幅值、频率和相位差(标准库)
在研究声音、电力或任何形式的波形时,我们常常需要超越表面现象,深入到它们的本质。FFT(快速傅里叶变换)就是这样一种强大的工具,它能够揭示隐藏在复杂信号背后的频率成分。本文将带你走进FFT的世界,了解它是如何将时域信号转化为频域信号,如何使用STM32微控制器和FFT来分析正弦信号的幅值、频率和相位差。原创 2024-09-16 19:27:26 · 17771 阅读 · 24 评论 -
电学基础概念详解及三相电公式汇总
本文全面介绍了电路的基本组成、电学核心概念以及三相电的常用公式。首先,通过水力学中的现象类比,生动解释了电路中电池、开关、电阻和灯泡等元素的功能,帮助读者更好地理解电压、电流和电阻之间的关系。随后,详细阐述了电路的基本概念,包括电路的三种状态(通路、断路、短路)、电阻的计算公式及欧姆定律、电动势、电流、电压等关键概念。此外,还介绍了电容、电感、滞后与超前、相序、频率等进阶概念,并详细解释了有功功率、无功功率和视在功率的定义及其计算公式。文章汇总了三相电系统中常用的计算公式,包括三相各相电压等。原创 2024-09-14 19:49:31 · 2398 阅读 · 0 评论 -
STM32F103的HAL库ESP8266模块AT指令进行调试
实验使用的是ESP8266(ESP-01)模块。ESP8266 系列模组是深圳市安信可科技有限公司开发的一系列基于乐鑫ESP8266EX的低功耗UART-WiFi芯片模组,可以方便地进行二次开发,接入云端服务,实现手机3/4G全球随时随地的控制,加速产品原型设计。原创 2024-09-07 23:56:05 · 1989 阅读 · 0 评论 -
STM32F103与ESP8266 WIFI模块的USART中断调试
本文概述了利用STM32F103的HAL库,通过USART中断方式调试ESP8266(ESP-01S)WIFI模块的方法。首先介绍了开发环境和ESP-01S模块的基本特点与功能,随后展示了如何通过电脑PC的串口助手进行初步调试与验证。最后,重点阐述了如何利用STM32F103单片机,结合其USART中断功能,明确ESP8266模块已可以用AT指令进行调试。原创 2024-08-28 23:06:44 · 1430 阅读 · 0 评论 -
定时器处理按键抖动
2.按键按下,延时10ms,再判断是否有中断,直到没中断。总结,这段代码的主要用途是在特定的GPIO引脚(是GPIO_PIN_14,按需更改引脚)发生外部中断时,启动一个10单位时间的定时器。计数法则是在检测到按键状态变化后,连续检测一定次数,如果状态没有发生变化,则确认为有效状态。按键抖动会导致单片机在处理按键信号时出现误判,即一次按键操作可能被错误地识别为多次操作,从而导致误处理。在闭合和断开时,由于触点的弹性作用,会产生一系列的抖动现象。变量的值,表示按键事件被记录,经试验,能满足按键防抖处理要求。原创 2024-08-18 16:10:56 · 955 阅读 · 0 评论 -
超简单4行代码-STM32F103的HAL实现有源蜂鸣器报警
在嵌入式项目开发中,使用蜂鸣器作为简单的报警或提示装置非常常见。根据不同的应用场景,我们可能会选择有源蜂鸣器或无源蜂鸣器。本文将重点介绍如何通过STM32F103系列单片机,利用HAL库,仅通过4行代码实现对有源蜂鸣器的控制,实现基本的报警功能。原创 2024-08-14 22:55:03 · 1590 阅读 · 0 评论 -
STM32单片机C语言:继电器控制220v灯泡亮灭
本文旨在详细阐述如何利用STM32单片机结合继电器模块,实现对220V灯泡亮灭的远程控制。我们将深入探讨继电器的工作原理,构建相应的硬件电路,并提供具体的程序实现步骤,在智能家居与自动化控制领域的应用的比较多。原创 2024-07-27 16:13:41 · 2569 阅读 · 0 评论 -
STM32开发方式的演变与未来展望
2014年,ST公司推出了HAL(硬件抽象层)驱动库和MCU图形化配置软件STM32CubeMX,为开发者提供了更加高级、通用的接口。2017年以来,随着STM32CubeMX和STM32CubeIDE的推广和普及,HAL开发方式逐渐成为STM32开发的主流。标准库通过封装底层硬件操作的函数,为开发者提供了更加简洁、易用的接口,降低了开发难度,提高了开发效率。同时,保持开放的心态和学习的热情,不断探索和尝试新的开发方式和思路,以应对不断变化的技术环境。随着技术的不断进步,辅助编写代码的工具也越来越多样化。原创 2024-06-28 23:55:51 · 1022 阅读 · 0 评论 -
常见的Wi-Fi蓝牙模组
在嵌入式领域,常见的Wi-Fi蓝牙模组确实包括多个知名品牌这些Wi-Fi蓝牙模组都提供了丰富的接口和功能,支持多种通信协议和标准,使得开发者能够更方便地构建各种嵌入式应用。在选择模组时,需要根据具体的应用需求、成本预算、性能要求等因素进行综合考虑。而在选择开发方式时,需要根据具体的应用场景和需求来权衡利弊。如果项目需要快速实现设备接入物联网或云平台,且对性能要求不高,那么AT指令开发是一个很好的选择。而如果项目需要实现更复杂的控制算法、更高效的通信协议以及更精细的硬件管理,那么进行二次开发是更好的选择。原创 2024-06-21 23:36:07 · 1325 阅读 · 0 评论 -
串口屏介绍
串口屏(Serial LCD/Serial TFT Display)是一种集成了串行通讯功能的显示屏,广泛应用于各种嵌入式系统、工业控制、人机界面(HMI)等领域。该显示屏通过串口(如UART、RS232、RS485等)与主控器件(如单片机、PLC、嵌入式处理器等)进行通讯,简化了图形显示和触控控制的设计。原创 2024-06-14 22:17:18 · 3192 阅读 · 0 评论 -
STM32F103单片机C语言模块化编程实战:按键控制LED灯并串口打印详解与示例
虽然这里演示的是STM32F103,但是STM32F407还是STM32H系列等,但是可直接将LED、按键、串口文件复制使用,仅供需改头文件的引脚,这里是用STM32F407实现的介绍(http://t.csdnimg.cn/CWVUM)。之前介绍了很多关于点灯的方法,比如轮询、定时器中断、PWM、按键点灯等方式,这些文章使用的编程方法都不是模块化的编写方式,往往会导致代码可读性差、重用性差、扩展性差以及测试和维护困难等问题。为了避免这些问题,我们实际工作中通常会采用模块化的编写方法。原创 2024-04-24 20:40:12 · 2293 阅读 · 2 评论 -
STM32单片机C语言模块化编程实战:按键控制LED灯并串口打印详解与示例
模块化的编写方式对之前的代码封装了一层,提供了与LED、按键、串口硬件交互的接口,使得软件开发者可以在不直接操作硬件的情况下控制LED灯、按键、串口,可以直接用到STM32F103、STM32H系列等中,如果引脚不一样,只需修改引脚即可。通过上面的代码,希望你更多的采用模块化的编写方式,确保代码结构清晰、功能明确,提高可读性和可维护性,降低功能耦合,增强重用和扩展性,也促进并行开发(比如A员工做LED灯、B员工做按键、C员工做串口),提升效率,便于项目管理和维护。原创 2024-04-23 21:57:55 · 1880 阅读 · 0 评论 -
STM32单片机C语言模块化编程实战:按键控制LED灯详解与示例
之前介绍了很多关于点灯的方法,比如轮询、定时器中断、PWM、按键点灯等方式,这些文章使用的编程方法都不是模块化分层的编写方式,往往会导致代码可读性差、重用性差、扩展性差以及测试和维护困难等问题。为了避免这些问题,我们实际工作中通常会采用模块化分层的编写方法,这样可以确保代码结构清晰、功能明确,提高代码的可读性和可维护性,同时降低功能之间的耦合度,增强代码的重用性(无论是STM32F103还是STM32F407或是STM32H系列等,直接将文件复制使用)和扩展性。模块化分层的编写方式还有助于实现代码的并行原创 2024-04-22 21:55:35 · 2759 阅读 · 1 评论 -
利用STM32 HAL库实现USART串口通信,并通过printf重定向输出“Hello World“
上一篇使用STM32F407的HAL库只需1行代码实现USART1串口打印“Hello World!”,而平时都是用printf打印的,现在每次都要调用HAL_UART_Transmit()函数,比较麻烦,怎么解决呢?采用fputc调用HAL_UART_Transmit实现printf重定向的,它有三个好处。对HAL_UART_Transmit实现printf重定向可以带来代码效率和可读性的提升、调试过程的简化以及灵活性和扩展性的增强等好处。原创 2024-04-22 07:34:16 · 4363 阅读 · 1 评论