- void (*isr_handle_array[50])(void);
- void Dummy_isr(void)
- {
- while(1);
- }
- void init_irq(void)
- {
- int i = 0;
- for (i = 0; i < sizeof(isr_handle_array) / sizeof(isr_handle_array[0]); i++)
- {
- isr_handle_array[i] = Dummy_isr;
- }
- INTMOD = 0x0; // 所有中断都设为IRQ模式
- INTMSK = BIT_ALLMSK; // 先屏蔽所有中断
- // isr_handle_array[ISR_IIC_OFT] = I2CIntHandle;
- }
- void IRQ_Handle(void)
- {
- unsigned long oft = INTOFFSET;
-
- //清中断
- if (oft == 4)
- EINTPEND = 1<<7; //EINT4-7合用IRQ4,注意EINTPEND[3:0]保留未用,向这些位写入1可能导致未知结果
- SRCPND = 1<<oft;
- INTPND = INTPND;
- /* 调用中断服务程序 */
- isr_handle_array[oft]();
- }
复制代码在使用init_irq函数是要调用Dummy_isr函数,而事实上Dummy_isr为循环函数,没有对数组指针isr_handle_array进行操作啊。。。我不知道该咋理解这点,请大神解释一下。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>