这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【分享开发笔记,赚取电动螺丝刀】分享一下如何解决瑞萨RA2E1使用printf编

共1条 1/1 1 跳转至

【分享开发笔记,赚取电动螺丝刀】分享一下如何解决瑞萨RA2E1使用printf编译报错问题

工程师
2025-03-18 15:15:32     打赏

之前在使用STC芯片或者是STM32时候,在没有屏幕显示的情况下,都会使用的printf输出一些调试信息,方便我们调试代码信息。

对于STM32的串口输出的配置过程,可以参照我之前的帖子,欢迎大家给出意见,帖子链接如下所示:

https://forum.eepw.com.cn/thread/383039/1

【DIY手势翻页笔】手势翻页笔-过程贴:课程一printf输出-电子产品世界论坛

之前也是有幸参加论坛举办的活动,虽然自己有着STC的调试经验,在STM32的移植方面也是i遇到的问题,在帖子里面对于一些常见的问题,也做得简单的介绍。

一:下面我对瑞萨开发板的硬件开发平台:

瑞萨5.6.0版本,FSP库使用的5.6.0版本

55.png

二:简单介绍瑞萨开发环境的中对 printf的搭建过程:

2.1 串口0的使能过程如下:打开瑞萨的配置图

3.png

使能串口0,并且配置好 串口的发送引脚和接收引脚 P101 P100

2.2 配置串口0的基本参数如下所示:

2.png

2.3 配置完成以后,我们点击生成代码,添加对printf输出函数的重定义过程:

串口0的回调函数

void user_uart_callback (uart_callback_args_t * p_args)
{
if(p_args->event == UART_EVENT_TX_COMPLETE)
{
uart_send_complete_flag = true;
}
}

重定义操作如下:

PUTCHAR_PROTOTYPE
{
err = R_SCI_UART_Write(&g_uart0_ctrl, (uint8_t *)&ch, 1);
if(FSP_SUCCESS != err) __BKPT();
while(uart_send_complete_flag == false){}
uart_send_complete_flag = false;
return ch;
}

在程序的初始化时候,对串口0进行初始化,代码如下:

err = R_SCI_UART_Open(&g_uart0_ctrl, &g_uart0_cfg);
assert(FSP_SUCCESS == err);
unsigned char buff[]="RA E2STUDIO";
uint8_t buff_len = strlen(buff);
err = R_SCI_UART_Write(&g_uart0_ctrl, buff, buff_len);
if(FSP_SUCCESS != err) __BKPT();
while(uart_send_complete_flag == false){}
uart_send_complete_flag = false;

主程序,添加printf的输出函数:

printf("rui sa RA2E1 printf \r\n") ;
printf("EEPE huan qu luo si dao huo dong  \r\n") ;
R_BSP_SoftwareDelay(1000, BSP_DELAY_UNITS_MILLISECONDS); // NOLINT100->160

然后编译工程发现,程序会报错,编译截图如下所示:

4.png

编译器会报错,提示 工程缺少 工具链什么的,然后我查询了一下,电脑上面已经添加了工具链,还是一直报错。

解决办法:

是瑞萨的开发工具版本比较高,对printf输出函数的兼容性的问题。

需要对开发环境配置一下:

在项目一栏下,对软件进行配置一下。在other linker flags 添加图示 函数

1.png

然后再对程序编译,就可以正常编译了,使用串口监测一下瑞萨的串口输出功能;

添加了上图的字符之后,我们再次编译的时候就可以了,提示 0 错误,0警告了。

实物测试图片如下所示:

7.png

后记:解决了在瑞萨的官方环境下对调用  printf 函数,软件报错的情况。后续,在和大家分享其他的开发经验。




关键词: 瑞萨开发板     printf输出正常    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]