2019 3/19 外部中断的封装与BUTTON,Lable的封装
1.外部中断的封装。
1.void IRQ_Install(IRQ_E no ,irqHandle pHandle)装载函数
装载就类似于初始化,整个中断中只有装载函数在main函数中出现,其余都在后台执行。
IRQ_EVENT T1;
T1.irqNo=no;
T1.flag=0;
T1.pHandle=pHandle;
IRQ_EVENTS[no]=T1;
2.void IRQ_Unstall(IRQ_E no)卸载函数
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel=no;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;
NVIC_InitStructure.NVIC_IRQChannelCmd=DISABLE;
将no线 设定为DISABLE达到卸载的目的,卸载主要是为了如果no线还需要装载其他操作比较方便。
3.void IRQ_Dispatch(IRQ_EVENT IRQ_Events)响应函数
IRQ_Events.pHandle();//先触发事件
IRQ_Unstall(IRQ_Events.irqNo);//再将事件卸载
中断事件进行顺序
首先进去中断由对应的函数void EXTIX_IRQHandler(void)