# MI_DmaClear*

## 構文

  `#include <nitro/mi.h>`
  `void MI_DmaClear32( u32 dmaNo,
  void* dest,
  u32 size );`
  `void MI_DmaClear32_SetUp( u32 dmaNo,
  void* dest,
  u32 size );`
  `void MI_DmaClear16( u32 dmaNo,
  void* dest,
  u32 size );`
  `void MI_DmaClear16_SetUp( u32 dmaNo,
  void* dest,
  u32 size );`
  `void MI_DmaClear32Async( u32 dmaNo,
  void* dest,
  u32 size,
  MIDmaCallback callback,
  void* arg );`
  `void MI_DmaClear32Async_SetUp( u32 dmaNo,
  void* dest,
  u32 size,
  MIDmaCallback callback,
  void* arg );`
  `void MI_DmaClear16Async( u32 dmaNo,
  void* dest,
  u32 size,
  MIDmaCallback callback,
  void* arg );`
  `void MI_DmaClear16Async_SetUp( u32 dmaNo,
  void* dest,
  u32 size,
  MIDmaCallback callback,
  void* arg );`

## 引数

dmaNo | 使用DMAチャンネル
dest | クリア先アドレス
size | クリアサイズ
callback | DMA終了時のコールバック
arg | DMA終了時のコールバック引数

## 返り値

なし。

## 説明

DMA を用いてメモリをゼロクリアします。

`*_SetUp()` は実際にはDMAを行なわず、その設定のみを行います。実際のDMA開始は `MI_DmaRestart()` を呼んで下さい。

`MI_DmaClear16()` , `MI_DmaClear16Async()` は 16ビット単位でメモリを0で埋めます。クリア先アドレスは2バイトアラインメントする必要があります。
`MI_DmaClear32()` , `MI_DmaClear32Async()` は 32ビット単位でメモリを0で埋めます。クリア先アドレスは4バイトアラインメントする必要があります。

`MI_DmaClear16()`, `MI_DmaClear32()` はDMAの終了を関数内で待ちます。
`MI_DmaClear16Async()`, `MI_DmaClear32Async()` は、DMA終了時にコールバックを呼びます。コールバック callback は MIDmaCallback 型 ( void* 引数1つを取る void 型関数 ) です。callback は システムのDMA割り込みハンドラ内から呼び出されますので、割り込み禁止状態で呼び出されます。

## 内部動作

`MI_DmaFill*()` を呼んでいます。

## 参照

`MI_DmaCopy*, MI_DmaFill*, MI_DmaSend*, MI_CpuClear*, MI_DmaRestart
`

## 履歴

2007/10/31 `_SetUp()` 追加
2005/03/08 用語統一 [割込み] → [割り込み]
2004/12/22 callback の呼び出しについての記述を追加
2003/12/01 初版