05-STM32F1 - 串行通信1-UART(3),printf,scanf重定向

2023-05-16

05-STM32F1 - 串行通信UART,printf,scanf重定向

在C 语言标准库中,fputc 函数是printf 函数内部的一个函数,功能是将字符ch 写入到文件指针file所指向文件的当前写指针位置,简单理解就是把字符写入到特定文件中。我们使用USART 函数重新修改fputc 函数内容,达到类似“写入”的功能。fgetc 函数与fputc 函数非常相似,实现字符读取功能。在使用scanf 函数时需要注意字符输入格式。还有一点需要注意的,使用fput 和fgetc 函数达到重定向C 语言标准库输入输出函数必须在MDK的工程选项把“Use MicroLIB”勾选上,MicoroLIB 是缺省C 库的备选库,它对标准C 库进行了高度优化使代码更少,占用更少资源。

//重定向c库函数printf到串口,重定向后可使用printf函数
int fputc(int ch, FILE *f)
{
    USART_SendData(USART1, (uint8_t) ch);
    while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
    return (ch);
}
//重定向c库函数scanf到串口,重写向后可使用scanf、getchar等函数
int fgetc(FILE *f)
{
    while (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);
    return (int)USART_ReceiveData(USART1);
}

本人能力有限,如果你有好的想法,还望不吝赐教!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

05-STM32F1 - 串行通信1-UART(3),printf,scanf重定向 的相关文章

  • scanf函数返回什么?

    scanf 在以下情况下返回的值是多少 int g int p scanf d g Originally int p scanf d g 我知道签名scanf函数是 int scanf const char format 是什么int该函数
  • scanf 被跳过[重复]

    这个问题在这里已经有答案了 我正在尝试为一个类制作一个简单的 C 程序 其中一个要求是我需要使用scanf printf对于所有输入和输出 我的问题是为什么我的scanf在 main 中的 for 循环被跳过并且程序刚刚终止之后 这是我的代
  • sprintf 风格字符串格式化的起源

    字符串格式化概念见sprintf如今几乎可以在任何语言中找到 你知道 用 s d f 等掩盖字符串 并提供变量列表来填充它们的位置 哪种语言最初具有提供此功能的库函数或语言结构 请指定某种来源参考以确认您的主张 以便我们避免纯粹的猜测或猜测
  • 使用 OpenMP 时无用的 printf 没有加速

    我刚刚编写了第一个 OpenMP 程序 它并行化了一个简单的 for 循环 我在双核机器上运行代码 发现从 1 个线程变为 2 个线程时速度有所提高 然而 我在学校 Linux 服务器上运行相同的代码并没有看到加速 在尝试了不同的事情之后
  • printf 中的 # 标志如何工作?

    include
  • 什么是 scanf("%*s") 和 scanf("%*d") 格式标识符?

    格式的实际用途是什么 在 scanf 中 如果这种格式存在 那么它背后一定有某种目的 下面的程序给出了奇怪的输出 include
  • 用 C 更快地读取文件

    嗯 我想知道是否有一种比使用 fscanf 更快地读取文件的方法 例如假设我有这个文本 4 55 k 52 o 24 l 523 i 首先 我想读取第一个数字 它给出了接下来的行数 令这个数称为N N 之后 我想读取 N 行 其中有一个整数
  • 需要在python中找到print或printf的源代码[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在做一些我不能完全谈论的事情 我
  • scanf %u 负数?

    我努力了scanf u number 我输入了负数 问题是当我printf d number 我得到负数 我认为这会阻止我读取负数 是scanf d number and scanf u number 真的是同一件事吗 或者只是为了可读性
  • awk 的 printf 插入多个变量的正确语法是什么?

    我复制了一些使用 printf 输出字符串在文件中出现的频率的代码 awk BEGIN print The number of times a appears in the file a a counter 1 END printf s n
  • 格式说明符%02x

    我有一个简单的程序 include
  • Python 中 Matlab 'fscanf' 的等价物是什么?

    Matlab函数fscanf 似乎很强大 python 或numpy 中是否有相同的等效项 具体来说 我想从文件中读取矩阵 但我不想迭代每一行来读取矩阵 类似的东西 来自 matlab 用于读取 2D 1000x1000 矩阵 matrix
  • 像“1$”这样的位置参数如何与 printf() 一起使用?

    By man I find printf d width num and printf 2 1 d width num 是等价的 但在我看来 第二种风格应该与以下相同 printf d num width 然而通过测试似乎man是对的 为什
  • PHP fscanf 与 fgets

    我可以使用读取一行中的整个字符串fgets but fscanf 没有这样做 根据PHP手册 fscanf 根据格式解析文件的输入 功能fscanf 类似于sscanf 但它从与句柄关联的文件中获取输入 并根据指定的格式解释输入 这在文档中
  • 错误:格式中未知的转换类型字符“l” - 扫描 long long

    我想得到long long使用标准 IO 功能从控制台scanf 我开始于 lld scanf lld rule 这会引发 error unknown conversion type character l in format Werror
  • Scanf("%c %f %d %c") 返回奇怪的值

    我的类作业要求我提示用户在一个输入行中输入四个变量 char float int char 这是完整的代码 include
  • 在 execl 在输出中不可见之前打印

    include
  • printf() 使用字符串表“解码器环”调试库

    我写这封信是想看看你们中是否有人见过或听说过我即将描述的想法的实现 我有兴趣为嵌入式目标开发 printf 风格的调试库 目标非常遥远 并且我和目标之间的通信带宽预算非常紧张 因此我希望能够以非常有效的格式获取调试消息 通常 调试语句如下所
  • 当字符串的长度大于n时,如何打印字符串的前n个字节?

    所以我有一个具有一定字节数 或长度 的字符串 我说字节是因为字符串末尾没有 NULL 终止符 不过 我知道绳子有多长 通常 众所周知 当您printf s str 它将继续打印每个字节 直到到达 NULL 字符 我知道没有 C 字符串不是
  • C修改printf()输出到文件

    有没有办法修改printf为了将字符串输出到文件而不是控制台 我尝试在互联网上查找一些内容 发现了类似的电话dup dup2 and fflush这可能与此有关 EDIT 也许我不清楚 问题是这是C考试问题 问题如下 解释一个通常将字符串输

随机推荐

  • vs2017生成C++/C语言的DLL以及调用 极简讲解 秒懂

    为了尽可能缩减文字描述 xff0c 减少阅读疲劳 xff0c 就直接上图了 1 VS2017下C 43 43 创建dll动态链接库 2 VS2017下C语言代码创建dll动态链接库 xff08 导出方式较于C 43 43 有点差别 xff0
  • Unity页面滑动Slider

    第一步 xff1a 创建三个Image xff08 或者多个都行 xff09 xff0c 并且设置Canvas的CanvasScaler脚本组件UI Scale Mode和Reference Resolution的值 设置Canvas 第二
  • linux的TCP连接数量真的不能超过65535个吗?

    原文链接 xff1a https blog csdn net daocaokafei article details 115410761 首先 xff0c 问题中描述的65535个连接指的是客户端连接数的限制 在tcp应用中 xff0c s
  • 关于网页实现串口或者TCP通讯的说明

    概述 最近经常有网页联系我 xff0c 反馈为什么他按我说的方法 xff0c 写的HTML代码 xff0c 无法在chrome网页中运行 这里我统一做一个解释 xff0c 我发现好多网页并没有理解我的意思 其实 xff0c 要实现在HTML
  • Intel RealSense(实感技术)概览

    Intel RealSense 实感技术 概览 1 Reply 版权声明 xff1a 本文系本站作者自己翻译整理 xff0c 欢迎转载 xff0c 但转载请以超链接形式注明文章来源 planckscale info 作者信息和本声明 xff
  • postman安装使用教程

    无聊的夜晚 xff0c 没有酒喝 xff0c 也没妹子陪 xff0c 闲来没事研究下postman xff0c 之前接触过有点 xff0c 还不错的工具 先从最基本的开始 postman是谷歌的一款非常好用的工具 xff0c 可用来做手工的
  • 接口测试 requests的身份认证方式

    requests提供多种身份认证方式 xff0c 包括基本身份认证 netrc 认证 摘要式身份认证 OAuth 1 认证 OAuth 2 与 OpenID 连接认证 自定义认证 这些认证方式的应用场景是什么呢 xff1f 身份认证的定义
  • 使用libcurl提交POST请求

    最近在学习libcurl xff0c 并利用它提交POST请求 xff0c 可是返回的响应总是无从验证该次POST请求是否成功提交了 1 先看下根据firebug提交的一次成功的请求 xff0c 这里以login我喜欢上的xiami为例 x
  • TX2安装Realsense -L515相机并在ros下 运行yolo 总结(3)

    前面提到可以移植yolov4到平台上 这里给出几个参考链接 xff0c 重在学习移植方法 xff1a 首先是大佬的 xff1a https span class token operator span span class token op
  • VS2013 配置使用微软开源sdk: C++ REST SDK 及运行官方的 JSON例子

    转至 https blog csdn net sdsabc2000 article details 53706632 utm medium 61 distribute pc relevant none task blog BlogComme
  • Python爬虫学习4:requests.post模拟登录豆瓣(包括获取验证码)

    1 在豆瓣登录网页尝试登录后打开开发者工具 xff0c 可以查找后去Headers和Form Data信息 2 实现代码 import requests import html5lib import re from bs4 import B
  • STM32 | STM32CubeMX基础之USART

    一 USART框图 功能引脚 TX xff1a 发送引脚 xff0c Usart1一般对应PA9 RX xff1a 接收引脚 Usart1一般对应PA10 SW RX xff1a 数据接收引脚 xff0c 只用于单线和智能卡模式 xff0c
  • Android CMake 编译传递宏定义参数

    在做 C 43 43 需求开发时经常会遇到用宏定义来区分不同版本 不同平台的功能 xff0c 如下所示 xff1a ifdef DEBUG 调用 debug 版本方法 elif RELEASE 调用 release 版本方法 endif 在
  • FreeRTOS高级篇2---FreeRTOS任务创建分析

    在FreeRTOS基础系列 FreeRTOS系列第10篇 FreeRTOS任务创建和删除 中介绍了任务创建API函数xTaskCreate xff0c 我们这里先回顾一下这个函数的声明 xff1a BaseType t xTaskCreat
  • 调用百度OCR API实现身份证文字识别

    调用百度OCR API实现身份证文字识别 通过调用百度OCR的两个接口 xff0c 实现身份证图像识别 首先要在百度云注册账号 xff0c 并创建应用 xff0c 以获取AppID xff0c API Key xff0c Secret Ke
  • 一个基于TCP/IP的小项目,实现广播消息的功能。(超详细版)

    1 结合现状 功能分析 该功能基于上个项目的改进 xff0c 主要是通过对服务器端代码的修改 xff0c 以及对客户端作少许修改 xff0c 实现开启多客户端时 xff0c 一个客户端发送消息 xff0c 达到对所有客户端广播的效果 可参考
  • 中断方式和查询方式的区别?

    中断方式 xff1a 是事件触发的 xff0c 换訖只要有事件产生都会进入中断 組取得最优运行 xff0c 因此响应更快 xff0c 及时 查询方式 xff1a 就是在主函数里面不停循环 xff0c 查询端C 状态 xff0c 明显其弊端在
  • [源码解读]position_estimator_inav_main解读(如何启动光流)

    阅读工具 xff1a source insight 技术交流 xff1a zinghd 64 163 com xff0c 757012902 64 qq com 源码版本 xff1a Firmware xff08 原生固件 xff09 如有
  • C++ 程序编译过程:从代码到程序

    在大学课堂上学习 C 43 43 时 xff0c 老师并没有过多涉猎 C 43 43 语法背后的知识 也就是说 xff0c 初学 C 43 43 时 xff0c 哪怕写出了代码 xff0c 我也并不知道从代码到程序的过程中究竟发生了什么 我
  • 05-STM32F1 - 串行通信1-UART(3),printf,scanf重定向

    05 STM32F1 串行通信UART xff0c printf xff0c scanf重定向 在C 语言标准库中 xff0c fputc 函数是printf 函数内部的一个函数 xff0c 功能是将字符ch 写入到文件指针file所指向文