/* System Clocks Configuration */
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE );
二、打開/設定 外部中斷的 中斷套嵌。
/* NVIC configuration */
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQChannel;
NVIC_Init(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQChannel;
NVIC_Init(&NVIC_InitStructure);
注意:不同的外部中斷需各別使用 NVIC_Init() 函式來設定,不可以用「|」OR 運算來同時設定。
三、設置 GPIO 腳位、屬性。
/* Configure the GPIO ports */
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOE, &GPIO_InitStructure);
注意:不同的 IO PORT 需各別使用 GPIO_Init() 函式來設定,但同一個 PORT 可以用「|」OR 運算來同時設定。
四、連結 外部中斷線 到 GPIO線(PIN0~PIN15)
/* Connect EXTI Line to GPIO Pin */
GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource2);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource3);
注意:不同 GPIO Pin 需各別使用 GPIO_EXTILineConfig() 函式來設定,不可以用「|」OR 運算來同時設定。
五、設置外部中斷反應方式並打開外部中斷
/* Configure EXTI Line to generate an interrupt on falling edge */
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_InitStructure.EXTI_Line = EXTI_Line2 | EXTI_Line3;
EXTI_Init(&EXTI_InitStructure);
注意:所有的外部中斷可以使用一次/多次 EXTI_Init() 函式來設定,並可以用「|」OR 運算來同時設定。
六、最後在 stm32f10x_it.c 處理中斷函式…
void EXTIx_IRQHandler(void)
{
}
沒有留言:
張貼留言