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

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【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 ?652次阅读

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

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

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

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

    STM32CUBEMX(8)--USART通过定时器中断方式接收不定长数据

    概述 本文利用中断实现串口不定长接收(非DMA),使用HAL库,将接收的数据打印出去。 DMA接收请查看: https://blog.csdn.net/qq_24312945/arti
    发表于 09-06 16:48

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

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

    STM32CUBEMX(3)--ADC通过DMA方式采样,USART打印

    影响。 DMA主要用于为不同的外设模块实现集中数据缓冲存储(通常在系统SRAM)。与分布式解决方案(其中每个外设都需要实现自己的本地数据
    发表于 09-04 14:08

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

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