- 论坛徽章:
- 0
|
我用的ARM是atmel公司的9200,ARM920T内核,开发环境是ADS1.2
以前写好了程序中断接收正常,前段时间再试发现收不到中断或者提示收到伪中断,搞了两天没结果后我把伪中断向量也指向了需要的中断服务程序,这样倒是可以进入中断服务程序了,不过新的问题又出现了,连续接收几个中断后(有时候一两个,有时候可以接收几十个)程序就死掉了。这是什么原因导致的啊?有没有什么解决的好办法?多谢各位大侠指点,感激不尽!
(同样的程序,在开发板上跑的时候记不需要将伪中断向量指向中断服务程序就可以正常接收中断。)
中断初始化代码- AT91C_BASE_PIOB->PIO_PDR |= AT91C_PIO_PB29;
- AT91C_BASE_PIOB->PIO_ASR |= AT91C_PB29_IRQ0;
- AT91F_PMC_EnablePeriphClock((AT91PS_PMC) AT91C_BASE_PMC, AT91C_ID_IRQ0);
- AT91F_AIC_ConfigureIt(
- AT91C_BASE_AIC,
- AT91C_ID_IRQ0,
- AT91C_AIC_PRIOR_HIGHEST,
- AT91C_AIC_SRCTYPE_EXT_POSITIVE_EDGE,
- AT91F_ASM_IRQ0_Handler
- );
- AT91F_AIC_EnableIt(AT91C_BASE_AIC, AT91C_ID_IRQ0);
复制代码
中断服务函数代码
- command = *(VXI_REG_E);
- dataLow = command & 0x00FF;
- dataHigh = (command >> 8) & 0x00FF;
- AT91F_AIC_ClearIt(AT91C_BASE_AIC,AT91C_ID_IRQ0);
复制代码
[ 本帖最后由 yjz98 于 2009-7-14 22:19 编辑 ] |
|