?? at91pio.c
字號:
/*
* forward declaration first
*/
void AT91_PIO_Init();
void AT91_PIO_CfgPeriph( AT91_PIO_S* pPio, unsigned int periphAEnable, unsigned int periphBEnable);
void AT91_PIO_InterruptDisable( AT91_PIO_S* pPio, unsigned int flag);
void AT91_PIO_IntDisableAll( );
void AT91_PIO_MultDrvDisable( AT91_PIO_S* pPio, unsigned int flag);
void AT91_PIO_MultDrvDisableAll( );
void AT91_PIO_CfgIOLine( AT91_PIO_S* pPio, unsigned int outputMask, unsigned int inputMask);
void AT91_PIO_CfgPeriph(
AT91_PIO_S* pPio, /*arg pointer to a PIO controller*/
unsigned int periphAEnable, /*arg PERIPH A to enable*/
unsigned int periphBEnable) /*arg PERIPH B to enable*/
{
pPio->PIO_ASR = periphAEnable;
pPio->PIO_BSR = periphBEnable;
pPio->PIO_PDR = (periphAEnable | periphBEnable); /* Set in Periph mode */
}
void AT91_PIO_CfgIOLine(AT91_PIO_S* pPio, /*arg pointer to a PIO controller*/
unsigned int outputMask,
unsigned int inputMask )
{
pPio->PIO_OER = outputMask;
pPio->PIO_OWER = outputMask;
pPio->PIO_OWDR = (~outputMask);
pPio->PIO_ODR = inputMask;
pPio->PIO_PER = (outputMask|inputMask);
}
void AT91_PIO_Init()
{
int dummy;
AT91_PIO_MultDrvDisableAll();
AT91_PIO_IntDisableAll();
/* clear all status change in isr */
dummy = ((AT91_PIO_S*)(PIOA_BASE_ADDR))->PIO_ISR;
dummy = ((AT91_PIO_S*)(PIOB_BASE_ADDR))->PIO_ISR;
dummy = ((AT91_PIO_S*)(PIOC_BASE_ADDR))->PIO_ISR;
dummy = ((AT91_PIO_S*)(PIOD_BASE_ADDR))->PIO_ISR;
AT91_PIO_CfgPeriph( (AT91_PIO_S*)(PIOA_BASE_ADDR), AT91_PIOA_ASR_VALUE, AT91_PIOA_BSR_VALUE );
AT91_PIO_CfgPeriph( (AT91_PIO_S*)(PIOB_BASE_ADDR), AT91_PIOB_ASR_VALUE, AT91_PIOB_BSR_VALUE );
AT91_PIO_CfgPeriph( (AT91_PIO_S*)(PIOC_BASE_ADDR), AT91_PIOC_ASR_VALUE, AT91_PIOC_BSR_VALUE );
AT91_PIO_CfgPeriph( (AT91_PIO_S*)(PIOD_BASE_ADDR), AT91_PIOD_ASR_VALUE, AT91_PIOD_BSR_VALUE );
AT91_PIO_CfgIOLine( (AT91_PIO_S*)(PIOA_BASE_ADDR), AT91_PIOA_OER_VALUE, AT91_PIOA_ODR_VALUE );
AT91_PIO_CfgIOLine( (AT91_PIO_S*)(PIOB_BASE_ADDR), AT91_PIOB_OER_VALUE, AT91_PIOB_ODR_VALUE );
AT91_PIO_CfgIOLine( (AT91_PIO_S*)(PIOC_BASE_ADDR), AT91_PIOC_OER_VALUE, AT91_PIOC_ODR_VALUE );
AT91_PIO_CfgIOLine( (AT91_PIO_S*)(PIOD_BASE_ADDR), AT91_PIOD_OER_VALUE, AT91_PIOD_ODR_VALUE );
}
void AT91_PIO_InterruptDisable( AT91_PIO_S* pPio, /*arg pointer to a PIO controller*/
unsigned int flag) /*arg pio interrupt to be disabled*/
{
pPio->PIO_IDR = flag;
}
void AT91_PIO_IntDisableAll( )
{
AT91_PIO_InterruptDisable( (AT91_PIO_S*)(PIOA_BASE_ADDR), 0xFFFFFFFF );
AT91_PIO_InterruptDisable( (AT91_PIO_S*)(PIOB_BASE_ADDR), 0xFFFFFFFF );
AT91_PIO_InterruptDisable( (AT91_PIO_S*)(PIOC_BASE_ADDR), 0xFFFFFFFF );
AT91_PIO_InterruptDisable( (AT91_PIO_S*)(PIOD_BASE_ADDR), 0xFFFFFFFF );
}
void AT91_PIO_MultDrvDisable( AT91_PIO_S* pPio, /*arg pointer to a PIO controller*/
unsigned int flag) /*arg pio interrupt to be disabled*/
{
pPio->PIO_MDDR = flag;
}
void AT91_PIO_MultDrvDisableAll( )
{
AT91_PIO_MultDrvDisable( (AT91_PIO_S*)(PIOA_BASE_ADDR), 0xFFFFFFFF );
AT91_PIO_MultDrvDisable( (AT91_PIO_S*)(PIOB_BASE_ADDR), 0xFFFFFFFF );
AT91_PIO_MultDrvDisable( (AT91_PIO_S*)(PIOC_BASE_ADDR), 0xFFFFFFFF );
AT91_PIO_MultDrvDisable( (AT91_PIO_S*)(PIOD_BASE_ADDR), 0xFFFFFFFF );
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -