前言

这里带来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多串口重定向的更多相关文章

  1. STM32 的 printf() 函数串口重定向(HAL库标准库都适用)

    1.建立工程 2.核心:添加新文件usar_fputc.c (名字随便自己命名),把文件添加到项目中去 #include "stdio.h" #include "stm3 ...

  2. 【转】 Keil C51重定向printf到串口

    概述 进行C/C++开发的时候我们都会需要打印调试信息,打印调试信息时我们习惯使用printf函数,但是在Keil C51环境下,由于我们的程序是下载到单片机里,使用printf函数时不能直接打印到串 ...

  3. 关于STM32中printf函数的重定向问题

    printf函数一般是打印到终端的,stm32芯片调试中经常需要用到串口来打印调试信息,那能不能用串口实现类似windows的Console中的printf呢? 答案是肯定的,那就是printf函数的 ...

  4. STM32CubeIDE printf 串口重定向

  5. 使用System.out.printf()输出日志重定向到文件后显示混乱问题

    写了一个小工具,使用System.out.printf()输出日志,以方便使用者查看,在终端显示没有问题,但重定向到文件就有问题了,会出现一些很奇怪的乱序现象. 上网查询资料,判断应该是跟重定向和Li ...

  6. linux入门系列7--管道符、重定向、环境变量

    前面文章我们学习了linux基础命令,如果将不同命令组合使用则可以成倍提高工作效率.本文将学习重定向.管道符.通配符.转义符.以及重要的环境变量相关知识,为后面的shell编程打下基础. 一.IO重定 ...

  7. 【ARM】2410裸机系列-uart串口通信

    开发环境 (1)硬件平台:FS2410 (2)主机:Ubuntu 12.04 FS2410串口的原理图 串口UART寄存器配置   配置TXD0与RXD0(GPH2.GPH3) 设置波特率(UBRDI ...

  8. printf 遇到bash重定向

    在printf之前添加:setvbuf(stdout,NULL,_IONBF,0);设置缓冲区为空. 在每句printf之后添加:fflush(stdout); 方法一: 1 2 3 4 5 6 7 ...

  9. Spring MVC系列[2]——参数传递及重定向

    1.目录结构 2.代码 <?xml version="1.0" encoding="UTF-8"?> <web-app version=&qu ...

  10. 修改 login的串口重定向

     1 在console-telnet 使用vi工具编辑 /etc/inittab 文件  vi /etc/inittab (回车)2 按 i 进入编辑模式:3 将文件中的ttyS0  改为 ttyS3 ...

随机推荐

  1. github使用ssh

    背景 我想使用jekins+github自动化部署,奈何因为墙的原因拉不下来 听闻大佬们说 使用ssh可以破解此问题,所以试一下. 生成本地git证书 1.配置本地git帐户 git config - ...

  2. java hashmap 浅出深入

    简介 一般集合和map的底层原理实现可能会被面试官问到. 参考链接 https://www.bilibili.com/video/BV1oE411n7ug?from=search&seid=4 ...

  3. 【Spring三级缓存解密】如何优雅解决循环依赖难题

    引言 在Spring框架的日常开发中,循环依赖问题如同一个幽灵,时不时困扰着开发者.当Bean A依赖Bean B,而Bean B又依赖Bean A时,传统的创建流程会陷入死锁.本文将深入剖析Spri ...

  4. 实用Linux命令记录

    ss统计网络连接情况 [root@Dev-8.8.8.8 ~]# ss -tan |awk 'NR>1 {++sum[$1]} END{for(i in sum) print i"\t ...

  5. uni-app项目跑APP报useStore报错

    前情 uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验也挺棒的,现公司项目就是主推uni-app,最近手上项目就是要 ...

  6. C# 多线程记录

    ​ 开发中经常遇到不同的业务访问同一个数据源,而每一个业务的执行流就是一个线程,此时线程一多就会产生多线程最容易遇到的问题--并发. 什么是并发? 举个很经典的例子:程序中我们经常要操作一些对象,尤其 ...

  7. git提交emoji指南

    emoji 指南 emoji emoji 代码 commit 说明 (庆祝) tada 初次提交 (火花) sparkles 引入新功能 (书签) bookmark 发行/版本标签 (bug) bug ...

  8. 建议收藏这几个开源SpringBoot项目

    摘自:https://blog.csdn.net/emprere/article/details/114464819 不得不佩服 SpringBoot 的生态如此强大,今天给大家推荐几款优秀的后台管理 ...

  9. 使用 Docker 安装分布式存储 RustFS

    RustFS 是国内研发团队开源的一款兼容 S3 的分布式存储系统,用 Rust 编写,经过实测,性能优于 MinIO,能够平替 MinIO.RustFS 支持二进制.Docker 的安装方式.本文分 ...

  10. 一篇 ps 学习笔记

    ps常用快捷键: 以下是PS中一些常用的快捷键: V:选择移动工具 M:选择矩形选框工具 L:选择套索工具 W:选择魔术棒工具 C:选择裁剪工具 E:选择橡皮擦工具 B:选择画笔工具 S:选择鼠标工具 ...