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

    文章

    84

    浏览量

    14823
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【RA-Eco-RA2E1-V1.0开发板试用】串口打印例程。

    本实验基于瑞萨 RA 系列单片机完成UART 串口通信与printf 重定向功能实现,通过配置串口引脚、初始化驱动、编写发送回调函数,实现
    的头像 发表于 02-24 16:33 449次阅读
    【RA-Eco-RA2E1-V1.0开发板试用】<b class='flag-5'>串口</b><b class='flag-5'>打印</b>例程。

    【乾芯QXS320F开发板试用】基于printf重定向的高速串口调试方案

    。 二、代码分析 核心代码的逻辑是通过重定向(Retarget) C语言标准库的 printf 和 puts 函数,使得原本输出到控制台的内容,改由芯片的物理串口(SCI)发出。这一点以前做过
    发表于 01-07 17:30

    单片机使用printf打印编译出错的原因?

    单片机使用printf打印编译出错,有哪些情况?
    发表于 11-21 06:02

    求助,关于C代码printf打印的疑问求解

    在使用E203 testbench执行附带的benchmark测试用例时候,得到如下打印信息: CPU验证小白一枚,有个问题不是很理解:黄色框框内的字符看起来应该是C代码printf语句
    发表于 11-10 07:54

    NucleiStudio_IDE_201909串口打印浮点型数据时无数据输出,软件该如何配置串口才能打印浮点型数据

    NucleiStudio_IDE_201909串口打印浮点型数据时无数据输出,软件该如何配置串口才能打印
    发表于 11-07 07:57

    Proteus配置STM32外部时钟HSE如何配置

    有大佬会配置ProteusSTM32F103C8的外部时钟吗 这个proteus打印不出来数据,但是在实物的连接
    发表于 11-02 13:54

    printf函数在hbird SDK的应用

    在helloworld的例程,使用到了printf函数,通过串口输出了数据。 在Nuclei Studio通过teminal窗口可以查
    发表于 10-31 08:48

    【CPKCOR-RA8D1】基础串口打印测试

    本文将演示如何为瑞萨CPKCOR-RA8D1开发板配置串口功能,并实现最简单的“Hello World”数据打印串口是嵌入式开发中最常用、
    发表于 10-30 15:23

    【CPKCOR-RA8D1】+ 基础串口打印测试

    本文将演示如何为瑞萨CPKCOR-RA8D1开发板配置串口功能,并实现最简单的“Hello World”数据打印串口是嵌入式开发中最常用、
    发表于 10-30 09:40

    e203仿真helloworld例程printf能在终端显示的原理

    pirntf可以直接输出信息。而在嵌入式领域,想要实现printf需要做一点工作。 以蜂鸟e203为例,它没有显示器,没有标准终端,想要实现printf最常见的方式是通过
    发表于 10-27 06:56

    GD32F103RCT6 rt_kprintf无法打印怎么解决?

    使用的芯片为GD32F103RCT6,文件夹board路径里有一个不使用rt操作系统的串口打印配置,映射到printf,使用这个代码配置的printf可以正常
    发表于 09-19 07:42

    【RA-Eco-RA6M4开发板评测】——2.串口打印

    上次讲了LED点亮流水灯,这次来讲解串口打印,首先打开原理图 由图可知,用到的串口是109和110 打开LED工程,直接在上面添加串口功能 生成代码 打开KEIL 先编译一遍 发现错
    发表于 07-16 13:20

    【RA4L1-SENSOR】+ RA4L1-SENSOR开发版之使用Jlink的RTT打印功能代替串口

    上一篇帖子我已经实现了板子上的串口USART9进行输出打印,这篇帖子我采用另外一种串口打印
    发表于 06-09 09:03

    【RA4L1-SENSOR】+ RA4L1-SENSOR开发版串口打印功能printf实现

    很高兴收到瑞萨RA生态工作室给与试用的RA4L1-SENSOR开发板,本期就来讲解使用RA4L1-SENSOR开发板实现串口打印功能! 1。打开原理图 可以知道板载的USB串口使用的是
    发表于 06-08 15:01

    【RA-Eco-RA4M2开发板评测】RA-Eco-RA4M2 串口通信

    ‑5 普通串口打印实验现象 下面笔者还要介绍一种常用的串口打印方式I/O重定向,也就是使用printf
    发表于 04-27 23:23