📄 9200.h
字号:
#include <asm/arch/hardware.h>
extern AT91PS_SYS AT91_SYS1;
void enable_irq(unsigned int irq_id)
{
AT91_SYS1 -> AIC_IECR= (0x01 << irq_id);
}
//void AT91F_AIC_SMR(
void AT91F_AIC_DisableIt (unsigned int irq_id ) // \arg interrupt number to initialize
{
unsigned int mask = 0x1 << irq_id;
//* Disable the interrupt on the interrupt controller
AT91_SYS1->AIC_IDCR = mask ;
//* Clear the interrupt on the Interrupt Controller ( if one is pending )
AT91_SYS1->AIC_ICCR = mask ;
}
//*----------------------------------------------------------------------------
//* \fn AT91F_PIO_SetOutput
//* \brief Set to 1 output PIO
//*----------------------------------------------------------------------------
void AT91F_PIOB_SetOutput(unsigned int flag) // \arg output to be set
{
AT91_SYS1->PIOB_SODR = flag;
}
//*----------------------------------------------------------------------------
//* \fn AT91F_PIO_ClearOutput
//* \brief Set to 0 output PIO
//*----------------------------------------------------------------------------
void AT91F_PIOB_ClearOutput(unsigned int flag) // \arg output to be cleared
{
AT91_SYS1->PIOB_CODR = flag;
}
//*----------------------------------------------------------------------------
//* \fn AT91F_PIOB_Enable
//* \brief Enable PIO
//*----------------------------------------------------------------------------
void AT91F_PIOB_Enable(unsigned int flag) // \arg pio to be enabled
{
AT91_SYS1->PIOB_PER = flag;
}
//*----------------------------------------------------------------------------
//* \fn AT91F_PIO_Disable
//* \brief Disable PIO
//*----------------------------------------------------------------------------
void AT91F_PIOB_Disable(unsigned int flag) // \arg pio to be disabled
{
AT91_SYS1->PIOB_PDR = flag;
}
//*----------------------------------------------------------------------------
//* \fn AT91F_PIOB_GetInput
//* \brief Return PIO input value
//*----------------------------------------------------------------------------
unsigned int AT91F_PIOB_GETISR( // \return PIO input
) // \arg pointer to a PIO controller
{
return AT91_SYS1->PIOB_ISR;
}
//*----------------------------------------------------------------------------
//* \fn AT91F_AIC_EnableIt
//* \brief Enable corresponding IT number
//*----------------------------------------------------------------------------
void AT91F_AIC_EnableIt (unsigned int irq_id ) // \arg interrupt number to initialize
{
//* Enable the interrupt on the interrupt controller
AT91_SYS1->AIC_IECR = 0x1 << irq_id ;
}
//*----------------------------------------------------------------------------
//* \fn AT91F_PMC_EnablePeriphClock
//* \brief Enable peripheral clock
//*----------------------------------------------------------------------------
void AT91F_PMC_EnablePeriphClock (unsigned int periphIds) // \arg IDs of peripherals to enable
{
AT91_SYS1->PMC_PCER = periphIds;
}
/***************************************************************/
//*----------------------------------------------------------------------------
//* \fn AT91F_PIOB_CfgPMC
//* \brief Enable Peripheral clock in PMC for PIOB
//*----------------------------------------------------------------------------
void AT91F_PIOB_CfgPMC (void)
{
AT91F_PMC_EnablePeriphClock(
((unsigned int) 1 << AT91C_ID_PIOB));
}
//*----------------------------------------------------------------------------
//* \fn AT91F_PIOB_CfgOutput
//* \brief Enable PIO in output mode
//*----------------------------------------------------------------------------
void AT91F_PIOB_CfgOutput(unsigned int pioEnable) // \arg PIO to be enabled
{
AT91_SYS1->PIOB_PER = pioEnable; // Set in PIO mode
AT91_SYS1->PIOB_OER = pioEnable; // Configure in Output
}
/************************************************************/
//*----------------------------------------------------------------------------
//* \fn AT91F_PIOB_CfgInput
//* \brief Enable PIO in input mode
//*----------------------------------------------------------------------------
void AT91F_PIOB_CfgInput(unsigned int inputEnable) // \arg PIO to be enabled
{
// Disable output
AT91_SYS1->PIOB_PER = inputEnable;
AT91_SYS1->PIOB_ODR = inputEnable;
}
//*----------------------------------------------------------------------------
//* \fn AT91F_PIOB_InterruptEnable
//* \brief Enable PIO Interrupt
//*----------------------------------------------------------------------------
void AT91F_PIOB_InterruptEnable(unsigned int flag) // \arg pio interrupt to be enabled
{
AT91_SYS1->PIOB_IER = flag;
}
//*----------------------------------------------------------------------------
//* \fn AT91F_PIOB_InterruptDisable
//* \brief Disable PIO Interrupt
//*----------------------------------------------------------------------------
void AT91F_PIOB_InterruptDisable(
unsigned int flag) // \arg pio interrupt to be disabled
{
AT91_SYS1->PIOB_IDR = flag;
}
//*----------------------------------------------------------------------------
//* \fn AT91F_PIO_GetInterruptMaskStatus
//* \brief Return PIO Interrupt Mask Status
//*----------------------------------------------------------------------------
unsigned int AT91F_PIOB_GetInterruptMaskStatus( // \return PIO Interrupt Mask Status
) // \arg pointer to a PIO controller
{
return AT91_SYS1->PIOB_IMR;
}
//*----------------------------------------------------------------------------
//* \fn AT91F_PIOB_GetInterruptStatus
//* \brief Return PIO Interrupt Status
//*----------------------------------------------------------------------------
unsigned int AT91F_PIOB_GetInterruptStatus( // \return PIO Interrupt Status
) // \arg pointer to a PIO controller
{
return AT91_SYS1->PIOB_ISR;
}
//*----------------------------------------------------------------------------
//* \fn AT91F_AIC_ConfigureIt
//* \brief Interrupt Handler Initialization
//*----------------------------------------------------------------------------
unsigned int AT91F_AIC_ConfigureIt (
unsigned int irq_id, // \arg interrupt number to initialize
unsigned int priority, // \arg priority to give to the interrupt
unsigned int src_type) // \arg activation and sense of activation
// \arg address of the interrupt handler
{
unsigned int mask = 1<<irq_id;
AT91_SYS1->AIC_SMR[irq_id] = src_type | priority ;
//* Clear the interrupt on the interrupt controller
AT91_SYS1->AIC_ICCR = mask ;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -