Intel Quark D2000 Zephyr UART BY INTERRUPT

UART_Aが使用できるようになりましたが、割り込みを使用した方が、効率が良いので割り込みを使ってみます。

プロジェクトのprj.confファイルで周辺機器の設定を行います。

CONFIG_SERIAL=y
CONFIG_UART_INTERRUPT_DRIVEN=y
CONFIG_UART_QMSI_0=y
CONFIG_UART_QMSI_0_HW_FC=n
CONFIG_UART_QMSI_0_BAUDRATE=57600

割り込みの設定CONFIG_UART_INTERRUPT_DRIVENをyにします。その他は、前と一緒です。

uart0_init(void)初期化関数で
uart_irq_callback_set(uart0_dev, uart0_isr);
割り込み関数uart0_isrを登録します。
uart_irq_rx_enable(uart0_dev);
次に受信割り込みを有効にします。

受信が入るとこの関数が呼ばれます。
static void uart0_isr(struct device *x);

int len = uart_fifo_read(uart0_dev, rx_buf, BUF_MAXSIZE);
受信データをバッファに読み出します。最後に受信文字を送信します。ループバックのサンプルになっています。

以下にサンプルがあります。
https://github.com/jendo1969/d2000/tree/master/UARTint


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

© 2014 Spineedge Corporation.