こんどはUARTを動かそう.内部状態をモニタするのにUARTがあると便利なので.
STM32 IDEのwork flowについては前回を参照してもらいたい.
以下ではいきなりUSART1を追加するところから始める.
軽くご注意:ここで使うのはNUCLEO-F401REである.STM32CubeMXがNUCLEO-F401RE向けのデフォルトで生成させた雛形では、USART2がactiveにされる.ところがUSART2はST-LINKに接続されているので、USART2を使おうとすると衝突が生じる恐れがある.なのでUSART1を使うべきと考えられる.
↓STM32CubeMXの画面で設定.
①connectivity
②USART1 ←USART2は避けた方が良さそう
③Asynchronous
④Disable
⑤115200、8bit、no-parity、、、、
⑥PA9,PA10にTX,RXが自動的に割り振られる
↓割り込みをオンにする.
↓source codeの変更
main.c
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
unsigned char txbuf1[] = "TX direct\n";
unsigned char txbuf2[] = "TX interrupt\n";
/* USER CODE END 0 */
/* USER CODE BEGIN WHILE */
while (1)
{
HAL_UART_Transmit(&huart1, txbuf1, sizeof(txbuf1), 0xFFFF);
HAL_Delay(500);
HAL_UART_Transmit_IT(&huart1, txbuf2, sizeof(txbuf2));
HAL_Delay(500);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
HAL_UART_Transmit() は、フツーの送信をするHALライブラリ.
HAL_UART_Transmit_IT() は、割り込みを活用した送信をするHALライブラリ.
↓RUNさせる
↓PC上でTeratermなどでCOM PORTをモニタすると、、、、
TX interrupt
TX direct
TX interrupt
TX direct
TX interrupt
こんな文字がトロトロと表示される.
------
というのはウソでぇ~す.何も表示は出ません.
なぜかというと、TXRXをUSBに変換する回路を追加しなくちゃいけない.その回路が無いとUSBケーブルを繋ぐ場所すらないもん.今回はこれが一番めんどくさい.
PA9,PA10にTX,RXが割り振られているので、FT232RLのようなUART-USB変換回路をそこに配線する.
この連載を読むような方ならば意味がわかるだろう.
今宵はここまでにしとうございます.
音を出でよ!
かしこ
0 件のコメント:
コメントを投稿