0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

UART在5.2.0版本E2S中的重定向

瑞萨嵌入式小百科 来源:瑞萨嵌入式小百科 2025-10-31 15:28 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

18.8

UART在5.2.0版本E2S中的重定向

18.8.1

重定向失效原因

随着FSP库版本更新到5.2.0,在开发过程中就会发现4.0.0版本的串口重定义并不适用于最新版本。继续使用原来的重定向代码时,编译器就会报错。根据报错的信息发现,缺少了几个函数的定义,这里补全定义即可。

3b464296-b3b4-11f0-8c8f-92fbcf53809c.png

图19-20 串口重定义编译器报错

18.8.2

重定向代码

Uart重定向函数函数的内容修改成如下所示。

列表11:代码清单19-10:Uart重定向函数

左右滑动查看完整内容

#ifdefined __GNUC__ && !defined __clang__
int_write(intfd,char*pBuffer,intsize);//防止编译警告
int_read(intfd,char*pBuffer,intsize);
/* 重定向 printf 输出 */
int_write(intfd,char*pBuffer,intsize)
{
(void) fd;
R_SCI_UART_Write(&g_uart0_ctrl, (uint8_t*) pBuffer, (uint32_t) size);
while(uart_send_complete_flag ==false)
; 
uart_send_complete_flag =false;
returnsize;
}
/* 重定向 scanf 函数 */
int_read(intfd,char*pBuffer,intsize)
{
(void) fd;
R_SCI_UART_Read(&g_uart0_ctrl, (uint8_t*) pBuffer, (uint32_t) size);
while(uart_receive_complete_flag ==false)
;
uart_receive_complete_flag =false;
/* 回显 */
R_SCI_UART_Write(&g_uart0_ctrl, (uint8_t*) pBuffer, (uint32_t) size);
returnsize;
}
#else
intfputc(intch, 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;
returnch;
}
#endif

Uart重定向头文件修改如下所示。

列表12:代码清单19-11:Uart重定向头文件

左右滑动查看完整内容

#ifndef__BSP_DEBUG_UART_H
#define__BSP_DEBUG_UART_H
#include"hal_data.h"
#include"stdio.h"
#include
#include
#include
voidDebug_UART0_Init(void);
#endif

补全缺失函数如下所示。

列表13:代码清单19-12:补全缺失函数

左右滑动查看完整内容

/*函数声明防止编译器警告*/
int_isatty(intfd);
int_close(intfd);
int_lseek(intfd,intptr,intdir);
int_fstat(intfd, structstat*st);
__attribute__((weak))int_isatty(intfd)
{
if(fd>= STDIN_FILENO && fd<= STDERR_FILENO)
 return1;
  errno = EBADF;
return0;
 }
 __attribute__((weak)) int _close(int fd)
 {
if (fd >= STDIN_FILENO && fd <= STDERR_FILENO)
return0;
 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;
return0;
}
errno = EBADF;
return0;
}

18.8.3

下载验证

保证开发板相关硬件连接正确,用Type-CUSB线连接开发板“USBTOUART”接口电脑。本次实验需要使用到串口调试助手,配置好串口参数并打开串口后,在调试助手的发送区域输入任意字符并点击发送,即可在接收区看见相同字符,如图19_17。

3bad5954-b3b4-11f0-8c8f-92fbcf53809c.png

图19-21 实验1下载验证

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 串口
    +关注

    关注

    15

    文章

    1607

    浏览量

    82041
  • uart
    +关注

    关注

    22

    文章

    1304

    浏览量

    106174
  • 函数
    +关注

    关注

    3

    文章

    4408

    浏览量

    66967
  • 编译器
    +关注

    关注

    1

    文章

    1670

    浏览量

    51127

原文标题:UART在5.2.0版本E2S中的重定向——瑞萨RA系列FSP库开发实战指南(50)

文章出处:【微信号:瑞萨嵌入式小百科,微信公众号:瑞萨嵌入式小百科】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    STM8S如何在STVD环境下重定向printf函数实现UART简化输出?

    printf(),网上IAR环境的重定向调通了,求STVD环境下的code。 3. 用STM8的官方例程UART1_PrintfSTVD环境下编译OK,但是debug时候报错下载不了程序 4. 针对3
    发表于 04-30 08:29

    芯海通用 MCU应用笔记 : IAR 及 MDK 开发环境下使用 printf 函数重定向移植差异指南

    UART 口输出打印信息。 IAR9.x版本下,IAR 官方已经不再支持 fputc 接口的重定向,此时若移植原 Keil 下代码,则无法
    发表于 05-16 11:56

    【RA-Eco-RA4E2-64PIN-V1.0开发板试用】02、UART串口通信

    USB转串口,连接到P109和P110 IO口。 USB转串口模块板子的左下角区域 2 软件部分 2.1 新建工程 将先前创建的工程模板文件夹复制一份,并将文件夹重命名为02_UART
    发表于 12-14 11:44

    【RA4E2开发板评测】FSP5.2之后的串口重定向问题解决方法

    【缘由】 我导入RA4E2UART工程时遇到编译报错,提示如下: 原因是随着FSP库版本更新到5.2.0
    发表于 08-29 07:02

    stm32系列单片机之printf重定向

    , 一般用于向标准输出设备按规定格式输出信息。但是单片机开发,一般情况下并不存在标准输出设备,因此我们需要将printf的输出信息重定向,也就是输出到其他输出设备中去。stm32
    发表于 01-19 10:59

    请问S3C2440为什么重定向时要注释掉u-boot自带的重定向代码呢?

    Flash的数据,那为什么重定向时要注释掉u-boot自带的重定向代码呢?自带u-boot代码:copy_loop:ldmiar0!, {r3-r10} /* copy from source
    发表于 09-16 10:29

    如何将输出重定向到一个不同的UART

    a)当使用和声时,我可以将Prtuf直接指向任意的UART,或者总是指向UART2?如果是,我如何将输出重定向到一个不同的UART?B)和声控制台,可以到任何
    发表于 05-06 13:59

    实现printf函数的重定向

    目录重定向函数属性设置重定向函数配置好串口之后需要在相关文件添加以下函数以实现printf函数的重定向//注意添加头文件#include
    发表于 08-24 07:09

    使用printf()函数时默认UART0输出,请教如何重定向printf()到UART1?

    芯片:N76E003; 编译环境:keil5 使用printf()函数时默认UART0输出,请教如何重定向printf()到UART1?
    发表于 06-25 07:12

    STM32 hal_printf重定向操作

    STM32 hal_printf重定向操作只需要在uart.c文件添加如下代码, #include "stdio.h"   extern UART
    发表于 12-03 13:36 4次下载
    STM32 hal_printf<b class='flag-5'>重定向</b>操作

    Keil下使用STlink重定向printf的配置

    Keil下使用STlink重定向printf的配置1. printf 重定向Keil默认下使用Micro LIB库,该库调用 fputs 实现 printf,所以需要重新定义fputs函数,以重定向
    发表于 12-27 18:43 18次下载
    Keil下使用STlink<b class='flag-5'>重定向</b>printf的配置

    Linux I/O重定向详解

    Linux I/O重定向可以定义为,更改从命令读取输入到命令发送输出的方式。你可以重定向命令的输入和输出。对于重定向符号,可以是 或者 | 。
    的头像 发表于 05-04 14:34 1353次阅读

    bash如何进行各种文件重定向呢?

    本文会用以下测试程序,来演示bash,如何进行各种文件重定向
    的头像 发表于 08-25 09:31 1901次阅读
    <b class='flag-5'>在</b>bash<b class='flag-5'>中</b>如何进行各种文件<b class='flag-5'>重定向</b>呢?

    如何实现Printf()接口重定向UART

    ;。所谓的重定向,就是重新定义Printf()接口函数里调用的与输出设备相关的函数,eg:使用Printf()接口将MCU的信息,通过串口或者Ethernet输出到终端上位机。
    的头像 发表于 10-01 10:13 2173次阅读
    如何实现Printf()接口<b class='flag-5'>重定向</b>到<b class='flag-5'>UART</b>

    2分钟搞懂输出重定向

    视频最后我们通过重定向把标准输出写到了文件,但是错误输出还是留在了屏幕上。
    的头像 发表于 01-15 16:41 1130次阅读