初中生
最后登录1970-1-1
在线时间 小时
注册时间2020-2-29
|
1 void EXTI_Key_Config(void)
2 {
3 GPIO_InitTypeDef GPIO_InitStructure;
4 EXTI_InitTypeDef EXTI_InitStructure;
5
6 /*开启按键 GPIO 口的时钟*/
7 RCC_APB2PeriphClockCmd(KEY1_INT_GPIO_CLK,ENABLE); 问题点:此处只开启了按键1 关联的 GPIOA 和 AFIO 的时钟 没有开启 GPIOC 时钟 为什么按键2还能正常运行????
这是按键1的宏定义:#define KEY1_INT_GPIO_CLK (RCC_APB2Periph_GPIOA| RCC_APB2Periph_AFIO)
9 /* 配置 NVIC 中断*/
10 NVIC_Configuration();
11
12 /*--------------------------KEY1 配置---------------------*/
13 /* 选择按键用到的 GPIO */
14 GPIO_InitStructure.GPIO_Pin = KEY1_INT_GPIO_PIN;
15 /* 配置为浮空输入 */
16 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
17 GPIO_Init(KEY1_INT_GPIO_PORT, &GPIO_InitStructure);
18
19 /* 选择 EXTI 的信号源 */
20 GPIO_EXTILineConfig(KEY1_INT_EXTI_PORTSOURCE, \
21 KEY1_INT_EXTI_PINSOURCE);
22 EXTI_InitStructure.EXTI_Line = KEY1_INT_EXTI_LINE;
23
24 /* EXTI 为中断模式 */
25 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
26 /* 上升沿中断 */
27 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
28 /* 使能中断 */
29 EXTI_InitStructure.EXTI_LineCmd = ENABLE;
30 EXTI_Init(&EXTI_InitStructure);
31
32 /*--------------------------KEY2 配置------------------*/
33 /* 选择按键用到的 GPIO */
34 GPIO_InitStructure.GPIO_Pin = KEY2_INT_GPIO_PIN;
35 /* 配置为浮空输入 */
36 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
37 GPIO_Init(KEY2_INT_GPIO_PORT, &GPIO_InitStructure);
38
39 /* 选择 EXTI 的信号源 */
40 GPIO_EXTILineConfig(KEY2_INT_EXTI_PORTSOURCE, \
41 KEY2_INT_EXTI_PINSOURCE);
42 EXTI_InitStructure.EXTI_Line = KEY2_INT_EXTI_LINE;
43
44 /* EXTI 为中断模式 */
45 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
46 /* 下降沿中断 */
47 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
|
|