【瑞萨RA8D1 CPK开发板】串口的使用和STDOUT输出重定向

news2024/10/12 1:32:48

串口

本次串口的使用关于时钟导致串口的波特率不对,坑了我很久的时间

使能时钟

串口发现一个问题就是,只能使用下边的时钟配置,修改时钟源和分频系数都会导致串口波特率不正常,这种问题出现在mdk+rasc的使用场景之下;

本人使用E2Studio的开发方式使用随便哪个时钟源串口的输出时钟都不存在问题,建议使用E2Studio开发方式

mdk只有这种情况可用以115200输出数据其他配置都不行

在这里插入图片描述

使用E2Studio开发

创建工程

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

RASC配置

在这里插入图片描述

设置晶振24M,cpu=480M,sci=120M

在这里插入图片描述

在这里插入图片描述

配置sci

在这里插入图片描述
添加一个Stacks

在这里插入图片描述

生成配置
在这里插入图片描述

新建串口的驱动文件

在这里插入图片描述

串口的驱动文件初始化和STDOUT输出重定向

/*
 * bsp_uart.c
 *
 *  Created on: 2024年10月11日
 *      Author: Administrator
 */
#include <stdio.h>
#include <stdint.h>
#include "hal_data.h"
/* 调试串口 UART4 初始化 */
void Debug_UART3_Init(void)
{
    fsp_err_t err = FSP_SUCCESS;
    err = R_SCI_B_UART_Open (&g_uart3_ctrl, &g_uart3_cfg);
    assert(FSP_SUCCESS == err);
    }

/* 发送完成标志 */
volatile uint8_t  uart_send_complete_flag = 0;
volatile uint8_t  uart_receive_complete_flag = 0;
/* 串口中断回调 */
void user_uart3_callback (uart_callback_args_t * p_args)
{
    switch (p_args->event)
    {
        case UART_EVENT_RX_CHAR:
        {
            /* 把串口接收到的数据发送回去 */
            R_SCI_B_UART_Write(&g_uart3_ctrl, (uint8_t *)&(p_args->data), 1);
            break;
        }
        case UART_EVENT_TX_COMPLETE:
        {
            uart_send_complete_flag = 1;
            break;
        }
        default:
            break;
    }
}



#if defined __GNUC__ && !defined __clang__
#include <sys/stat.h>
#include <unistd.h>
#include <errno.h>

int _write(int fd, char *pBuffer, int size); //防止编译警告
int _read(int fd, char *pBuffer, int size);

/* 重定向 printf 输出 */
int _write(int fd, char *pBuffer, int size)
{
    (void) fd;
    R_SCI_B_UART_Write (&g_uart3_ctrl, (uint8_t*) pBuffer, (uint32_t) size);
    while (uart_send_complete_flag == 0)
    ;
    uart_send_complete_flag = 0;
    return size;
}
/* 重定向 scanf 函数 */
int _read(int fd, char *pBuffer, int size)
{
    (void) fd;
    R_SCI_B_UART_Read (&g_uart3_ctrl, (uint8_t*) pBuffer, (uint32_t) size);
    while (uart_receive_complete_flag == 0)
    ;
    uart_receive_complete_flag = 0;
    /* 回显 */
    R_SCI_B_UART_Write (&g_uart3_ctrl, (uint8_t*) pBuffer, (uint32_t) size);
return size;

}
/* 函数声明 防止编译器警告 */
int _isatty(int fd);
int _close(int fd);
int _lseek(int fd, int ptr, int dir);
int _fstat(int fd, struct stat *st);
__attribute__((weak)) int _isatty(int fd)
{
//    if (fd >= STDIN_FILENO && fd <= STDERR_FILENO)
//    return 1;
//    errno = EBADF;
    return 0;
}
__attribute__((weak)) int _close(int fd)
{
//    if (fd >= STDIN_FILENO && fd <= STDERR_FILENO)
//    return 0;
//    errno = EBADF;
    return -1;
}
__attribute__((weak)) int _lseek(int fd, int ptr, int dir)
{
    (void) fd;
    (void) ptr;
    (void) dir;
//    errno = EBADF;
    return -1;
}
__attribute__((weak)) int _fstat(int fd, struct stat *st)
{
//    if (fd >= STDIN_FILENO && fd <= STDERR_FILENO)
//    {
//        st->st_mode = S_IFCHR;
//        return 0;
//    }
//    errno = EBADF;
    return 0;
}

#else
int fputc(int ch, FILE *f)
{
    (void)f;
    R_SCI_UART_Write(&g_uart0_ctrl, (uint8_t *)&ch, 1);
    while(uart_send_complete_flag == false);
    uart_send_complete_flag = false;
    return ch;
    }
#endif

h

/*
 * bsp_uart.h
 *
 *  Created on: 2024年10月11日
 *      Author: Administrator
 */

#ifndef BSP_UART_H_
#define BSP_UART_H_

void Debug_UART3_Init(void);

#endif /* BSP_UART_H_ */

配置工程printf

在这里插入图片描述

添加串口测试

#include "bsp_uart.h"
/*******************************************************************************************************************//**
 * main() is generated by the RA Configuration editor and is used to generate threads if an RTOS is used.  This function
 * is called by main() when no RTOS is used.
 **********************************************************************************************************************/
void hal_entry(void)
{
    /* TODO: add your own code here */
    Debug_UART3_Init();

       while(1)
       {

               R_BSP_SoftwareDelay(1000, BSP_DELAY_UNITS_MILLISECONDS);

               printf("hello\r\n");

       }

#if BSP_TZ_SECURE_BUILD
    /* Enter non-secure code */
    R_BSP_NonSecureEnter();
#endif
}

在这里插入图片描述

在这里插入图片描述

串口输出

在这里插入图片描述

修改时钟测试

修改时钟为PLLQ 8分频,sci60MHz

在这里插入图片描述

修改后输出依然正常

在这里插入图片描述

API

在这里插入图片描述

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

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

相关文章

bclinux安装minio和mc及从服务器上下载文件

下载MinIO服务器二进制文件 访问MinIO的官方网站或使用wget、curl等工具直接从MinIO的官方GitHub存储库下载最新版本的MinIO服务器二进制文件。例如&#xff0c;使用以下命令&#xff1a; 下载命令&#xff1a;wget https://dl.min.io/server/minio/release/linux-amd64/ 授…

Hadoop三大组件的工作原理

Hadoop三大组件的工作原理 一、引言 Hadoop是一个开源的分布式计算框架&#xff0c;在大数据处理领域具有举足轻重的地位。其核心组件包括HDFS&#xff08;分布式文件系统&#xff09;、MapReduce&#xff08;分布式计算框架&#xff09;和YARN&#xff08;资源管理系统&…

Vue3 ECharts看板

获取 ECharts - 入门篇 - 使用手册 - Apache ECharts npm install echarts <template><div id"main" style"height:400px;"></div> </template><script lang"ts" setup> import { ref, onMounted } from "…

AcWing 905:区间选点 ← 贪心算法

【题目来源】https://www.acwing.com/problem/content/907/【题目描述】 给定 N 个闭区间 [ai,bi]&#xff0c;请你在数轴上选择尽量少的点&#xff0c;使得每个区间内至少包含一个选出的点。 输出选择的点的最小数量。 位于区间端点上的点也算作区间内。【输入格式】 第一行包…

【论文阅读笔记】End-to-End Object Detection with Transformers

代码地址&#xff1a;https://github.com/facebookresearch/detr 论文小结 本文是Transformer结构应用于目标检测&#xff08;OD&#xff09;任务的开山之作。方法名DETE&#xff0c;取自Detection Transformer。   作为2020年的论文&#xff0c;其表现精度在当时也不算高的…

Linux:信号保存与处理

使用kill -l命令查看信号&#xff1a; 信号量和信号确实一点关系没有 信号是操作系统发出的进程与进程之间的通知于中断&#xff0c;是进程之间时间异步通知的一种方式 先了解同步通信&#xff1a;同步通信是一种比特同步通信技术&#xff0c;要求发收双方具有同频同相的同步…

学以致用 SAP HCM 顾问excel函数实战系列

EXCEL函数&#xff1a;在上学的时候&#xff0c;对word、excel、PPT感觉都很简单&#xff0c;稀里糊涂的学&#xff0c;稀里糊涂的忘&#xff0c;然后走向工作岗位的时候&#xff0c;突然发现这三大宝剑无比锋利&#xff0c;可惜自己太菜&#xff0c;曾经努力学习&#xff0c;但…

前端 | Uncaught (in promise) undefined

前端 | Uncaught (in promise) undefined 最近开发运行前端项目时&#xff0c;经常预计控制台报错 &#xff0c;如下图&#xff1a; 这里我总结下&#xff0c;这种报错的场景和原因&#xff0c;并通过实际代码案例帮助小伙伴更好理解下 。 文章目录 前端 | Uncaught (in promi…

数据丢失的终极克星来了!EasyRecovery17数据恢复软件

数据丢失的终极克星来了&#xff01; 各位亲爱的朋友们&#xff0c;你们有没有经历过那种“哎呀妈呀&#xff0c;重要文件找不到了&#xff01;”的绝望时刻&#xff1f;别急&#xff0c;今天我要向你们安利一款神器——EasyRecovery17数据恢复软件&#xff0c;简直是我们这些“…

Javascript笔试题目(二)

1.如何使用ES6语法对函数所有参数进行求和?请写出具体代码 function sumAll(...args) { // args 是一个数组&#xff0c;包含了函数接收到的所有参数 return args.reduce((accumulator, currentValue) > accumulator currentValue, 0); } // 测试函数 console.log…

查找企业联系电话的几种方法

在商业合作和销售拓展的过程中&#xff0c;找到企业的联系电话是至关重要的一步。无论是精准营销还是客户开发&#xff0c;拥有有效的联系方式可以大大提高成功率。那么&#xff0c;如何快速有效地查找企业联系电话呢&#xff1f;下面介绍几种常见的方法&#xff0c;以及如何借…

摩托车一键启动智能钥匙提高了便捷性和安全性

摩托车一键启动无钥匙进入功能是一种便捷的智能配置 通过PKE智能感应技术实现无钥匙启动&#xff1a; 技术原理与操作 摩托车一键启动无钥匙进入系统采用了RFID无线射频技术和车辆身份编码识别系统&#xff0c;实现了双重射频系统、双重防盗保护。操作简便&#xff0c;只需携…

最后倒计时,SIGMOD 2025全球数据库盛会,你准备好了吗?

一、会议资讯&#xff1a; ACM SIGMOD/PODS International Conference on Management of Data是计算机科学领域中一个顶级的国际学术会议&#xff0c;专注于数据库管理和数据系统的前沿研究。 SIGMOD Conference 每年由 ACM 主办&#xff0c;汇集了全球顶尖的学者、研究人员和…

【使用Java循环输出菱形,空心金字塔】

使用Java循环输出图形的探索之旅 在这篇博客中&#xff0c;我们将探讨如何使用Java中的循环结构来输出各种几何图形&#xff0c;特别是金字塔和菱形。通过这一过程&#xff0c;不仅能够加深对循环的理解&#xff0c;还能提升编程能力。 1. 打印矩形 首先&#xff0c;我们从最…

初级学习:Python实现AI并搭建

随着人工智能(AI)的迅猛发展,越来越多的人希望能够学习如何通过编程实现AI应用。Python,因为其简洁易用,被广泛认为是AI开发的理想编程语言。本文将介绍Python在AI开发中的基础应用,帮助初学者入门并构建自己的AI项目。 为什么选择Python 在了解如何用Python实现AI之前,…

探索 Python 装饰器的终极利器:wrapt 库

文章目录 探索 Python 装饰器的终极利器&#xff1a;wrapt 库背景&#xff1a;装饰器的进化之旅初识 wrapt&#xff1a;它究竟是什么&#xff1f;安装 wrapt&#xff1a;简单几步&#xff0c;轻松上手函数的魔法&#xff1a;wrapt 的简单使用创建简单装饰器装饰器的高级用法&am…

浅谈导热油蒸汽发生器在电子及半导体行业中应用

导热油蒸汽发生器在电子或半导体行业制造过程中有着广泛的应用。为促进温控行业交流发展上海中壹展览等于十二月在上海举办主办首届“TCU China温控展”。以下是一些具体的应用场景和优势&#xff1a; 应用场景 1.清洗与洁净室控制: 半导体生产过程中&#xff0c;生产设备和工…

TikTok代理IP全面使用指南

对于那些希望通过社交媒体打造个人品牌的人来说&#xff0c;TikTok是现在热门的平台&#xff0c;他的流量与曝光不可小觑&#xff0c;相信很多跨境营销会选择他进行多账号营销。问题是&#xff0c;TikTok多账号很容易遇到封禁问题&#xff0c;那么如何解决&#xff1f; 一、什么…

第十三章 RabbitMQ之消息幂等性

目录 一、引言 二、消息幂等解决方案 2.1. 方案一 2.2. 方案二 一、引言 幂等是一个数学概念&#xff0c;用函数表达式来描述是这样的&#xff1a;f(x) f(f(x)) 。在程序开发中&#xff0c;则是指同一个业务&#xff0c;执行一次或多次对业务状态的影响是一致的。有些业务…

3款逆天级Word插件,一键解决文档排版烦恼

在当今快节奏的工作环境中&#xff0c;高效的文档处理能力至关重要&#xff0c;今天电脑天空将为大家介绍三款卓越的Word插件&#xff0c;它们能显著提升你的写作效率&#xff0c;让您的工作成果更加出色。 1. 文档排版利器&#xff1a;小恐龙公文排版助手 小恐龙公文排版助手…