⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 at91pio.c

📁 包含makefile config.h rominit romstart userinit 等等文件
💻 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 + -