瑞萨单片机william hill官网
直播中

jf_84146745

4年用户 174经验值
擅长:嵌入式技术,EMC/MEI设计,处理器/DSP
私信 关注
[经验]

【瑞萨RA4系列开发板体验】2.RA4M2串口打印数据

上篇我们分享了我们IIC读取传感器数据,是用仿真器进行仿真查看数据的,不是很方便,这篇我们通过串口进行数据打印。
image.png

首先我们的开发板上是板载了一个USB转串口的芯片,先看下连接了我们的那个管脚上。
image.png

然后进入配置,他这里和其他的不通,他这里把串口放在SCI里面,串行通信都放在这个下面了。

image.png

调整那个需要进行debug口更改,不能是JTAG,不然JATG占用了资源,修改成SW口即可。

image.png

然后进行Stacks里面修改,把通道和名称都修改了,增加一个回调函数。

/* 调试串口 UART4 初始化 */

void Debug_UART9_Init(void)

{

fsp_err_t err = FSP_SUCCESS;

err = R_SCI_UART_Open (&g_uart9_ctrl, &g_uart9_cfg);

assert(FSP_SUCCESS == err);



}

/* 发送完成标志 */

volatile bool uart_send_complete_flag = false;

/* 串口中断回调 */

void debug_uart9_callback (uart_callback_args_t * p_args)

{


switch (p_args->event)

{


case UART_EVENT_RX_CHAR:

{


/* 把串口接收到的数据发送回去 */

R_SCI_UART_Write(&g_uart9_ctrl, (uint8_t *)&(p_args->data), 1);

break;



}

case UART_EVENT_TX_DATA_EMPTY:

{

uart_send_complete_flag = true;

break;


}



}



}

/* 重定向 printf 输出 */

#if defined __GNUC__ && !defined __clang__

int _write(int fd, char *pBuffer, int size)

{


R_SCI_UART_Write(&g_uart4_ctrl, (uint8_t *)pBuffer, (uint32_t)size);

while(uart_send_complete_flag == false);

uart_send_complete_flag = false;

return size;



}

#else

int fputc(int ch, FILE *f)

{


R_SCI_UART_Write(&g_uart9_ctrl, (uint8_t *)&ch, 1);

while(uart_send_complete_flag == false);

uart_send_complete_flag = false;

return ch;



}

#endif

image.png

我们对串口进行重定向之后,就可以使用printf打印了。

image.png

串口数据也出来了。

更多回帖

发帖
×
20
完善资料,
赚取积分