Renesas RAマイコンを使ってみよう(4)~UARTを使ってみよう~ の続きです。
https://qiita.com/usashirou/items/76d4a441253a25185adb
スイッチを押したらUARTで送信するプログラムにしてみましょう。
R_IOPORT_PinRead によりLED及びURATの送信をするプログラムになります。
修正部分
R_IOPORT_PinRead
により R_SCI_UART_Write を送信しています。
プログラム
void hal_entry(void)
{
uint8_t data[] = "SW1\n\r";
R_SCI_UART_Open(&g_uart0_ctrl, &g_uart0_cfg);
/* TODO: add your own code here */
while(1){
bsp_io_level_t SW1_status;
R_IOPORT_PinRead(&g_ioport_ctrl, SW1, &SW1_status);
if(SW1_status){
R_IOPORT_PinWrite(&g_ioport_ctrl, LED1,BSP_IO_LEVEL_HIGH );
}else{
R_SCI_UART_Write(&g_uart0_ctrl, data, sizeof(data));
R_IOPORT_PinWrite(&g_ioport_ctrl, LED1,BSP_IO_LEVEL_LOW );
}
R_BSP_SoftwareDelay(3, BSP_DELAY_UNITS_MILLISECONDS);
}
}
UARTの受信に応じて動作するプログラム
次に、UARTで受信した内容を基にLEDを点灯させてみます。
最初に R_SCI_UART_Read によりUARTを読み込みます。
GPIO Read
Developer Assistance を開いて Call R_SCI_UART_Read を探します。
Case文
読み込んだ UART に応じてcase文を構成しました。
今回は、文字列として1,2,それ以外の場合にLEDの点灯方法が変わるようになっています。
プログラム
void hal_entry(void)
{
uint8_t msg[] ="Hello Renesas RA \r\n";
uint8_t rev;
R_SCI_UART_Open(&g_uart0_ctrl, &g_uart0_cfg);
R_SCI_UART_Write(&g_uart0_ctrl, msg, sizeof(msg));
while(1){
R_SCI_UART_Read(&g_uart0_ctrl, &rev, 1000);
switch(rev){
case '1':
R_IOPORT_PinWrite(&g_ioport_ctrl, LED1,BSP_IO_LEVEL_HIGH );
R_IOPORT_PinWrite(&g_ioport_ctrl, LED2_PMOD1_IRQ,BSP_IO_LEVEL_LOW );
break;
case '2':
R_IOPORT_PinWrite(&g_ioport_ctrl, LED1,BSP_IO_LEVEL_LOW );
R_IOPORT_PinWrite(&g_ioport_ctrl, LED2_PMOD1_IRQ,BSP_IO_LEVEL_HIGH );
break;
default:
R_IOPORT_PinWrite(&g_ioport_ctrl, LED1,BSP_IO_LEVEL_LOW );
R_IOPORT_PinWrite(&g_ioport_ctrl, LED2_PMOD1_IRQ,BSP_IO_LEVEL_LOW );
break;
}
}
}