上篇我们分享了我们IIC读取传感器数据,是用仿真器进行仿真查看数据的,不是很方便,这篇我们通过串口进行数据打印。
![image.png](//file.elecfans.com/web2/M00/83/E8/pYYBAGOZI6KAajgJAAD8tJCDESw605.png)
首先我们的开发板上是板载了一个USB转串口的芯片,先看下连接了我们的那个管脚上。
![image.png](//file.elecfans.com/web2/M00/83/E9/pYYBAGOZI6mAVHFaAAC_7Q0yjPs695.png)
然后进入配置,他这里和其他的不通,他这里把串口放在SCI里面,串行通信都放在这个下面了。
![image.png](//file.elecfans.com/web2/M00/83/E9/pYYBAGOZI6-APASrAACkz5OQshI614.png)
调整那个需要进行debug口更改,不能是JTAG,不然JATG占用了资源,修改成SW口即可。
![image.png](//file.elecfans.com/web2/M00/83/60/poYBAGOZI7aABpyfAAB7_6vXVQI009.png)
然后进行Stacks里面修改,把通道和名称都修改了,增加一个回调函数。
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;
}
}
}
#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](//file.elecfans.com/web2/M00/83/60/poYBAGOZI_qAceuSAAEk1YQ3BXo075.png)
我们对串口进行重定向之后,就可以使用printf打印了。
![image.png](//file.elecfans.com/web2/M00/83/E9/pYYBAGOZI_-APDjzAAD8IsjwNt8251.png)
串口数据也出来了。
|