#include "pico/stdlib.h" #include "hardware/uart.h" #include "hardware/irq.h" // UART RXのIRQハンドラ void on_uart_rx() { while(uart_is_readable(uart0)) { // 1文字読む uint8_t c = uart_getc(uart0); if(uart_is_writable(uart0)) { // 読み込んだ文字を書き込み uart_putc(uart0, c); } } } // main int main() { // GPIOの初期化 gpio_init(PICO_DEFAULT_LED_PIN); // 入出力の設定 gpio_set_dir(PICO_DEFAULT_LED_PIN, GPIO_OUT); // UART0の初期化 uart_init(uart0, 115200); // GPIOの設定 gpio_set_function(0, GPIO_FUNC_UART); gpio_set_function(1, GPIO_FUNC_UART); // ボーレートの設定 // 第2引数: CTSを使うかどうか // 第3引数: RTSを使うかどうか uart_set_hw_flow(uart0, false, false); // データフォーマットの設定 // 第2引数: データビット数 // 第3引数: ストップビット // 第4引数: パリティビットを使うかどうか uart_set_format(uart0, 8, 1, UART_PARITY_NONE); // FIFOバッファを使うかどうか uart_set_fifo_enabled(uart0, false); // IRQハンドラの設定 irq_set_exclusive_handler(UART0_IRQ, on_uart_rx); // IRQの有効化 irq_set_enabled(UART0_IRQ, true); // RXのみ設定 // 第2引数: RXのIRQ // 第3引数: TXのIRQ uart_set_irq_enables(uart0, true, false); while (true) { // HIGHを出力 gpio_put(PICO_DEFAULT_LED_PIN, 1); sleep_ms(300); // LOWを出力 gpio_put(PICO_DEFAULT_LED_PIN, 0); sleep_ms(300); } }