1:口线设置输入方式(根据实际情况设置为上拉或是下拉)
2:口线设置中断方式及选择中断线路
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource13);
EXTI_InitStructure.EXTI_Line=EXTI_Line13;
与口线PA.13一致
3:使能中断通道
NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;//时能中断通道
口线要在中断通道内。15~10中包含了13
13包含了PA.13,PB.13,PC.13所有13口的中断。
4:中断服务程序。
voidEXTI15_10_IRQHandler(void)
中断服务程序函数名要包含中断口线。15~10包含了13
5:(15~10这种复式中断)中断服务程序中如何区分哪一线的中断?
if(EXTI_GetITStatus(EXTI_Line13) !=RESET)
{
}
else if (EXTI_GetITStatus(EXTI_Line15) !=RESET)
{
}
通过分析查看是哪一线被置位来辨别这种复式中断
6:线路中断中如何分清口线?即区分是PA口,PB口还是PC口?
//处理来自PA.13口
if(PA.13== 0)
{
}
//处理来自PB.13口
if(PB.13== 0)
{
}
//处理来自PC.13口
if(PC.13== 0)
{
}
|