実験1 GPIO実験

1. 実験の目的

  1. 組み込み GPIO プログラミング プロセスをマスターします。
  2. STM32 ファームウェア ライブラリの基本的な使用方法に精通していること。

2. 実験装置

ハードウェア: PC 1 台           

ソフトウェア:MDK V5.23セット

       Proteus8.7セット

  • 実験原理

1. GPIOの基本構造

 

2. GPIOレジスタ

各 GPIO ポートには次の機能があります。

2 つの構成レジスタ (GPIOx_CRL、GPIOx_CRH)

2 つのデータ レジスタ (GPIOx_IDR および GPIOx_ODR)

セット/リセット レジスタ (GPIOx_BSRR)、

リセットレジスタ(GPIOx_BRR)

ロック レジスタ (GPIOx_LCKR)。

3. GPIOモード

 

4. GPIO出力モードの速度

 5. GPIOライブラリ関数

   機能の使用方法の詳細については、「STM32 Firmware Library User Manual.pdf」を参照してください。

 

6. GPIO 設定手順

 (1) 対応するペリフェラルのクロックをオンにします。例:

      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE);

                        //ペリフェラルBポートのクロックをオープンする

  (2) ピン モードを設定します。:

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;//ピン 8 を選択

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//プッシュプル出力

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

           //最大出力速度は50MHzですが、ピンを入力として使用する場合、この項目は設定する必要はありません

  GPIO_Init(GPIOB, &GPIO_InitStructure);//上記のピン設定モードに従って初期化します

7. 一般的な遅延関数

 (1) usレベルディレイ機能

  void late_nus(unsigned long n) // n は 6 より大きくなければなりません

{

  符号なしロング j;

  その間(n--)              

  {

j=12;   

while(j--);

  }

}

 (2) msレベルのディレイ機能

void late_nms(unsigned long n) // ミリ秒レベルの遅延

{

  その間(n--)   

  遅延_nus(1030);   

}

4. 実験内容

1. Keil5 を使用してプロジェクトをビルドします。プロジェクトの構築方法については、 New Project Template.pdf ファイルを参照してください。

2. Proteus8.7 の使用方法については、第 4 章のコースウェアを参照するか、ご自身で情報を確認してください。

STM32 MCU コンパイル環境 keil5 と Proteus シミュレーションの簡単な組み合わせアプリケーション_哔哩哔哩_bilibili  --- STM32 環境 keil5 と Proteus シミュレーション アプリケーションのビデオを組み合わせた

次の質問では、LED1、LED2、LED3 がそれぞれ PA1、PA2、PA3 に接続され、キーボード K2 と K3 がそれぞれ PC1 と PC2 に接続されています。

  1. プログラミングにより、LED1、LED2、LED3が交互に点滅し、各LEDの点滅間隔は0.2S(点灯と消灯を1回ずつ計0.2S)で1S継続します。
  2. LED1、LED2、LED3の順流水灯(つまり上から下へ順番に点灯)の機能を実現するプログラムで、LED間隔時間は0.2Sです。
  3. 以下の機能を実現するプログラム。

キーボードが押されていない場合、LED1、LED2、LED3 が交互に点滅し、各 LED の点滅間隔は 0.2 秒 (1 回の点灯と 1 回の消灯で 0.2 秒) で 1 秒続きます。

・キーボード K2 を押すと、LED1、LED2、LED3 が LED1、LED2、LED3 順方向ライトの機能を実現し (つまり、上から下へ順番に点灯します)、LED 間隔時間は0.2S。

■キーボード K3 を押すと、LED1、LED2、LED3 逆流水ライトの機能が実現され (つまり、下から上に順番に点灯します)、LED 間隔時間は 0.2 秒です。

実験レポートの内容要件を提出します。

  1. 目的。

(1) 組み込み GPIO プログラミング プロセスをマスターします。
(2)、STM32 ファームウェア ライブラリの基本的な使用法に精通していること。

実験内容質問 1 ~ 3 プログラミング(シミュレーションのスクリーンショット、プログラム。植字に注意してください)

(1) LED初期化プログラムを書く

 (2) ヘッダファイルを定義し、対応する関数を使用するマクロを定義します。

 ( 3 )メイン関数 main(): 対応する初期化プログラムを最初に実行し、パイプライン アクションを実行します (1 秒)

 ( 4 )デッドループ while (1): if 関数を使用してボタンの状態を判断し、順方向と逆方向のフローを切り替える機能を実現します。

 

実験のまとめ。

この実験を通じて、組み込み GPIO プログラミング プロセスについての理解が深まり、GPIO ポートのさまざまな機能構成のアプリケーションについての理解が深まり、STM32 ファームウェア ライブラリの基本的な使用方法にも詳しくなりました。ハードウェア例と対応する制御プログラムを通じて、IO ポートへの高レベルと低レベルの出力の影響が詳細に分析されます。

おすすめ

転載: blog.csdn.net/weixin_45784275/article/details/125425199