配置stm32f207GPIO外部中断的部分源码:
//
/*
//
System configuration
*/
/*
//
External interrupt setup
*/
#define EXINT_SETUP1
/*
//
EXTI0
//
Source input
// <0=> PA0 <1=> PB0 <2=> PC0<3=> PD0
// <4=> PE0 <5=> PF0 <6=> PG0<7=> PH0 <8=> PI0
//
Rising trigger enable //
Falling trigger enable //
Interrupt enable //
Event enable //
//
EXTI1
//
Source input
// <0=> PA1 <1=> PB1 <2=> PC1<3=> PD1
// <4=> PE1 <5=> PF1 <6=> PG1<7=> PH1 <8=> PI1
//
Rising trigger enable //
Falling trigger enable //
Interrupt enable //
Event enable //
//
EXTI2
//
Source input
// <0=> PA2 <1=> PB2 <2=> PC2<3=> PD2
// <4=> PE2 <5=> PF2 <6=> PG2<7=> PH2 <8=> PI2
//
Rising trigger enable //
Falling trigger enable //
Interrupt enable //
Event enable //
//
EXTI3
//
Source input
// <0=> PA3 <1=> PB3 <2=> PC3<3=> PD3
// <4=> PE3 <5=> PF3 <6=> PG3<7=> PH3 <8=> PI3
//
Rising trigger enable //
Falling trigger enable //
Interrupt enable //
Event enable //
//
EXTI4
//
Source input
// <0=> PA4 <1=> PB4 <2=> PC4<3=> PD4
// <4=> PE4 <5=> PF4 <6=> PG4<7=> PH4 <8=> PI4
//
Rising trigger enable //
Falling trigger enable //
Interrupt enable //
Event enable //
//
EXTI5
//
Source input
// <0=> PA5 <1=> PB5 <2=> PC5<3=> PD5
// <4=> PE5 <5=> PF5 <6=> PG5<7=> PH5 <8=> PI5
//
Rising trigger enable //
Falling trigger enable //
Interrupt enable //
Event enable //
//
EXTI6
//
Source input
// <0=> PA6 <1=> PB6 <2=> PC6<3=> PD6
// <4=> PE6 <5=> PF6 <6=> PG6<7=> PH6 <8=> PI6
//
Rising trigger enable //
Falling trigger enable //
Interrupt enable //
Event enable //
//
EXTI7
//
Source input
// <0=> PA7 <1=> PB7 <2=> PC7<3=> PD7
// <4=> PE7 <5=> PF7 <6=> PG7<7=> PH7 <8=> PI7
//
Rising trigger enable //
Falling trigger enable //
Interrupt enable //
Event enable //
//
EXTI8
//
Source input
// <0=> PA8 <1=> PB8 <2=> PC8<3=> PD8
// <4=> PE8 <5=> PF8 <6=> PG8<7=> PH8 <8=> PI8
//
Rising trigger enable //
Falling trigger enable //
Interrupt enable //
Event enable //
//
EXTI9
//
Source input
// <0=> PA9 <1=> PB9 <2=> PC9<3=> PD9
// <4=> PE9 <5=> PF9 <6=> PG9<7=> PH9 <8=> PI9
//
Rising trigger enable //
Falling trigger enable //
Interrupt enable //
Event enable //
//
EXTI10
//
Source input
// <0=> PA10 <1=> PB10 <2=> PC10<3=> PD10
// <4=> PE10 <5=> PF10 <6=> PG10<7=> PH10 <8=> PI10
//
Rising trigger enable //
Falling trigger enable //
Interrupt enable //
Event enable //
//
EXTI11
//
Source input
// <0=> PA11 <1=> PB11 <2=> PC11<3=> PD11
// <4=> PE11 <5=> PF11 <6=> PG11<7=> PH11 <8=> PI11
//
Rising trigger enable //
Falling trigger enable //
Interrupt enable //
Event enable //
//
EXTI12
//
Source input
// <0=> PA12 <1=> PB12 <2=> PC12<3=> PD12
// <4=> PE12 <5=> PF12 <6=> PG12<7=> PH12 <8=> PI12
//
Rising trigger enable //
Falling trigger enable //
Interrupt enable //
Event enable //
//
EXTI13
//
Source input
// <0=> PA13 <1=> PB13 <2=> PC13<3=> PD13
// <4=> PE13 <5=> PF13 <6=> PG13<7=> PH13 <8=> PI13
//
Rising trigger enable //
Falling trigger enable //
Interrupt enable //
Event enable //
//
EXTI14
//
Source input
// <0=> PA14 <1=> PB14 <2=> PC14<3=> PD14
// <4=> PE14 <5=> PF14 <6=> PG14<7=> PH14 <8=> PI15
//
Rising trigger enable //
Falling trigger enable //
Interrupt enable //
Event enable //
//
EXTI15
//
Source input
// <0=> PA15 <1=> PB15 <2=> PC15<3=> PD15
// <4=> PE15 <5=> PF15 <6=> PG15<7=> PH15 <8=> PI15
//
Rising trigger enable //
Falling trigger enable //
Interrupt enable //
Event enable //
*/
#define SYSCFG_EXTICR1_Val0x00000000 /* o0*/
#define SYSCFG_EXTICR2_Val0x00000000 /* o1*/
#define SYSCFG_EXTICR3_Val0x00000006 /* o2*/
#define SYSCFG_EXTICR4_Val0x00000006 /* o3*/
#define EXTI_RTSR_Val0x00000000 /* o4*/
#define EXTI_FTSR_Val0x00001100 /* o5*/
#define EXTI_IMR_Val0x00001100 /* o6*/
#define EXTI_EMR_Val0x00000000 /* o7*/
/*
//
*/
/*
//
Ethernet configuration
*/
/*
//
MII_RMII_SEL: Ethernet PHY interface selection
// <0=> MII interface is selected
// <1=> RMII PHY interface is selected
*/
#define SYSCFG_PMC_Val0x00800000 /* o0*/
其中是通过宏开关进行配置选择,在上下结构中,o0,o1,o2...,代表变量宏值,通过配置进行修改了宏值:
最终将修改的宏值付给真实的变量。
#if (EXINT_SETUP==1)
SYSCFG->EXTICR[0]= SYSCFG_EXTICR1_Val;
SYSCFG->EXTICR[1]= SYSCFG_EXTICR2_Val;
SYSCFG->EXTICR[2]= SYSCFG_EXTICR3_Val;
SYSCFG->EXTICR[3]= SYSCFG_EXTICR4_Val;
EXTI->RTSR = EXTI_RTSR_Val;
EXTI->FTSR = EXTI_FTSR_Val;
EXTI->IMR = EXTI_IMR_Val;
EXTI->EMR = EXTI_EMR_Val;
#endif /** EXINT_SETUP*/