STM32資料 基礎編 2

シリアル通信でデータを送ってみよう

STMからPCにデータを送信する方法を学んでみよう

今回は1本の線のみを使って、0と1のデータを順番に送るシリアル通信を紹介する

今回やること

前回と同じ流れなので、資料に沿って進めてね

作業の流れ

ピンの割り当て

今回は、USARTという機能を使って通信を行う

画像のようにPA2とPA3にUSART_RX(受信)とUSART_TX(送信)を割り当ててみよう

(すでに割り当てられている場合は確認して次に進もう)

プログラム

データを送信する関数

ここでは指定したデータを送信する関数を紹介する

関数

HAL_UART_Transmit(&huartx, Data, Len, Time);

この関数の引数

1つ目のUART_HandleTypeDef*はHALライブラリで定義されているので

難しいことを考えないで使ってね

引数名 変数型 内容
&huartx UART_HandleTypeDef* UARTのポインタ(xはUARTの番号)
Data uint8_t* 送信するデータのポインタ
Len uint16_t 送信するデータ長
Time uint32_t 最大実行時間(超えたら処理を諦める)
受信のお話(次回の導入?)

サンプルコード

起動時に1度だけ"Hello World"と送信し、その後数字をカウントアップするコードを載せた

#include "wrapper.hpp"
#include "usart.h"
#include "string"

uint16_t count = 0;

void init(){ 

    uint8_t str[] = "Hello World\n";
    HAL_UART_Transmit(&huart2, str,12,100);//strの中身を送信
}
void loop(){

    //文字と数字を組み合わせたものを文字列に変換
    std::string str = "count:" + std::to_string(count) + "\n";
    HAL_UART_Transmit(&huart2, (uint8_t *)str.c_str(),str.length(),100);

    //カウントアップ
    count ++;
    HAL_Delay(500);
}   
細かいお話

TeraTermでの受信

TeraTermを使うことで、STMから送信したデータを受信することができる

下の手順を参考に実際にデータを見てみよう!

受信方法

文字化けや改行がおかしいときは

終わりに

今回はシリアル通信について説明した

現在の値やエラーメッセージの出力など、様々な用途で使えるのでぜひ覚えておこう

次回は、通信の管理でとっても便利な割り込み処理について説明します

リンク

・メインページ

・前のページ

・次のページ