void pdInitPeripheralEx( plogic, *pertbl, **recvbuf, *sendbuf, num ) Sint32 plogic Sint32 *pertbl void **recvbuf void *sendbuf Sint32 num
plogic | 論理モード |
pertbl | 使用ペリフェラルテーブル |
recvbuf | コントロールポート受信バッファアドレステーブル |
sendbuf | コントロールポート送信バッファアドレス |
num | ペリフェラル数 |
通常の初期化を行う関数pdInitPeripheralと違う点は、 使用するコントロールポートを限定することで、 バッファサイズの節約を行えることとポートアクセスにかかる時間を節約できることです。
論理モードを指定する引数 plogic には、PDS_PERIPHERAL構造体のデジタルボタン情報の正論理、 負論理を選択することができます。
論理モード定義 | 意味 |
PDD_PLOGIC_ACTIVE | 正論理 |
PDD_PLOGIC_NEGATIVE | 負論理 |
受信、送信バッファは必ず必要分確保し、パラメータは矛盾のないように設定してください。
/* Receive Buffer */ Uint8 gMapleRecvBuf[12][PDM_WORK_SIZE(1) + 32]; /* Send Buffer */ Uint8 gMapleSendBuf[PDM_WORK_SIZE(12) + 32]; const Sint32 gMapleDevs[] = { PDD_PORT_A0, PDD_PORT_A1, PDD_PORT_A2, PDD_PORT_B0, PDD_PORT_B1, PDD_PORT_B2, PDD_PORT_C0, PDD_PORT_C1, PDD_PORT_C2, PDD_PORT_D0, PDD_PORT_D1, PDD_PORT_D2, }; const void* gMapleRecvBufTbl[] = { gMapleRecvBuf[0],/* A0のワーク2KB */ gMapleRecvBuf[1],/* A1のワーク2KB */ gMapleRecvBuf[2],/* A2のワーク2KB */ gMapleRecvBuf[3],/* B0のワーク2KB */ gMapleRecvBuf[4],/* B1のワーク2KB */ gMapleRecvBuf[5],/* B2のワーク2KB */ gMapleRecvBuf[6],/* C0のワーク2KB */ gMapleRecvBuf[7],/* C1のワーク2KB */ gMapleRecvBuf[8],/* C2のワーク2KB */ gMapleRecvBuf[9],/* D0のワーク2KB */ gMapleRecvBuf[10],/* D1のワーク2KB */ gMapleRecvBuf[11],/* D2のワーク2KB */ }; pdInitPeripheralEx( PDD_PLOGIC_ACTIVE, gMapleDevs, gMapleRecvBufTbl, gMapleSendBuf, sizeof(gMapleDevs) / sizeof(gMapleDevs[0]) );