STM32 HAL库串口重映射printf

这篇具有很好参考价值的文章主要介绍了STM32 HAL库串口重映射printf。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

STM32 CubeMX



一、STM32 CubeMX设置

STM32 HAL库串口重映射printf,单片机零散知识,stm32,嵌入式硬件,单片机

二、代码部分

添加代码

#include "stdio.h"
int fputc(int ch, FILE *f) {
	HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
	return ch;
}

keil设置

STM32 HAL库串口重映射printf,单片机零散知识,stm32,嵌入式硬件,单片机
microlib 是缺省 C 库的备选库。 它旨在与需要装入到极少量内存中的深层嵌入式应用程序配合使用。 这些应用程序不在操作系统中运行。
microlib 进行了高度优化以使代码变得很小。 它的功能比缺省 C 库少,并且根本不具备某些 ISO C 特性。 某些库函数的运行速度也比较慢,例如,memcpy()。

STM32 HAL库串口重映射printf,单片机零散知识,stm32,嵌入式硬件,单片机
实现效果:
STM32 HAL库串口重映射printf,单片机零散知识,stm32,嵌入式硬件,单片机
打印变量

printf("Hello, I am %s\r\n", "iii");		// printf输出字符串
printf("Test int:   i = %d\r\n", 100);		// printf输出int型数据
printf("Test float: i = %f\r\n", 1.234);	// printf输出float型数据
printf("Test hex:   i = 0x%2x\r\n",100);	// printf输出16进制数据
printf("Test all:   i = %d j = %f k = 0x%2x",100,1.234,100);// 同时输出所有数据类型
————————————————
版权声明:本文为CSDN博主「现代的三流魔法使」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sorcererr/article/details/128689613**

三、无printf输出字符串 “hello windows”

使用HAL_UART_Transmit函数打印字符串

  char data[]="hello windows!\n";
  HAL_UART_Transmit(&huart1, (uint8_t *)data, 15, 0xffff);
 

四.逻辑分析仪分析115200和9600速率对比

STM32 HAL库串口重映射printf,单片机零散知识,stm32,嵌入式硬件,单片机

逻辑分析仪分析115200速率

STM32 HAL库串口重映射printf,单片机零散知识,stm32,嵌入式硬件,单片机
发送完成一个字节大约需要87us时间

逻辑分析仪分析9600速率

STM32 HAL库串口重映射printf,单片机零散知识,stm32,嵌入式硬件,单片机
发送完成一个字节大约需要1050us时间

所以:115200/9600 ≈ 1050/87 ;
115200波特率比9600波特率速度快12倍文章来源地址https://www.toymoban.com/news/detail-603950.html

到了这里,关于STM32 HAL库串口重映射printf的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • stm32(HAL库)使用printf函数打印到串口

    目录 1、简介 2.1 基础配置 2.1.1 SYS配置  2.1.2 RCC配置 2.2 串口外设配置  2.3 项目生成  3、KEIL端程序整合   4、效果测试 在HAL库中,常用的printf函数是无法使用的。本文通过重映射实现在HAL库中进行printf函数。 2.1.1 SYS配置  2.1.2 RCC配置 在usart.c函数最下方复制如下代码 接着在

    2024年02月14日
    浏览(45)
  • 使用标准库和HAL库的STM32单片机进行串口通信/解决因例程为HAL库的传感器,而其他模块都是标准库,需要将数据用串口传送给标准库的单片机的相关问题

    (本文使用STM32F103C8T6,在CubeMX里演示用的是RBT6,但实际上引脚是一样的)         本文 着重解决一个大工程中,某些传感器的例程是HAL库的,而其他模块(或算法)都是标准库,导致难以移植的问题。 本文的解决方法是:使用一片单片机用HAL库(CubeMX)配置例程,然后

    2024年02月06日
    浏览(65)
  • STM32开发中printf利用重定向方法输出到串口(CubeMX 基于HAL库方法,带实际项目应用技巧 巧用goto语句)

    在stdio.h中的printf 原本输出到控制台, 在单片机应用中一般将其改到串口, 并利用串口输出信息来调试程序,非常方便。(本文以USART1为例) 此外CubeMX及CubeIDE 由于自动生成基础代码,因此每当更改硬件配置的时候, 都会被重置生成的基础代码。 这里使用goto语句来避免部分

    2024年02月04日
    浏览(84)
  • 两块stm32单片机串口通信讲解

    本篇文章记录了如何使用stm32f103zet6核心板(下位机)通过串口向stm32f103zet6学习板(上位机)发送数据,stm32f103zet6学习板完成接收,并将接收到的数据显示在LCD显示屏上。 正点原子精英STM32F103ZET6学习板一块(带2.8寸显示屏) STM32F103ZET6核心板一块 电源适配器、数据线以及杜

    2024年02月16日
    浏览(130)
  • STM32单片机(九)USART串口----第一节:USART串口协议

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2024年02月16日
    浏览(73)
  • 【单片机】基于STM32的UART串口通信

    简单讲解一下UART通信协议,以及UART能够实现的一些功能,还有有关使用STM32CubeMX来配置芯片的一些操作。实验内容基于 正点原子精英板 开发板,单片机芯片为 STM32F103ZET6 。 在后面我会以我使用的STM32F429开发板来举例讲解(其他STM32系列芯片大多数都可以按照这些步骤来操作

    2024年01月17日
    浏览(79)
  • STM32单片机(九)USART串口----第三节:USART串口实战练习(串口发送)

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2024年02月10日
    浏览(59)
  • STM32单片机(九)USART串口----第四节:USART串口实战练习(串口发送+接收)

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2024年02月10日
    浏览(58)
  • 【STM32】单片机模式配置&FlyMcu串口下载固件&STLINK Utility

    目录 1 单片机模式配置 1.1 存储器映像 1.2 启动配置 1.3 启动模式选择 1.4 硬件展示 1.4.1 BOOT引脚配置: 1.4.2 USB转TTL 2 FlyMcu串口下载固件         2.1软件配置方式         2.2 选项字节 3 STLINK Utility 3.1 简介 3.2 下载程序流程 通过 设置选择管脚 ,对应到各种启动模式的不

    2024年01月20日
    浏览(64)
  • STM32F407单片机HAL库CAN2不能接收数据解决方法

      最近在使用stm32F407的片子调试can通信,直接在正点原子的代码上修改调试,调试can1的时候,基本没啥问题,收发都正常,使用查询模式和中断模式都可以。但是当修改到can2的时候,可以正常发送数据,但是中断函数始终进不去。折腾了一两个小时终于搞定了。下面将解

    2024年02月16日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包