这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 【瑞萨RA0E2开发板】04:学习一下瑞萨RA0系列的使用printf输出调试信

共3条 1/1 1 跳转至

【瑞萨RA0E2开发板】04:学习一下瑞萨RA0系列的使用printf输出调试信息

高工
2025-09-16 13:36:25     打赏

一:概述    

    printf C 语言中常用的输出函数,广泛应用于各种嵌入式、桌面应用程序和调试过程中。这些函数可以将格式化的数据输出到标准输出(如控制台)或存储到字符串中。在系统开发中,了解它们的底层实现不仅能够帮助优化性能,还能提高代码的可移植性和灵活性。

    通过之前的帖子已经使用串口1进行数据的传输过程,今天调试一下使用printf输出一些变量信息。

二:FSP的配置

2.1 增加堆栈大小:

04-1.png

printf函数通常需要设置堆栈大小。这是因为printf函数在运行时需要使用栈空间来存储临时变量和函数调用信息。如果堆栈大小不足,可能会导致程序崩溃或不可预期的行为。

printf函数使用了可变参数列表,它会在调用时使用栈来存储参数,在函数调用结束时再清除参数,这需要足够的栈空间。另外printf也会使用一些临时变量,如果栈空间不足,会导致程序崩溃。

因此,为了避免这类问题,应该根据程序的需求来合理设置堆栈大小。

2.2 在e2s 中重映射printf设置

04-2.png

三:软件增加重映射代码如下:

打印最常用的方法是printf,所以要解决的问题是将printf的输出重定向到串口,然后通过串口将数据发送出去。

注意一定要加上头文件#include <stdio.h>

#ifdef __GNUC__                                 //串口重定向
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif


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

int _write(int fd,char *pBuffer,int size)
{
for(int i=0;i<size;i++)
{
__io_putchar(*pBuffer++);
}
return size;
}

四:在定时器中,增加一条printf的调试信息输出:

void g_timer0_callback(timer_callback_args_t *p_args)
{
if (TIMER_EVENT_CYCLE_END == p_args->event)
{
/*        g_timer_flag [APP_TML_16_BIT] = true;
        g_number_cycles ++;*/
count0Point++ ;
if(count0Point>=1000)
{
count0Point = 0 ;
printf("EEPW world test printf!\n");
if(flag ==0)
{
flag =1 ;
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_03, BSP_IO_LEVEL_LOW);
}
else
{
flag =0 ;
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_03, BSP_IO_LEVEL_HIGH);
}
}
}
}

五:验证如下:

04-3.png

后记:

1:开始调试的时候,由于工具链创建工程的时候,选错了,导致程序代码编译不通过。

2:调用printf时候,堆栈大小使用的默认数值,导致程序堆栈溢出。

3:最重要的是代码工程的 项目中的设置,没有设置,导致程序编译不通过。




关键词: RA0E2     printf     输出     信息    

院士
2025-09-17 15:19:49     打赏
2楼

这勾选后printf还能支持浮点了呀


院士
2025-09-17 23:48:38     打赏
3楼

楼主 您看您这不是又谦虚了!



共3条 1/1 1 跳转至

回复

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