新版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 を利用するユーザ・コードの記述について説明します。