STM32CubeIDEを使ってみよう How To STM32CubeIDE 日本語版 (6) UARTを使ってみよう(2)
STM32CubeIDEを使ってみよう How To STM32CubeIDE 日本語版 (5) UARTを使ってみようの続きです。
今回は、受信した文字に応じて動くプログラムを作ってみましょう。
case文を使って、条件分岐し、LEDを動かすプログラムを作ります。
同じような記事がどこかにあったのですが、見つけれませんでした。
類似の資料として以下2つのサイトがありますので、こちらもぜひご覧ください。
・STM32でUARTをやってみる2
http://gsmcustomeffects.hatenablog.com/entry/2017/03/23/120043
・UARTを使ってみる
https://nucleo87.webnode.jp/nucleo%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0/uart%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86%EF%BC%81/
まずは、プログラムの内容を考えてみしょう。
TeraTermなどで文字を受信すると、その内容によりLEDが点灯したり、消灯したりしたいと思います。
まずは、文字を受信するプログラムを書いてみます。
HAL_UART_Receiveが文字を受信するプログラムです。
使用するポートはhuart2です
pDataには、受信する文字列を入れる名前です。
今回は、revとします。
このため、intやcharなどで revを定義しましょう。
int やcharは、文字を入れたいか、数字を入れたいかで決めましょう。
sizeは入れるサイズで、timeoutは適宜入れましょう。
char rev;
HAL_UART_Receive(&huart2,&rev,1,3000
が決まりました。
もし、xxと受信したらLEDを点灯させる
今回は、1と入れたらLEDが点灯する、2を入れたら消灯するとします。
switch(rev)
{case '1':~~~
}
となります。
ちなみに、最後に「== HAL_OK」が必須です。
ここまで来て、動かない時に、なぜだろうか?と思う時があると思います。
なので、本当に押したキーを認識するかのプログラムを追加しましょう
前回と同じように作ってみましょう。
char rec1[] ="Receive1\r\n";
HAL_UART_Transmit(&huart2,(uint8_t *)rec1,sizeof(rec1),1000);
/* USER CODE BEGIN 2 */
char msg[] ="Hello STM32\r\n";
char msg2[] ="PushButton\r\n";
char rec1[] ="Receive1\r\n";
char rec2[] ="Receive2\r\n";
char nonans[] ="Not Understand \r\n";
char rev;
HAL_UART_Transmit(&huart2,(uint8_t *)msg,sizeof(msg),3000);
// HAL_UART_Transmit(&huart2,(uint8_t *)msg,strlen(msg),3000);
/* USER CODE END 2 */
/* USER CODE BEGIN 3 */
if(HAL_UART_Receive(&huart2, &rev, 1, 1000)==HAL_OK){
switch(rev)
{
case '1':
HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin,1);
HAL_UART_Transmit(&huart2,(uint8_t *)rec1,sizeof(rec1),3000);
break;
case '2':
HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin,0);
HAL_UART_Transmit(&huart2,(uint8_t *)rec2,sizeof(rec2),3000);
break;
default:
HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
HAL_UART_Transmit(&huart2,(uint8_t *)nonans,sizeof(nonans),3000);
break;
}
}
}
/* USER CODE END 3 */
うまく動くと、1を押すと、LEDが点灯し、2を押すと消灯、それ以外だと点灯消灯が切り替わると思います。
Author And Source
この問題について(STM32CubeIDEを使ってみよう How To STM32CubeIDE 日本語版 (6) UARTを使ってみよう(2)), 我々は、より多くの情報をここで見つけました https://qiita.com/usashirou/items/5a2c9e4fd35c261c4f3a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .