printf串口重定向标准方法

news2024/10/5 16:19:13

一,简介

在程序调试的过程中,需要用到串口打印信息来判断单片机程序运行是否正确。需要使用串口对printf进行重定向,本文就介绍一下ARM官方推荐的一种重定向的方法,供参考使用。

二,具体步骤

主要分为两步:
1,将retarget文件复制到工程;
2,重新实现sendchar和getkey函数;

2.1 将retarget.c添加到project

在keil的安装目录(xx/ARM/Startup)下,找到retarget.c文件,复制到工程目录:
在这里插入图片描述
这里我复制到我的工程目录(xx\Core\Src)下:
在这里插入图片描述
将retarget.c添加到工程:
在这里插入图片描述
看到工程里有retarget文件,代表文件添加成功。
在这里插入图片描述

2.2 重新实现sendchar和getkey函数

在这里插入图片描述
官方推荐在Serial.c中进行实现,本文为了方便演示直接在main函数中进行实现:
在这里插入图片描述
注:getkey函数因为在调试的过程中用不到所有暂时不实现,有必要用到时再进行实现。

调用验证printf函数打印是否成功:
在main函数的while(1)中添加调用代码:
在这里插入图片描述
2.3 编译下载验证效果
在这里插入图片描述
可以看到printf调试信息已经在循环打印了,确认printf重定向成功。

三,总结

本文主要介绍如何使用keil自带的retarget.c进行printf重定向,供参考。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/548799.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

leetcode 138.复制带随机指针的链表

题目链接:leetcode 138 1.题目 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节…

如何用Nginx实现对城市以及指定IP的访问限制?

1.前言 在【如何用Nginx代理MySQL连接,并限制可访问IP】一文中,我们实现了通过Nginx代理MySQL连接,并限制了指定IP才能通过Nginx进行连接,以提高数据安全性。 该场景适用于根据具体的IP地址来进行访问限制,假如我们要…

C++控制台打飞机小游戏

我终于决定还是把这个放出来。 视频在这:https://v.youku.com/v_show/id_XNDQxMTQwNDA3Mg.html 具体信息主界面上都有写。 按空格暂停,建议暂停后再升级属性。 记录最高分的文件进行了加密。 有boss(上面视频2分47秒)。 挺好…

LeetCode 不同路径1\2

不同路径1和2 题目在上面 这两个题目都是简单的动态规划问题 对不同路径最初始的问题举个例子 因为我们的机器人只能向右或者向下走一步 因此这个矩形的第一行和第一列都可以初始化为1 然后我们就可以得到动态规划的方程 f i , j f i − 1 , j f i , j − 1 f_{i,j} f_{i…

【C++模板】

目录 一、什么是泛型编程二、函数模板2.1函数模板概念2.2函数模板格式2.3函数模板的原理2.4函数模板的实例化 三、类模板3.1类模板的定义格式3.2类模板的成员函数的声明与定义分开的写法 一、什么是泛型编程 问题:如何实现一个加法函数呢?假设加法函数的…

LeetCode94. 二叉树的中序遍历(递归与非递归)

写在前面: 题目链接:添加链接描述 编程语言:c 题目难度:简单 一、题目描述 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 输入:root [1,null,2,3] 输出:[1,3,2] 示例 2:…

chatgpt赋能Python-python3_6怎么保存

Python3.6的保存方式简介 Python3.6是一种高级编程语言,由于其易读性和清晰性,成为了广泛使用的编程语言之一。Python3.6提供了丰富的特性和功能,使其成为了开发各种网站和Web应用程序的完美选择。在这篇文章中,我们将介绍Python…

8.2 综合案例2.0-远程遥控智能锁

综合案例2.0-远程遥控智能锁 案例说明1.硬件2.连线图3.dvr8833电机驱动使用说明 搭建云平台环境1.添加设备2.创建设备类型3.功能定义(创建物模型)4.ThingsX App 配置5.生成用户应用 App 代码1.更改MQTT信息2.测试 案例说明 生活中很多场景需要用到锁&am…

一、预约挂号微服务模块搭建

文章目录 一、预约挂号微服务模块搭建1、项目模块构建2、sql资源3、构建父工程(yygh-parent)3.1、添加配置pom.xml 4、搭建common父模块4.1、搭建common4.2、修改配置pom.xml 5、搭建common-util模块5.1、搭建common-util5.2、修改配置pom.xml5.3、添加公…

运筹优化求解迭代过程案例:图解法、单纯形法、单纯形表

运筹优化求解迭代过程案例:图解法、单纯形法、单纯形表 题目来自于清华大学出版的《运筹学》第四版。 一、问题描述 二、图解法 三、单纯形法 第一次迭代: 第二次迭代: 第三次迭代: 下面描述一下第三次迭代的详细过程: 从表达式…

【进阶】MySQL索引介绍

半个月没写mysql了,今天记录一下。。 了解到的索引有Btree,Hash表(Memory存储引擎中),R-tree,Full-text等 MySql用的索引结构是Btree,B树所有节点都会出现在叶子节点中 目录 索引介绍&#…

容器目录挂载原理

前言 就我目前的对容器的了解, 使用namespace技术实现隔离, 使用cgroups技术实现资源限制. 但是具体是如何实现却从未深究过. 闲来无事, 挑其中的Mount Namespace来康康, 容器是如何实现目录隔离的. 目录隔离 在耗子叔的这篇文章中对此技术进行了介绍. 在c函数库中, 可通过…

Linux Audio (4) ASOC代码分析-基于kernel3.4.2

ASOC代码分析-基于kernel3.4.2 OverviewPlatformCPU DAICPU DMA CodecMechine Linux kernel版本:3.4.2 Overview linux ASoC音频设备驱动 ASoC是ALSA在SoC方面的发展和演变,它的本质仍然属于ALSA,但是在ALSA架构基础上对CPU相关的代码和Cod…

【python之django1.11框架一】django环境搭建及基本操作

1. 环境准备 开发环境:windows 11先安装好miniconda3。镜像地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/ 选择windows 64位下载。 下载地址: https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-lates…

JIRA的数据备份与恢复教程

目录 一、简介 二、数据备份(默认系统会自动备份,不需要手动) 1、使用管理员账号登录JIRA。 2、点击左上角的设置按钮,选择“系统”选项。 3、选择“备份系统”选项 4、开始手动备份 5、查看备份进度 三、数据恢复 1、使用…

MyBatisPlus入门案例

文章目录 1 入门案例步骤1:创建数据库及表步骤2:创建SpringBoot工程步骤3:勾选配置使用技术步骤4:pom.xml补全依赖步骤5:添加MP的相关配置信息步骤6:根据数据库表创建实体类步骤7:创建Dao接口步骤8:编写引导类步骤9:编写测试类 2 MybatisPlus简介 MyBatisPlus主要是对MyBatis的…

SQL注入 - Part 1

前置知识:sql前置的软件环境:预装了phpstudy_prodvwa,花了好长时间……时间主要浪费在听从chatgpt的建议装xampp上,卸载了mysql,重置了密码。其实使用xampp搭建环境也成功了,但是由于phpstudy教程比较多&am…

了解物理层下的传输媒体

1.了解物理层下的传输媒体 声明:该学习笔记来自湖科大教书匠,笔记仅做学习参考 笔记来源: 湖科大教书匠:物理层的基本概念 湖科大教书匠:物理层下面的传输媒体 1.1 物理层的基本概念 物理层考虑在连接各计算机的传输…

JQuery原理剖析——自己手写简易版JQuery

目录 为什么需要JQuery 在此之前回顾JavaScript对象知识: 自己手写的简易JQuery: 为什么需要JQuery 在我们之前写的JS代码中经常会遇见document.getElementById等等获取元素的对象,当大量的元素对象需要被获取时,就会有很多相似…

linux系统升级/更新OpenSSL版本操作流程记录

问题描述:有时 OpenSSL 版本过老升级,或者需要更新 OpenSSL 版本 1. 登录 linux 系统后输入 openssl version 查看现在使用的版本 我的输入后版本信息为:OpenSSL 1.1.1g FIPS 21 Apr 2020 ,可以看到是一年前更新版本,…