【学習記録】STM32外部割り込み実験

外部割り込みの概要

STM32 の各 IO は外部割り込み入力として使用できます。
STM32 割り込みコントローラは、19 の外部割り込み/イベント要求をサポートします。
        0~15行目:外部IOポートの入力割り込みに対応します。
        16行目: PVD出力に接続します。
        17 行目: RTC アラーム イベントに接続します。
        18 行目: USB ウェイク イベントに接続します。
各外部割り込みラインは、トリガー モード (立ち上がりエッジ、立ち下がりエッジ、またはデュアル エッジ トリガー)、トリガー/マスク、および専用ステータス ビットを使用して個別に設定できます。

GPIOx.0 は EXTI0 にマッピングされます

GPIOx.1 は EXTI1 にマッピングされます

GPIOx.15 は EXTI15 にマッピングされます

各割り込みラインに対して、対応するトリガー モード (立ち上がりエッジ トリガー、立ち下がりエッジ トリガー、エッジ トリガー) を設定し、有効にすることができます。
表からわかるように、外部割り込みライン 5 ~ 9 には割り込みベクタが割り当てられ、サービス機能を共有します。外部割り込みライン 10 ~ 15 には割り込みベクタが割り当てられ、割り込みサービス機能を共有します。
割り込みサービス関数リスト:

外部ミッドエンド ユーザー向けの共通ライブラリ関数:

void GPIO_EXTILineConfig (uint8_t GPIO_PortSource , uint8_t GPIO_PinSource );

   // IOポートと割り込みライン間のマッピング関係を設定します

   exp:  GPIO_EXTILineConfig (GPIO_PortSourceGPIOE,GPIO_PinSource2);

void EXTI_Init ( EXTI_InitTypeDef * EXTI_InitStruct );

 //割り込みライン: トリガーメソッドなどを初期化します。

ITStatus EXTI_GetITStatus (uint32_t EXTI_Line );

//割り込みラインの割り込みステータスとそれが発生したかどうかを判断します

void EXTI_ClearITPendingBit (uint32_t EXTI_Line );

//割り込みラインの割り込みフラグビットをクリアします。

EXTI_Init関数
void EXTI_Init ( EXTI_InitTypeDef * EXTI_InitStruct );

typedef 構造体

{

  uint32_t EXTI_Line; //設定する割り込みラインを指定          

  EXTIMode_TypeDef EXTI_Mode; //モード: イベント OR 割り込み

  EXTITrigger_TypeDef EXTI_Trigger;// トリガーモード: 立ち上がりエッジ/立ち下がりエッジ/ダブルエッジトリガー

  FunctionalState EXTI_LineCmd; //有効または無効

EXIT_InitTypeDef;

 EXTI_InitStructure.EXTI_Line=EXTI_Line2; 

 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; 

 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;

 EXTI_InitStructure.EXTI_LineCmd = 有効;

 EXTI_Init(&EXTI_InitStructure);

外部割り込みの一般的な構成手順は次のとおりです。

①IOポートを入力として 初期化します
GPIO_Init ();
②IOポート 多重 クロックを有効にします
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
③IOポートと割り込みラインの マッピング 関係を 設定します
void GPIO_EXTILineConfig ();
④オンライン割り込みの初期化 、トリガ条件の設定などを行います。
EXIT_Init ();
割り込みグループ化( NVIC )を設定し、割り込みを有効にします。
NVIC_Init ();
⑥ライトインタラプトサービス機能。
EXTIx_IRQHandler ();
⑦割り込みフラグビットを クリア
EXTI_ClearITPendingBit ();
ボタンハードウェア接続 (エリートバージョン) 
実際のコード:
補足:

プログラムをボードにダウンロードするパフォーマンスは次のとおりです。KEY0 ボタンを押すと、以下に示すようにマーキーが 1 回切り替わります。

 

おすすめ

転載: blog.csdn.net/weixin_47723114/article/details/127596024