RA-Eco-RA4M2开发板配置了USB转串口功能,为此非常便于进行串口的测试,其电路见图1所示。
图1 USB转串口电路 要利用该串行电路进行测试,需按图2在RASC中栈中添加UART,并按图3来设置参数。 图2 添加UART 图3设置参数 此外,为实现串口通讯对LED的扩展,还需对LED所用的引脚加以配置。 图4 LED电路 图5 引脚配置 在生成KEIL项目工程后,为主程序添加的代码如下: - void hal_entry(void)
- {
- err = R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg);
- assert(FSP_SUCCESS == err);
- err = R_SCI_UART_Read(&g_uart9_ctrl, uart_rx_buffer, 1);
- assert(FSP_SUCCESS == err);
- R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_02, BSP_IO_LEVEL_LOW);
- R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_04, BSP_IO_LEVEL_LOW);
- R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_05, BSP_IO_LEVEL_LOW);
- while(1)
- {
- if(uart_receive_complete_flag)
- {
- uart_receive_complete_flag = false;
- if(uart_rx_buffer[0] == 0x1)
- {
- R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_02, BSP_IO_LEVEL_HIGH);
- R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_04, BSP_IO_LEVEL_LOW);
- R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_05, BSP_IO_LEVEL_LOW);
- }
- if(uart_rx_buffer[0] == 0x2)
- {
- R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_02, BSP_IO_LEVEL_LOW);
- R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_04, BSP_IO_LEVEL_HIGH);
- R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_05, BSP_IO_LEVEL_LOW);
- }
- if(uart_rx_buffer[0] == 0x3)
- {
- R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_02, BSP_IO_LEVEL_LOW);
- R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_04, BSP_IO_LEVEL_LOW);
- R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_05, BSP_IO_LEVEL_HIGH);
- }
- }
- err = R_SCI_UART_Read(&g_uart9_ctrl, uart_rx_buffer, 1);
- assert(FSP_SUCCESS == err);
- }
- R_BSP_SoftwareDelay (100, BSP_DELAY_UNITS_MILLISECONDS);
- }
- }
经程序的编译和下载,其测试结果如图6和图7所示,即方式0x1、0x2及0x3时,可分别点亮LED1至LED3,说明功能正确。 图6 发送控制码
|