STM32CubeMX は USART シリアル通信を実装します

1. 実験環境

  • ハードウェア: stm32f103c8t6 コアボード
  • ソフトウェア: STM32CubeMX 6.6.1
  • ケイル5mdk

2. STM32CubeMXのインストール

ここでは詳しく紹介しません。詳しくは以前のブログを参照してください:
https://blog.csdn.net/qq_55894922/article/details/127232999?spm=1001.2014.3001.5501

3. STM32CubeMX を使用してシリアル通信を完了します

1. ファームウェアライブラリをインストールする

[組み込みソフトウェア パッケージの管理] をクリックした後にエラーが発生した場合は、ファイル -> 新しいプロジェクトをクリックするなど、他のオプションをクリックしていくつかのファイルをダウンロードし、ダウンロード後にファームウェア ライブラリをインストールする必要があります。
ここに画像の説明を挿入

独自の開発ボードのファームウェア ライブラリを選択します。ここでは F1 を選択します。
ここに画像の説明を挿入

2. プロジェクトの設定

1.ファイル->新しいプロジェクトをクリックしてプロジェクトをビルドします。
ここに画像の説明を挿入
2. モデルを検索し、適切なモデルを選択してプロジェクトをビルドします
ここに画像の説明を挿入
。 3. システムのデバッグと基準クロック構成を実行します。[システム コア]ドロップダウンで[SYS]をクリックしますデバッグインターフェイスを選択しますシリアルワイヤーを選択_

SW モードの場合は、シリアル ワイヤを選択します。JTAG モードの場合は、JTAG を選択します。4 ピンと 5 ピンの違いはリセット ピンが 1 つ多いことです。stlink デバッグは SW モード、jlink デバッグは JTAG モードです。

ここに画像の説明を挿入
4. クロック RCC オプションの設定を実行します。[システム コア]ドロップダウンで[RCC]をクリックします外部水晶発振器Crystal/Ceramic Resonatorを選択できますが、2 番目の LSE も設定できず、効果はありません。

BYPASS Clock Source (バイパスクロックソース)
Crystal/Ceramic Resonator (クォーツ/セラミック水晶発振子)

ここに画像の説明を挿入
5. システム固有のクロック構成を実行します。Clock Configuration」オプションバーをクリックして、クロックツリー構成インターフェイスに入ります。

外部クロック HSE 8MHz
PLL フェーズ ロック ループ周波数逓倍器を選択します 9 倍 (8*9=72)
システム クロック ソースを PLL として選択し
、APB1 分周器を /2 に設定します

ここに画像の説明を挿入
6. シリアルポートを設定します。ここではUSART1を選択します。シリアルポートによって設定されるピンは PA9 と PA10 です。
3番目のステップでMODEを非同期通信(Asynchronous)に設定し、
4番目のステップでボーレートを115200 Bits/s、送信データ長を8 Bit、パリティチェックなし、ストップビットを1に設定します。
ここに画像の説明を挿入
7. 設定が完了したら、[プロジェクト マネージャー] オプションをクリックしてプロジェクト設定インターフェイスに入り、 [プロジェクト]オプションを選択します。
注: プロジェクト名やパスに関係なく、中国語を含めないでください。中国語を含めないと、後でファイルをコンパイルするときにエラーが発生します。

プロジェクト名: プロジェクト名
プロジェクトの場所: 「参照」をクリックして、生成されたプロジェクトを保存するディレクトリを選択します。
アプリケーション構造: アプリケーション構造
基本: 基本的な構造であり、通常はミドルウェア (RTOS、ファイル システム、USB デバイスなど) を含みません。
上級: 逆に、一般に比較的複雑なプロジェクト向けのミドルウェアが含まれます。
ツールチェーン/IDE: 使用するコンパイル ソフトウェアに応じて選択し、KEIL を使用する場合は、対応する keil のバージョンを選択します。他のデフォルトのバージョンより高くしないでください。

ここに画像の説明を挿入
8. [コード ジェネレーター]をクリックし、生成されたファイルの最初のファイルを確認します。
ここに画像の説明を挿入

  1. 使用されているすべてのライブラリをプロジェクト フォルダーにコピーする: 生成されたプロジェクト ディレクトリにすべてのライブラリ ファイル (プロジェクトを使用する必要があるかどうかに関係なく) をコピーします。この方法により、Cubemx が使用されていない場合や cubemx の場合に標準ライブラリに従うことができます。がコンピュータにインストールされていない プログラミング習慣では、プログラミングのために HAL ライブラリ関数を呼び出します。
    2.必要なライブラリファイルのみをコピーする:必要なライブラリファイルのみをコピーします。これにより、以前のものと比較して多くのファイルが削減されます。たとえば、CAN、SPI などの周辺機器を使用しない場合は、関連するライブラリ ファイルをプロジェクトにコピーしません。
    3.ツールチェーン プロジェクト構成ファイルに必要なライブラリ ファイルを参照として追加します。ツールチェーン プロジェクト構成ファイルに必要なライブラリ ファイルを参照として追加します。ここでは HAL ライブラリ ファイルはコピーされず、必要なファイル (main.c など) のみが追加されます。上記と比較すると、Drivers 関連のファイルはありません。
    4.ペリフェラルの初期化をペリフェラルごとに「.c/.h」ファイルのペアとして生成します。各ペリフェラルは、独立した管理を容易にするため、独立した .C .H ファイルを生成します。チェックなし: すべての初期化コードが main.c に生成されます。 チェックあり: 初期化コードが対応するペリフェラル ファイルに生成されます。uart.c で生成される UART 初期化コードなど。
    5.再生成時に以前に生成されたファイルをバックアップする: 再生成時に以前に生成されたファイルをバックアップします。コードが再生成されると、該当するディレクトリに Backup フォルダーが生成され、そこに以前のソース ファイルがコピーされます。
    6.再生成時にユーザー コードを保持する: コードを再生成するときに、ユーザー コードを保持します (コードが指定された位置に記述されている場合に限ります。つまり、生成されたプロジェクト ファイルの BEGIN と END の間にあります。そうでない場合も同様です)。削除されました。後で、7.に従って生成されます
    。再生成されない場合は、以前に生成されたファイルを削除します。以前に生成されたが生成対象として選択されていないファイルを削除します。例: led.c は以前に生成されましたが、現在はありません再構成で led.c を作成すると、以前の LED は .c ファイルから削除され (この機能は独自の要件に従って選択されます)

9. 「コードの生成」をクリックしてコードを生成します。次にプロジェクトを開きます
ここに画像の説明を挿入

10. コードをコンパイルします。エラーなしでコンパイルする
ここに画像の説明を挿入

4.USARTシリアル通信

1. UART関数ライブラリの紹介

構造体と関数の定義はヘッダー ファイルstm32f1xx_hal_uart.hにあります。

  • UART 構造の定義
UART_HandleTypeDef huart1;
  • シリアルポート送受信機能
HAL_UART_Transmit():串口发送数据,使用超时管理机制
HAL_UART_Receive():串口接收数据,使用超时管理机制
HAL_UART_Transmit_IT():串口中断模式发送
HAL_UART_Receive_IT():串口中断模式接收
HAL_UART_Transmit_DMA():串口DMA模式发送
HAL_UART_Transmit_DMA():串口DMA模式接收

シリアル ポートはデータを送信します。

HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)

機能: シリアルポートは指定された長さのデータを送信します。タイムアウトが完了していない場合は、タイムアウト フラグ (HAL_TIMEOUT) を送信および返しません。
パラメータ:

  • *UART_HandleTypeDef huart: UART 構造体 (huart1)
  • *pData: 送信するデータ
  • サイズ: 送信されたバイト数
  • 最大送信時間。送信データがこの時間を超えると、送信が中止されます
    。例:
HAL_UART_Transmit(&huart1, (uint8_t *)"diyu", 4, 0xffff);   //串口发送4个字节数据,最大传输时间0xfff

2. コードの書き方

ファイルmain.cの while ループにコードを追加します。

while (1)
  {
    
    
    /* USER CODE END WHILE */
    //添加下面两行代码
		HAL_UART_Transmit(&huart1, (uint8_t *)"hello windows!\r\n", 16 , 0xffff);
		 HAL_Delay(1000);  //延时1s
    /* USER CODE BEGIN 3 */
  }

3. デバッグ結果

注: ボー レート、ストップ ビット、データ ビット、およびパリティ ビットは、設定と一致している必要があります
。プログラムをコンパイル、書き込み、またはコア ボードにダウンロードし、シリアル ポート アシスタントを開いて受信したデータを表示します。ここに画像の説明を挿入

5. ソフトウェアのデバッグ

1. 魔法の杖をクリックしてデバッグを設定します。ソフトウェア デバッグを使用するには、[シミュレータを使用する] をオンにします。ダイアログの DLL とパラメータの変更

ダイアログ DLL は DARMSTM.DLL に設定され、TARMSTM.DLL
パラメータは -pSTM32F103C8 (その後にチップ モデルが続きます) に設定されます。

ここに画像の説明を挿入
2. ボックス内をクリックしてデバッグを開始し、波形解析用のロジック アナライザウィンドウを開きます。
ここに画像の説明を挿入

3. [セットアップ] オプションをクリックし、青いボックスをクリックしてUSART1_SRと入力し、タイプをビット ストリームに設定し、波形の色の設定を選択します。設定後、下の「閉じる」をクリックして終了します。
ここに画像の説明を挿入
4. 「コンパイル」をクリックします
ここに画像の説明を挿入
。 5. 波形を表示します。
ここに画像の説明を挿入

6. まとめ

この実験では、USART シリアル通信を実現するために STM32CubeMX を使用しています。これは一般に自分で記述するよりも簡単であり、これは HAL ライブラリの利便性でもあります。

7. 参考文献

https://blog.csdn.net/qq_45945548/article/details/120984961?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166565631116782412574363%2522%252C%2522scm%252 2%253A%252220140713.130102334.pc%255秋.% 2522%257D&request_id=166565631116782412574363&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2すべてfirst_rank_ecpm_v1~pc_rank_34-3-120984961-null-null.142 v56 pc_rank_34 _1,201 v3 add_ask&utm_term=STM32CubeMX%E5%AE%9E%E7% 8E%B0USART%E4%B8%B2%E5%8F%A3%E9%80%9A%E4%BF%A1&spm=1018.2226.3001.4187

https://blog.csdn.net/ybhuangfugui/article/details/94363188

https://blog.csdn.net/as480133937/article/details/99073783

おすすめ

転載: blog.csdn.net/qq_55894922/article/details/127304843