之前在使用STC芯片或者是STM32时候,在没有屏幕显示的情况下,都会使用的printf输出一些调试信息,方便我们调试代码信息。
对于STM32的串口输出的配置过程,可以参照我之前的帖子,欢迎大家给出意见,帖子链接如下所示:
https://forum.eepw.com.cn/thread/383039/1
【DIY手势翻页笔】手势翻页笔-过程贴:课程一printf输出-电子产品世界论坛
之前也是有幸参加论坛举办的活动,虽然自己有着STC的调试经验,在STM32的移植方面也是i遇到的问题,在帖子里面对于一些常见的问题,也做得简单的介绍。
一:下面我对瑞萨开发板的硬件开发平台:
瑞萨5.6.0版本,FSP库使用的5.6.0版本

二:简单介绍瑞萨开发环境的中对 printf的搭建过程:
2.1 串口0的使能过程如下:打开瑞萨的配置图

使能串口0,并且配置好 串口的发送引脚和接收引脚 P101 P100
2.2 配置串口0的基本参数如下所示:

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然后编译工程发现,程序会报错,编译截图如下所示:

编译器会报错,提示 工程缺少 工具链什么的,然后我查询了一下,电脑上面已经添加了工具链,还是一直报错。
解决办法:
是瑞萨的开发工具版本比较高,对printf输出函数的兼容性的问题。
需要对开发环境配置一下:
在项目一栏下,对软件进行配置一下。在other linker flags 添加图示 函数

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

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

实物测试图片如下所示:

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