0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32中使用printf打印串口数据的实现原理及方法

ss 来源:CSDN尘埃世界、Foresights 作者:CSDN尘埃世界、Fo 2021-07-22 11:12 次阅读

STM32中使用printf打印串口数据的实现原理

在C库中,printf()等输出流函数都是通过fputc()这个函数实现的,所以我们通过重映射的方式,修改这个函数的定义使它输出在STM32的寄存器中,便可以实现使用printf()函数在STM32串口上输出数据的功能。

盘点一下实现printf()函数打印字符串重定义到USART1的方法

方法一

1添加包含printf()函数的头文件:#include “stdio.h”

2.重写 stdio.h 头文件中的 int fputc(int ch, FILE *f) 函数

3.将该函数” int fputc(int ch, FILE *f) “放在main()函数能够调用到的文件中,KEIL-》Options for Target’xxx’-》Target-》Code Generation,勾选Use MicroLIB

方法二

//加入以下代码,支持printf函数,而不需要选择use MicroLIB

#if 1

#pragma import(__use_no_semihosting)

//标准库需要的支持函数

struct __FILE

{

int handle;

};

FILE __stdout;

//定义_sys_exit()以避免使用半主机模式

_sys_exit(int x)

{

x = x;

}

//重定义fputc函数

int fputc(int ch, FILE *f)

{

while( !(USART1-》SR & (1 《《 7)) );

USART_SendData(USART1,(uint8_t)ch);

return ch;

}

#endif

整合自:CSDN尘埃世界、Foresights

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Printf
    +关注

    关注

    0

    文章

    81

    浏览量

    13623
收藏 人收藏

    评论

    相关推荐

    STM32CUBEMX(6)--移植雅特力AT32F403AVGT7,双串口通过DMA方式接收不定长数据

    每个外设都需要实现自己的本地数据存储)相比,DMA解决方案在硅片成本和功耗方面的成本较低。 根据使用的产品型号的不同,有一个或两个DMA模块。 本篇文章主要介绍如何使用STM32CubeMX
    发表于 09-06 16:37

    STM32CUBEMX(2)--USART通过DMA方式接收不定长数据

    。 本篇文章主要介绍如何使用STM32CubeMX实现串口DMA读取,并且打印出去。QQ群:615061293。 硬件准备 首先需要准备一个开发板,这里我准备的是NUCLEO-F03
    发表于 09-04 11:48

    STM32CubeIde生成的工程,使用printf函数没有调用_write和__io_putchar函数,为什么?

    最近使用STM32CubeIde生成工程,就先做一个简单的串口工程,使用NUCLEO-WBA52CG板子进行调试。 在初始化完毕后,使用printf打印log,重写了int io_pu
    发表于 05-24 06:13

    【GD32H757Z海棠派开发板使用手册】第九讲 USART-printf打印实验

    通过本实验主要学习以下内容: •串口简介 •GD32H757串口工作原理 •使用printf打印信息
    的头像 发表于 05-15 11:39 621次阅读
    【GD32H757Z海棠派开发板使用手册】第九讲 USART-<b class='flag-5'>printf</b><b class='flag-5'>打印</b>实验

    ESP8266与STM32通讯,串口通讯出现数据丢失的原因?

    函数的原因,串口只能打印:01 03 05 但我想调用数据7F 7A 应该如何修改这些函数或者有什么其他方法呢?谢谢大神指点{:4:} STM32
    发表于 05-14 06:17

    【GD32F470紫藤派开发板使用手册】第九讲 USART-printf打印实验

    通过本实验主要学习以下内容: 串口简介 GD32F470串口工作原理 使用printf打印信息
    的头像 发表于 05-13 10:14 1607次阅读
    【GD32F470紫藤派开发板使用手册】第九讲  USART-<b class='flag-5'>printf</b><b class='flag-5'>打印</b>实验

    STM32 HAL printf所占用串口不能做中断接收如何解决?

    目前在使用STM32L053系列MCU,基于HAL库的程序,硬件串口资源有3个,都已经被使用;其中USART2通过Switch芯片来实现printf
    发表于 04-29 09:01

    用keil仿真无法用printf打印怎么解决?

    用keil仿真 无法用printf打印.想用printf重定向到Usart1的方法,使printf打印
    发表于 04-11 08:20

    STM32 printf如何打印0x00,使串口接收工具显示00呢?

    printf如何打印0x00,使串口接收工具显示00呢?请各位指教谢谢
    发表于 04-08 06:19

    xmc7200使用cy_retarget_io_init_fc功能初始化串口6,为什么printf功能CAN不打印数据

    我使用的是xmc7200开发板,使用cy_retarget_io_init_fc功能初始化串口6,为什么printf功能 CAN 不打印数据
    发表于 01-30 06:55

    M487JIDAE如何使用ITM功能实现printf打印?

    M487JIDAE如何使用ITM功能实现printf打印?
    发表于 01-16 08:03

    解决printf无法打印输出的问题

    FreeRTOS中直接使用newlib库是有问题的,相信使用过freertos进行printf都能发现这个问题,这个问题网上有两种方法:1、使用printf.stdarg.c,问题在于,这个库没有
    的头像 发表于 01-04 08:00 1688次阅读
    解决<b class='flag-5'>printf</b>无法<b class='flag-5'>打印</b>输出的问题

    stm32虚拟串口接收的数据处理

    STM32中使用虚拟串口时,我们需要处理接收的数据。接收到的数据可能是来自其他设备的传感器数据
    的头像 发表于 12-20 11:22 2175次阅读

    STM32WB55开发(4)----配置串口打印Debug调试信息

    STM32WB55系列微控制器上进行开发时,实时监控应用程序的运行情况和调试潜在问题是至关重要的。使用串口(USART/UART)进行Debug信息打印是一种简便、高效的方法。下面是
    的头像 发表于 12-01 15:48 1189次阅读
    <b class='flag-5'>STM32</b>WB55开发(4)----配置<b class='flag-5'>串口</b><b class='flag-5'>打印</b>Debug调试信息

    STM32H5开发(5)----串口打印配置

    在使用STM32CUBEIDE开发STM32H5项目时,串口打印被证明是一项极其有益的调试工具,能够在开发过程实时输出信息和调试
    的头像 发表于 12-01 15:04 924次阅读
    <b class='flag-5'>STM32</b>H5开发(5)----<b class='flag-5'>串口</b><b class='flag-5'>打印</b>配置