【MSPM0G3507系列】printf多串口重定向
前言
这里带来MSPM0G3507的多串口重定向,与STM32的类似。
syscfg配置

引脚配置注意
推荐引脚配置:(建议按照推荐的来配置,一开始测试的时候某些引脚例如PA21复用了其他功能,不能正常使用)
UART0 ———— Tx PA11 / Rx PA10(方便使用USB先直接进行串口调试)
UART1 ———— Tx PA18 / Rx PA17
UART2 ———— Tx PB16 / Rx PB17
UART3 ———— Tx PA13 / Rx PA14
printf重定义程序

点击查看代码
int fputc(int c, FILE* stream) {
DL_UART_Main_transmitDataBlocking(current_uart, c);
return c;
}
int fputs(const char* restrict s, FILE* restrict stream) {
uint16_t i, len;
len = strlen(s);
for (i = 0; i < len; i ++) {
DL_UART_Main_transmitDataBlocking(current_uart, s[i]);
}
return len;
}
int puts(const char* _ptr) {
int count = fputs(_ptr, stdout);
count += fputs("\n", stdout);
return count;
}
多串口printf定向程序

点击查看代码
#define UART0_IDX 1
#define UART1_IDX 2
#define UART2_IDX 3
#define UART3_IDX 4
static UART_Regs *current_uart;
void Set_CurrentUART(uint8_t UART_type) {
switch (UART_type) {
case UART0_IDX:
current_uart = UART_0_INST;
break;
case UART1_IDX:
current_uart = UART_1_INST;
break;
case UART2_IDX:
current_uart = UART_2_INST;
break;
case UART3_IDX:
current_uart = UART_3_INST;
break;
default:
break;
}
}
工程测试代码(全)
点击查看代码
#include "ti_msp_dl_config.h"
#include "stdio.h"
#include "string.h"
#define UART0_IDX 1
#define UART1_IDX 2
#define UART2_IDX 3
#define UART3_IDX 4
static UART_Regs *current_uart;
void Set_CurrentUART(uint8_t UART_type);
int main(void)
{
SYSCFG_DL_init();
while (1) {
Set_CurrentUART(UART0_IDX);
printf("串口零打印成功,数字:%f\r\n", 0.1415926);
Set_CurrentUART(UART1_IDX);
printf("串口一打印成功,数字:%f\r\n", 1.1415926);
Set_CurrentUART(UART2_IDX);
printf("串口二打印成功,数字:%f\r\n", 2.1415926);
Set_CurrentUART(UART3_IDX);
printf("串口三打印成功,数字:%f\r\n", 3.1415926);
}
}
void Set_CurrentUART(uint8_t UART_type) {
switch (UART_type) {
case UART0_IDX:
current_uart = UART_0_INST;
break;
case UART1_IDX:
current_uart = UART_1_INST;
break;
case UART2_IDX:
current_uart = UART_2_INST;
break;
case UART3_IDX:
current_uart = UART_3_INST;
break;
default:
break;
}
}
int fputc(int c, FILE* stream) {
DL_UART_Main_transmitDataBlocking(current_uart, c);
return c;
}
int fputs(const char* restrict s, FILE* restrict stream) {
uint16_t i, len;
len = strlen(s);
for (i = 0; i < len; i ++) {
DL_UART_Main_transmitDataBlocking(current_uart, s[i]);
}
return len;
}
int puts(const char* _ptr) {
int count = fputs(_ptr, stdout);
count += fputs("\n", stdout);
return count;
}
测试视频
链接:file:///D:/WeChat%20Files/wxid_t2365cgofiw822/FileStorage/Video/2025-05/51034e46bbe27e3b5ce0698011acdc81.mp4
【MSPM0G3507系列】printf多串口重定向的更多相关文章
- STM32 的 printf() 函数串口重定向(HAL库标准库都适用)
1.建立工程 2.核心:添加新文件usar_fputc.c (名字随便自己命名),把文件添加到项目中去 #include "stdio.h" #include "stm3 ...
- 【转】 Keil C51重定向printf到串口
概述 进行C/C++开发的时候我们都会需要打印调试信息,打印调试信息时我们习惯使用printf函数,但是在Keil C51环境下,由于我们的程序是下载到单片机里,使用printf函数时不能直接打印到串 ...
- 关于STM32中printf函数的重定向问题
printf函数一般是打印到终端的,stm32芯片调试中经常需要用到串口来打印调试信息,那能不能用串口实现类似windows的Console中的printf呢? 答案是肯定的,那就是printf函数的 ...
- STM32CubeIDE printf 串口重定向
- 使用System.out.printf()输出日志重定向到文件后显示混乱问题
写了一个小工具,使用System.out.printf()输出日志,以方便使用者查看,在终端显示没有问题,但重定向到文件就有问题了,会出现一些很奇怪的乱序现象. 上网查询资料,判断应该是跟重定向和Li ...
- linux入门系列7--管道符、重定向、环境变量
前面文章我们学习了linux基础命令,如果将不同命令组合使用则可以成倍提高工作效率.本文将学习重定向.管道符.通配符.转义符.以及重要的环境变量相关知识,为后面的shell编程打下基础. 一.IO重定 ...
- 【ARM】2410裸机系列-uart串口通信
开发环境 (1)硬件平台:FS2410 (2)主机:Ubuntu 12.04 FS2410串口的原理图 串口UART寄存器配置 配置TXD0与RXD0(GPH2.GPH3) 设置波特率(UBRDI ...
- printf 遇到bash重定向
在printf之前添加:setvbuf(stdout,NULL,_IONBF,0);设置缓冲区为空. 在每句printf之后添加:fflush(stdout); 方法一: 1 2 3 4 5 6 7 ...
- Spring MVC系列[2]——参数传递及重定向
1.目录结构 2.代码 <?xml version="1.0" encoding="UTF-8"?> <web-app version=&qu ...
- 修改 login的串口重定向
1 在console-telnet 使用vi工具编辑 /etc/inittab 文件 vi /etc/inittab (回车)2 按 i 进入编辑模式:3 将文件中的ttyS0 改为 ttyS3 ...
随机推荐
- github使用ssh
背景 我想使用jekins+github自动化部署,奈何因为墙的原因拉不下来 听闻大佬们说 使用ssh可以破解此问题,所以试一下. 生成本地git证书 1.配置本地git帐户 git config - ...
- java hashmap 浅出深入
简介 一般集合和map的底层原理实现可能会被面试官问到. 参考链接 https://www.bilibili.com/video/BV1oE411n7ug?from=search&seid=4 ...
- 【Spring三级缓存解密】如何优雅解决循环依赖难题
引言 在Spring框架的日常开发中,循环依赖问题如同一个幽灵,时不时困扰着开发者.当Bean A依赖Bean B,而Bean B又依赖Bean A时,传统的创建流程会陷入死锁.本文将深入剖析Spri ...
- 实用Linux命令记录
ss统计网络连接情况 [root@Dev-8.8.8.8 ~]# ss -tan |awk 'NR>1 {++sum[$1]} END{for(i in sum) print i"\t ...
- uni-app项目跑APP报useStore报错
前情 uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验也挺棒的,现公司项目就是主推uni-app,最近手上项目就是要 ...
- C# 多线程记录
开发中经常遇到不同的业务访问同一个数据源,而每一个业务的执行流就是一个线程,此时线程一多就会产生多线程最容易遇到的问题--并发. 什么是并发? 举个很经典的例子:程序中我们经常要操作一些对象,尤其 ...
- git提交emoji指南
emoji 指南 emoji emoji 代码 commit 说明 (庆祝) tada 初次提交 (火花) sparkles 引入新功能 (书签) bookmark 发行/版本标签 (bug) bug ...
- 建议收藏这几个开源SpringBoot项目
摘自:https://blog.csdn.net/emprere/article/details/114464819 不得不佩服 SpringBoot 的生态如此强大,今天给大家推荐几款优秀的后台管理 ...
- 使用 Docker 安装分布式存储 RustFS
RustFS 是国内研发团队开源的一款兼容 S3 的分布式存储系统,用 Rust 编写,经过实测,性能优于 MinIO,能够平替 MinIO.RustFS 支持二进制.Docker 的安装方式.本文分 ...
- 一篇 ps 学习笔记
ps常用快捷键: 以下是PS中一些常用的快捷键: V:选择移动工具 M:选择矩形选框工具 L:选择套索工具 W:选择魔术棒工具 C:选择裁剪工具 E:选择橡皮擦工具 B:选择画笔工具 S:选择鼠标工具 ...