メインコンテンツ

Hardware Interrupt

割り込みサービス ルーチンから下流の Function-Call Subsystem をトリガーする

R2021b 以降

アドオンが必要: この機能には Embedded Coder Support Package for STMicroelectronics STM32 Processors アドオンが必要です。

  • Hardware Interrupt block

ライブラリ:
Embedded Coder Support Package for STMicroelectronics STM32 Processors / STM32F1xx Based Boards
Embedded Coder Support Package for STMicroelectronics STM32 Processors / STM32F2xx Based Boards
Embedded Coder Support Package for STMicroelectronics STM32 Processors / STM32F3xx Based Boards
Embedded Coder Support Package for STMicroelectronics STM32 Processors / STM32F4xx Based Boards
Embedded Coder Support Package for STMicroelectronics STM32 Processors / STM32F7xx Based Boards
Embedded Coder Support Package for STMicroelectronics STM32 Processors / STM32G0xx Based Boards
Embedded Coder Support Package for STMicroelectronics STM32 Processors / STM32G4xx Based Boards
Embedded Coder Support Package for STMicroelectronics STM32 Processors / STM32H7xx Based Boards
Embedded Coder Support Package for STMicroelectronics STM32 Processors / STM32L4xx Based Boards
Embedded Coder Support Package for STMicroelectronics STM32 Processors / STM32L5xx Based Boards
Embedded Coder Support Package for STMicroelectronics STM32 Processors / STM32U5xx Based Boards
Embedded Coder Support Package for STMicroelectronics STM32 Processors / STM32WBxx Based Boards

説明

Hardware Interrupt ブロックを使用して、モデルの生成コード内に割り込みサービス ルーチン (ISR) を自動的に作成し、選択したイベントに対してアクションを実行します。ISR は、ブロックのイベント端子に関連付けられた下流の Function-Call Subsystem を実行します。

イベント出力端子に関連付けられた Function-Call Subsystem は、ISR の優先順位と同じ優先順位で実行されます。

このブロックを使用すると、次のことが可能になります。

  • STM32 プロセッサ ベースのボードで ISR を作成する。

  • ISR の優先順位を設定する。

  • 割り込みプリエンプションを有効または無効にする。

このブロックは、指定された ISR および選択されたイベントに対してのみコードを生成します。構成を変更するには、割り込みおよび特定のトリガー オプションを有効にして、選択した周辺装置の設定を使用します。

たとえば、Hardware Interrupt ブロックで ADC 周辺装置用の ISR を作成するには、次のようにします。

  • モデルには、[Analog to digital Converter] (ADC) ブロックが必要です。

  • ADC から ISR をトリガーするには、[コンフィギュレーション パラメーター]、[ハードウェア実行]、[Target Hardware Resources]、[ADC1] で、[Enable Regular EoCS Interrupt] または [Enable Injected EoCS Interrupt] チェック ボックスをオンにします。モデルに Analog to Digital Converter ブロックがない場合、このチェック ボックスをオンにしても効果はありません。

  • Hardware Interrupt ブロックの [割り込みグループ] パラメーターで Analog to digital converter (ADC) を選択し、[割り込み名] パラメーターで ADCIRQ_Handler を選択します。

  • [サービス対象イベント] パラメーターで、イベント名 ADC1 Reg EoCS または ADC1 Inj EoCS を選択します。

[コンフィギュレーション パラメーター][ハードウェア実行][Target Hardware Resources][ADC] で、[DMA transfer complete interrupt is enabled] および [Watchdog interrupt is enabled] のチェック ボックスが既定でオンになっているため、必要な Hardware Interrupt ブロック設定を選択すると、DMA および Watchdog 割り込み用の ISR が自動的にトリガーされます。

メモ

STM32H7xx ベースのプロセッサの場合、外部割り込みを有効にするために STM32CubeMX 6.2.0 バージョンによって生成されたコードでは、選択された GPIO ピンが入力モードで構成されません。選択された GPIO ピンで外部割り込みをトリガーするには、ピン モードを [入力] として構成するカスタム コードを追加します。

モデルで System Initialize ブロックを使用してカスタム コードを追加できます。

たとえば、ピン [PD3][EXTI3] 割り込みを有効にするには、次のようにします。

  • STM32CubeMX プロジェクトで [PD3] ピンを [GPIO_EXTI3] として構成します。

  • モデルに System Initialize ブロックを追加します。

  • System Initialize ブロックの [System Initialize Function Execution Code] セクションで次のカスタム コードを指定します。これにより、ピン PD3 が入力モードで構成されます。

    LL_GPIO_SetPinMode(GPIOD, LL_GPIO_PIN_3, LL_GPIO_MODE_INPUT);

ISR は model_interrupts.c ファイルに生成されます。

カスタム イベントの使用に適さない場合の詳細については、制限を参照してください。

端子

入力

すべて展開する

シミュレーション専用のメッセージ入力端子。Function-Call Generatorブロックに接続した場合、ブロックは、[name Event] 端子に対してシミュレーション中に発行される出力を含むパススルーとして機能します。

依存関係

この端子を有効にするには、[Enable simulation port] パラメーターを選択します。

出力

すべて展開する

このブロックの出力は関数呼び出しです。関数呼び出し出力の数は、ISR で処理するために選択されたイベントと同じになります。

パラメーター

すべて展開する

割り込みグループでは、[STM32 Processor Based Boards] で使用可能な同じタイプの周辺装置用のすべての ISR がリストされます。割り込みグループを選択すると、[割り込み名] パラメーターの値のリストが変更されます。

割り込み名は、Hardware Interrupt ブロックに対して生成する ISR を指定します。[割り込み] の名前は、プロセッサの割り込みベクトル テーブル内の特定のエントリに対応します。使用可能な ISR は割り込みグループによって異なります。

この読み取り専用パラメーターは、ターゲット ハードウェアの割り込みベクトル テーブル内の選択された ISR の位置を示します。

選択した [割り込み名] のイベントを処理するには、[サービス対象イベント] グループからイベントまたはカスタム イベントとそれぞれのイベント実行順序を選択します。選択した他のイベントと一緒に実行するカスタム イベントを選択できます。詳細については、制限を参照してください。

このパラメーターで指定した値により、下流の Function-Call Subsystem の優先順位が設定されます。選択した (ISR) の Simulink® タスクの優先順位は、モデルの基本レートの優先順位を基準とします。

メモ

既定では、モデルの基本サンプル レートの優先順位は 40 に設定されており、優先順位の値が低いほど優先順位の高いタスクであることを示します。これを実現するには、[コンフィギュレーション パラメーター][ソルバー] ペインで [優先順位の値が高いほどタスクの優先順位が高いことを示す] オプションを有効にする必要があります。

選択した割り込みサービス ルーチンの実行中に他のすべての割り込みをブロックするには、[割り込みサービス ルーチンを Atomic サブシステムとして実行] を有効にします。

各イベントの実行後に割り込みサービス ルーチン内のイベント ステータスをクリアするには、このパラメーターを選択します。

このパラメーターを選択すると、SoC Blockset™ 互換のシミュレーション入力端子が追加されます。

制限

ブロックまたはコンフィギュレーション パラメーターから割り込みまたはイベント生成を選択した場合は、カスタム イベントを使用しないでください。生成されたコードをハードウェア ボード上で実行すると、Hardware Interrupt サービス ルーチン内で無期限に処理が停止した状態が生じることがあります。サポートされているイベントをカスタム イベントとして使用する場合は、ブロックからのサポートされているイベント生成が有効になっていないことを確認してください。

また、カスタム イベントの有効化が Initialize Subsystem の一部にならないようにしてください。実行時に実行される必要があります。

拡張機能

すべて展開する

C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2021b で導入