HAL库串口printf函数配置

STM32 HAL 库实现 printf 串口打印调试信息 在代码调试过程中,经常使用 printf 函数输出调试信息。我们重定义 printf 函数,通过串口输出调试信息。 step1 main.c 文件中添加头文件 #include "stdio.h" step2 重定义 fputc 函数,代码添加至 main.c #ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else #define PUTCHAR_PROTOTYPE int fputc(int ch. FILE *f 阅读详情

目录

一、STM32CubeMX配置串口配置好时钟后,选择你的串口,生成代码。

二、修改代码——按如图顺序进入到uart.c中,加入如下两条语句,你的huart是数字几,后面就修改成几。

三、增加代码——如图所示把如下代码添加在uart.c的后面。

串口1:

串口2:

四、使用MicroLIB库

五、验证printf


一、STM32CubeMX配置串口
配置好时钟后,选择你的串口,生成代码。

二、修改代码——按如图顺序
进入到uart.c中,加入如下两条语句,你的huart是数字几,后面就修改成几。

串口1:

#include "stdio.h"
 extern UART_HandleTypeDef huart1;

串口2:

#include "stdio.h"
 extern UART_HandleTypeDef huart2;

三、增加代码——如图所示
把如下代码添加在uart.c的后面。

串口1:

   int fputc(int ch, FILE *f)
{
  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);
  return ch;
}
 
/**
  * 函数功能: 重定向c库函数getchar,scanf到DEBUG_USARTx
  * 输入参数: 无
  * 返 回 值: 无
  * 说    明:无
  */
int fgetc(FILE *f)
{
  uint8_t ch = 0;
  HAL_UART_Receive(&huart1, &ch, 1, 0xffff);
  return ch;
}

串口2:

   int fputc(int ch, FILE *f)
{
  HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 0xffff);
  return ch;
}
 
/**
  * 函数功能: 重定向c库函数getchar,scanf到DEBUG_USARTx
  * 输入参数: 无
  * 返 回 值: 无
  * 说    明:无
  */
int fgetc(FILE *f)
{
  uint8_t ch = 0;
  HAL_UART_Receive(&huart2, &ch, 1, 0xffff);
  return ch;
}

四、使用MicroLIB库


在keil中点击魔术棒,如下按钮 ,进入项目参数设置界面,在Target下勾选上Usb MicroLIB !!!实测发现不勾选会卡死在printf函数这里

五、验证printf

【STM32】HAL库串口配置以及重映射printf函数方法 使用CubeMX快速配置串口并重映射printf函数 阅读详情

相关推荐

STM32CubeMx配置串口使用printf函数打印数据(HAL库开发)

HAL库开发串口,打印printf

m0_58832575的博客 6286

【STM32+HAL库】---- 调试printf串口打印

只需要重新定义fputc函数,在fputc的函数中将数据通过串口发送,称之为:fputc重定向或者printf重定向。同理,只需要重新定义fputc函数,在scanf的函数中将数据通过串口接收,称之为:scanf重定向

欢迎来到我的博客 7149

基于Hal库stm32串口配置-printf函数-回调函数

打印到串口助手

weixin_66732375的博客 1602

STM32基于HAL库串口printf使用和接收

STM32基于HAL库,使用cubemx生成代码配置串口以及使用printf输出和中断输入 自用学习记录

Wang2869902214的博客 6512

【嵌入式学习-STM32CubeMX篇】配置HAL库串口并重定向printf和getchar函数

通过重定向这两个函数,可以实现对printf和getchar等高级函数的重定向,并且可以在更底层的级别上控制字符的输入和输出。同样,可以使用其他标准库函数,如fgets、fscanf等,它们依赖于getchar函数的输入。这样,可以通过重定向这两个函数,同时重定向其他使用fputc和fgetc的函数,如puts、fgets等,实现整个输入/输出流的重定向。需要注意的是,启用中断会增加代码复杂性和处理器负担,因此在使用中断之前,您需要仔细考虑系统的需求和性能要求,确保正确配置和处理中断,以充分利用其优势。

zengchenAAA的博客 3511

STM32G0学习手册——使用HAL库进行USART串口通讯

芯片基本外设配置 在SYS里面开启Serial Wire调试接口 在RCC里面使能HSE (Crystal/Ceramic Resonator) 配置时钟树 选中“HSE”、"PLLCLK",在HCLK(MHz)中输入64,回车,软件会自动配置数值。 配置USART1外设 在connectivity选项卡中,选择"USART1",在mode中选择:Asynchronous(异步通讯...

SCCE的专栏 1万+

一、hal库。stm32使用printf函数打印到串口

一、hal库。stm32使用printf函数打印到串口

BaldOf26的博客 2万+

HAL库+CubeMX+Stm32F405 实现串口定长收发、printf函数使用、自定义打印函数

HAL库+CubeMX+Stm32F405 实现串口定长收发、printf函数使用、自定义打印函数 详情请看:https://lindoglog.blog.youkuaiyun.com/article/details/107463926

【STM32】HAL库中使用printf

1. 勾选 Use MicroLIB。

soledade的博客 1805

锐浪报表 Grid++Report 子报表 Delphi

锐浪报表 Grid++Report 是国内较好的报表控件,本人一直使用它,做出很多特色的报表。可以说你的报表设计出来,它基本上能做出来。 但是它帮助文件上,说的不深,近期因为要做一个有关社工的报表,大表中,嵌套2个子表。可以说,一个表到三个数据集,分别打印。 在认真看了帮助的基础上,网上探索,基本无此类,特别是Delphi的帮助,几乎为零。经二天摸索,做出来了。 一、设计思路 1、大表和二个小表,可以设计为三个表,分别使用三个GridppReport控件,取名...

lyhoo163的专栏 9071

倍福Beckhoff运动控制功能块实战解析:从MC_ReadActualPosition到MC_GearInVelo

本文深入解析倍福(Beckhoff)TwinCAT运动控制功能块,从基础的MC_ReadActualPosition、MC_Power等轴状态读取与使能操作,到MC_MoveAbsolute、MC_MoveRelative等单轴定位指令,并重点剖析了用于动态速度同步的核心功能块MC_GearInVelo在飞锯等场景的应用。文章结合实战经验,详细介绍了齿轮耦合、电子凸轮(MC_CamIn)等高级同步功能的参数配置、调试技巧及常见问题,旨在帮助工程师快速掌握倍福运动控制工具箱,实现复杂的同步工艺。

transformer2023的博客 981

STM32使用Hal库支持printf

STM32配置HAL库支持printf函数

weixin_49048250的博客 2734

Windows环境下ABAQUS、Fortran 编译器及Visual Studio的安装和关联

点击Continue,在随后的弹窗中勾选accept,并点击Customize(注意,在接下来的安装图片中,显示的版本号是2024.2,图片来自于一次失败的安装,懒得再截图了,步骤毫无区别,请见谅)。在下一步中,保持默认选项,之后软件会自动关联到刚才安装到visual studio,随后下一步进行安装(如果电脑中已经安装有其他版本的visual studio,则只保留2022)。在随后的弹窗中,根据指示找到。以防万一,尽量暂时退出所有杀毒软件,关闭防火墙,一般不会有影响,为确保万无一失,可以执行此步。

samurai12的博客 9947

STM32CubeMX:配置HAL库串口并重定向 printf 和 getchar函数 (****)

STM32CubeMX:配置HAL库串口并重定向 printf 和 getchar函数 (****)

ken2232的博客 3376

直流有刷电机控制 - 驱动电路(二)

1.如图所示为最常见的推挽驱动电路,我附加了具有正反转功能的电机驱动控制,正反转是由两个继电器组成。使用推挽电路来驱动NMOS管时充电电流和放电电流都很大,因此NMOS管导通快,关断也快,而且NMOS温度不会很高。下面来介绍一下该电路的原理。(1)PWM_MCU是由单片机给出的PWM波信号,该信号是由一些列高低电平的方波构成。当信号为高电平的时候Q3导通,经过R47再到Q5的g极,此时mos导通,如果是K1闭合是正转那么K2闭合就是反转。(2)当PWM低电平时使得Q3关断,Q6导通。

u011030644的博客 4719

Python控制tek示波器(1)

如何使用Python来控制tek示波器

m0_47441496的博客 3379

【STM32-HAL库】串口配置、printf函数重定向

基于STM32F103C8T6,cubeMX的HAL库的串口配置教程。面向新手的教程。讲解了如何配置cubeMX以及如何配置Kill5。以及重定向printf和scanf函数,运用printf函数发送串口数据以及利用scanf函数接收串口数据。最后也讲解了如何解决串口为输出的问题。

qq_39150957的博客 1561

Python实战:解析腾讯视频M3U8加密链接并下载高清影片

本文详细介绍了如何使用Python解析腾讯视频M3U8加密链接并下载高清影片。从环境准备、抓包分析到核心代码实现,逐步讲解如何获取M3U8主链接、解析TS分片列表以及下载合并视频片段。文章还提供了多线程下载、断点续传和加密视频处理等优化方案,帮助开发者高效完成视频下载任务。

weixin_30836759的博客 525

STM32-HAL库 串口配置,printf函数重定向(创社派-STM32F407ZGT6)

串口收发,printf重定向,STM32F4串口接收发送,STM32F407串口接收发送、printf重定向

H_andQ的博客 1282

comfyui利用 SkyReels-V2直接生成长视频本地部署问题总结 2 :寻找丢失的model 和工作流中 get set 方法的应用

寻找丢失的model 和工作流中 get set 方法的应用,为什么有写工作流 中有很多断掉的节点,没有相互链接?

AI懒虫 1790

UWB芯片DW3000之PDOA测向实现源码

本文详细介绍如何基于UWB芯片DW3000之PDOA测向的源码实现。

DT程序员的博客 2613

【STM32】HAL库 STM32CubeMX教程四---UART串口通信详解

前言: 今天我们学习STM32CubeMX串口的操作,以及HAL库串口的配置,我们会详细的讲解各个模块的使用和具体功能,并且基于HAL库实现Printf函数功能重定向,UART中断接收,本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1、芯片:STM32F407ZET6 2、STM32CubeMx软件 3、IDE: M...

Z小旋 35万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

stm32单片机串口使用printf及u3_printf

无论是在51单片机还是在stm32,默认printf串口都是串口一。使用printf的时候头文件为"stdio.h",但是一些外部设备与单片机连接的时候使用的是串口(通常物联网用到的ESP8266,SIM9600等都是通过串口发送AT指令进行模式的配置的),但是printf函数却只有一个。在单片机中printf函数默认为串口一。所以试想能不能其他串口也组成类似于printf的函数。 printf(...

weixin_43305468的博客 5339

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

STM32(HAL)多串口进行重定向(printf函数发送数据)

在HAL库中,常用的printf函数是无法使用的。本文通过重映射实现在HAL库多个串口可进行类似printf函数的操作。

weixin_44597885的博客 3457

串口通讯知识梳理及在Stm32上的应用(HAL库)

文章目录一.前言二.串口数据的发送与接收三.串口波特率四.串口的数据格式(1)起始位(2)数据位(1)奇偶检验位(1)停止位五.物理接口的形式六.TTL、RS232、RS485电平标准六.九针串口(DB9)与四针串口七.串口通讯在Stm32上的应用 一.前言 二.串口数据的发送与接收 三.串口波特率 四.串口的数据格式 (1)起始位 (2)数据位 (1)奇偶检验位 (1)停止位 五.物理接口的形式 六.TTL、RS232、RS485电平标准 六.九针串口(DB9)与四针串口 七.串口通讯在Stm32上的应.

冬瓜的博客 8722

【STM32】printf()函数未定义问题调试

问题描述: 一般C语言中使用printf()函数时,包含#include "stdio.h"即可使用,但在Keil(HAL库)开发环境中使用不了。 问题分析: 未定义printf()使用的串口 解决方案: 在HAL库stm32xxxx_hal.c函数中,对输出串口进行定义与配置。 示例代码: extern UART_HandleTypeDef huart2; int fputc(int ch, FILE *f) { HAL_UART_Transmit(&huart2, (uint8_t

weixin_44064233的博客 3931
上一篇: 神经网络初次学习收获
下一篇: HAL库RTOS按键检测1min快速移植
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值