割り込みマスクレジスタといつも同じ内容を持つメモリ(以下、マスク保存用メモリ)を用意する。
割り込みマスクレジスタへの書き込みがある場合は、必ずマスク保存用メモリにも同じ内容を書き込む。
割り込みマスクレジスタを読み込むときには、マスク保存用メモリの内容を読み込むようにする。
void sysInit()
{
INT_SetMsk((INT_MSK_HBLK_IN | INT_MSK_VBLK_OUT),
(INT_MSK_SPR | INT_MSK_DMA1));
/* "H-ブランク-IN"と"V-ブランク-OUT"をイネーブル設定 */
/* "スプライト描画終了"と"レベル0-DMA"をディセーブル設定 */
...
}
void anyPrg()
{
Uint32 status_bit;
status_bit = INT_GET_STAT(); /* ステータスの取得 */
if(INT_JudgeStat(status_bit,INT_ST_VBLK_OUT,INT_ST_VBLK_IN) == TRUE){
/* V-ブランク-OUTの割り込みが発生し、 */
/* V-ブランク-INの割り込みが未発生の時 */
...
}
}
#pragma interrupt (vblkIn) /* vblkIn関数を割り込み関数とします */
void vblkIn(void)
{
...
}
void systemInit(void)
{
INT_SetFunc(INT_SCU_VBLK_IN, vblkIn);
/* vblkIn割り込み関数をV-ブランク-IN割込みベク */
/* タテーブルに登録します。 */
INT_SetScuFunc(INT_SCU_VBLK_OUT, vblkOut);
/* vblkOut関数をV-ブランク-OUT割り込みベクタの */
/* SCU割り込み関数に登録します。 */
...
}
void vblkOut(void)
{
...
}
★PROGRAMMER'S GUIDE
★割込み管理ライブラリ