[程序如下]
//中断处理程序
void at91_IRQ0_handler(void)
{
//Disable all interrupt
AT91C_BASE_AIC-> AIC_IDCR = 0xFFFFFFFF;
//测试程序。在液晶上循环打印0~255之间的数据
status_irq = B_INC(status_irq,255);
delay10ms(20);
char_printf(86,26,0,"%d",status_irq);
//Enable ext_irq0
AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_IRQ0);
}
//外部中断初始化
void init_ext_irq(void) //'测量转速
{
//* open external IRQ interrupt
AT91F_PIO_CfgPeriph(AT91C_BASE_PIOA,1 < <20,0);
//* open external IRQ0 interrupt
AT91F_AIC_ConfigureIt ( AT91C_BASE_AIC, AT91C_ID_IRQ0, IRQ0_INTERRUPT_LEVEL,AT91C_AIC_SRCTYPE_EXT_NEGATIVE_EDGE, at91_IRQ0_handler);
AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_IRQ0);
}
// main function
int main(void)
{
clear_lcd();
init_ext_irq();
while(1)
{
;
}
}