新版FM音源プログラム (6)

前回の記事の手順 3. に示した、開発環境にコンパイル/インクルード対象として登録すべき BSP_AUDIO_OUT 関係のファイルを下に示します。

Drivers/BSP/STM32F4-Discovery/stm32f4_discovery_audio.h
Drivers/BSP/STM32F4-Discovery/stm32f4_discovery.h
Drivers/BSP/Components/Common/audio.h
Drivers/BSP/Components/cs43l22/cs43l22.h
Drivers/BSP/STM32F4-Discovery/stm32f4_discovery_audio.c
Drivers/BSP/STM32F4-Discovery/stm32f4_discovery.c
Drivers/BSP/Components/cs43l22/cs43l22.c

4. の DMA 割り込みハンドラは、「Src」フォルダ内に生成される C ソース・ファイル "stm32f4xx_it.c" の中のユーザ・コード記述部に下のように書き込みます。

 . . . . . <中略> . . . . .

/* USER CODE BEGIN 0 */
#include "stm32f4_discovery_audio.h"
extern I2S_HandleTypeDef hAudioOutI2s;
/* USER CODE END 0 */

 . . . . . <中略> . . . . .

/* USER CODE BEGIN 1 */
void I2S3_IRQHandler(void)
{
  HAL_DMA_IRQHandler(hAudioOutI2s.hdmatx);
}
/* USER CODE END 1 */

 . . . . . <中略> . . . . .

「ユーザ・コード記述部」に書いておけば、コード生成をやり直してファイルが更新された場合にも、記述内容が消されることはありません。
シンボル「I2S3_IRQHandler」の中には「DMA」の文字は含まれていませんが、ヘッダ・ファイル "stm32f4_discovery_audio.h" の中で

#define I2S3_IRQHandler DMA1_Stream7_IRQHandler

と定義されており、実際には DMAC1、ストリーム 7 の割り込みハンドラを宣言することになります。
BSP_AUDIO_OUT では I2S3 モジュール自体が生成する割り込みは全く使っていません。
データ転送は DMA によって行なわれますから、上記の DMA 割り込みハンドラなしでは機能しません。
次回は、手順 5. 6. 7. の "main.c" などから BSP を利用するユーザ・コードの記述について説明します。