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

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

    【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开发板评测】使用RA4M2的串口实现任意任意类型任意长度的数据接收,并将接收到的数据显示在串口助手上

    () == REV_OK) { //判断串口是否数据接收完成 printf(\"%s\\\\r\\\\n\", U1_RxBuff);//打印收到的
    发表于 05-04 14:11

    如何在热敏打印实现图片的灰阶打印效果吗?

    谁知道如何在热敏打印实现图片的灰阶打印效果。 现在基本上文字打印,图片打印功能都已开发结束,
    发表于 04-03 08:40

    PRINTF函数无法打印出浮点数内容是为什么?

    1、MCXN947低功耗adc,历程中使用官方提供的PRINTF无法打印出浮点数内容。 2、同样在mcuxpresso ide 也不可以打印浮点数,这是为什么呢? 3、使用的历程是lp
    发表于 03-20 08:06

    【瑞萨RA2L1入门学习】02. 串口打印 ADC 检测电压

    来识别处理这些数据。 【串口打印打印最常用的方法printf,所以要解决的问题是将
    发表于 03-07 11:52

    【RA-Eco-RA2L1-48PIN-V1.0开发板试用】——使用串口输出打印printf实现

    上一篇我讲解了使用JINK RTT来实现串口输出打印printf函数功能, 本次测评我来讲解另外一种串口
    发表于 01-23 12:20

    【RA-Eco-RA2L1-48PIN-V1.0开发板试用】——使用Jlink的RTT实现串口打印功能

    能干瞪眼了?????? 当然不行啊,刚好JLINK自带的RTT就能弥补这个缺陷,它能进行串口printf打印的所有功能。 本期测评就让我来给大家讲解一下使用JLINK的RTT实现
    发表于 01-23 11:33

    stdio.h实现printf函数?

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

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

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