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

    文章

    79

    浏览量

    13474
收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

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

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

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

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

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

    STM32工程上printf()函数的方法实现

    针对STM32串口编程,可以通过USART1向计算机的串口调试助手打印数据,或者接收计算机串口调试助手的
    的头像 发表于 11-06 16:22 548次阅读
    <b class='flag-5'>STM32</b>工程上<b class='flag-5'>printf</b>()函数的<b class='flag-5'>方法</b><b class='flag-5'>实现</b>

    STM32 HAL库串口收发是如何使用的?

    的一种库,它提供了一种简单易用的方法来使用STM32的各种外设。 本文将详细介绍如何使用STM32 HAL库来进行串口通信,包括初始化、发送数据
    的头像 发表于 10-26 17:42 693次阅读

    如何实现Printf()接口重定向到UART

    车规级MCU开发,不像PC端,包含stdio.h头文件就可以使用Printf()函数。为了实现PC端Printf()接口功能,需要在MCU端实现Pr
    的头像 发表于 10-01 10:13 612次阅读
    如何<b class='flag-5'>实现</b><b class='flag-5'>Printf</b>()接口重定向到UART

    如何在串口通讯中使printf函数?

    串口函数,如果要是想使用printf函数,那么应该去改底层程序,我这改了,为什么串口还是啥都不显示啊? 我这头文件是没问题的,串口
    发表于 09-26 06:53

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

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

    stm32怎么用printf函数?

    STM32串口通信程序中使printf发送数据,非常的方便。可在刚开始使用的时候总是遇到问题,常见的是硬件访真时无法进入main主函数,
    发表于 07-31 10:16

    STM32F407 串口配置步骤

    介绍STM32F407串口配置步骤,完成串口数据发送与接收、实现中断接收,支持printf重定
    的头像 发表于 07-06 14:29 1845次阅读
    <b class='flag-5'>STM32</b>F407 <b class='flag-5'>串口</b>配置步骤

    printf输出重定向的方法

    在 PC 上运行 C 语言时,prinf 输出的内容会打印在电脑显示器上,这是因为 prinf 默认的输出设备就是显示器。而当我们在单片机上,需要通过 printf 函数将信息打印串口
    的头像 发表于 05-14 16:22 3663次阅读
    <b class='flag-5'>printf</b>输出重定向的<b class='flag-5'>方法</b>

    使用printf函数通过串口能否输出彩色的调试信息

    正常情况下,使用 printf串口打印调试信息,在串口调试工具界面只能看到一种颜色的字符,且使用不同的串口调试工具,字符默认的颜色都不一
    的头像 发表于 05-14 16:16 1606次阅读
    使用<b class='flag-5'>printf</b>函数通过<b class='flag-5'>串口</b>能否输出彩色的调试信息

    串口中断中使用导致printf死机怎么办?

    串口中断中使printf 打印就死机,使用rt_kprintf一样死机,printf使用了重定向具体如下图
    发表于 05-05 17:19