1. 実験の目的
- 組み込み GPIO プログラミング プロセスをマスターします。
- 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 に接続されています。
- プログラミングにより、LED1、LED2、LED3が交互に点滅し、各LEDの点滅間隔は0.2S(点灯と消灯を1回ずつ計0.2S)で1S継続します。
- LED1、LED2、LED3の順流水灯(つまり上から下へ順番に点灯)の機能を実現するプログラムで、LED間隔時間は0.2Sです。
- 以下の機能を実現するプログラム。
キーボードが押されていない場合、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) 組み込み GPIO プログラミング プロセスをマスターします。
(2)、STM32 ファームウェア ライブラリの基本的な使用法に精通していること。
2.実験内容。質問 1 ~ 3 プログラミング。(シミュレーションのスクリーンショット、プログラム。植字に注意してください)
(1) LED初期化プログラムを書く
(2) ヘッダファイルを定義し、対応する関数を使用するマクロを定義します。
( 3 )メイン関数 main(): 対応する初期化プログラムを最初に実行し、パイプライン アクションを実行します (1 秒)
( 4 )デッドループ while (1): if 関数を使用してボタンの状態を判断し、順方向と逆方向のフローを切り替える機能を実現します。
3.実験のまとめ。
この実験を通じて、組み込み GPIO プログラミング プロセスについての理解が深まり、GPIO ポートのさまざまな機能構成のアプリケーションについての理解が深まり、STM32 ファームウェア ライブラリの基本的な使用方法にも詳しくなりました。ハードウェア例と対応する制御プログラムを通じて、IO ポートへの高レベルと低レベルの出力の影響が詳細に分析されます。
検索
コピー