1 STM32中使用printf打印串口数据的实现原理及方法-德赢Vwin官网 网
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

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

    关注

    0

    文章

    83

    浏览量

    13648
收藏 人收藏

    评论

    相关推荐

    stdio.h实现printf函数?

    我们平时包含的 stdio.h 头文件,里面是不是实现printf 函数? 为什么会有这个疑问?因为每次使用 printf,就得包含 stdio.h ,这就导致很多同学误以为,stdio.h
    的头像 发表于 12-18 10:28 67次阅读

    【敏矽微ME32G070开发板免费体验】使用JLINK的RTT功能实现类似串口printf打印功能

    收到这款敏矽微ME32G070开发板后,我发现我的这款板子是坏的,串口打印部分不能打印,我先烧录了demo文件夹里的串口打印
    发表于 12-15 20:30

    51单片机为什么很少出现printf的身影

    51单片机为什么很少出现 printf 的身影?是用不了吗? 不是的,51单片机可以用 printf,只是不建议使用。 平时我们在操作系统上写C语言代码,使用 printf 可以把
    的头像 发表于 12-03 10:46 256次阅读
    51单片机<b class='flag-5'>中</b>为什么很少出现<b class='flag-5'>printf</b>的身影

    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 711次阅读
    【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 1723次阅读
    【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 1859次阅读
    解决<b class='flag-5'>printf</b>无法<b class='flag-5'>打印</b>输出的问题