小学生
最后登录1970-1-1
在线时间 小时
注册时间2025-1-4
|
我想我找到了问题的答案。
我出现的问题是,在下载程序时,会进入一次Key2(PC13)EXTI13中断,我的开发板是霸道V2,展示出来的效果是在下载完成后,绿灯是亮着的状态(意味着EXTI13中断了一次,事实也是如此)。我用示波器看PC13引脚电平变化,全程无跳变,因此排除PC13引起的触发。我发现PA13在在下载程序时是有电平变化的(JTAG),这时我就在想是不是因为PA13引脚导致的中断触发(事实确实是PA13引起的),EXTI13是由AFIO的AFIO_EXTICR4寄存器控制,而这个寄存器的默认值是设置为PA13。课程代码先开启了AFIO时钟,导致PA13最开始是有效的,恰好此时PA13在下载程序时,电平有变化,因此出现错误。解决办法是:等待EXTI中断都配置完成,最后打开AFIO时钟!!!- void EXTI_Key_Config(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- EXTI_InitTypeDef EXTI_InitStructure;
- /*开启按键GPIO口的时钟*/
- RCC_APB2PeriphClockCmd(KEY1_INT_GPIO_CLK,ENABLE);
- RCC_APB2PeriphClockCmd(KEY2_INT_GPIO_CLK,ENABLE);
-
- /* 配置 NVIC 中断*/
- NVIC_Configuration();
-
- /*--------------------------KEY1配置-----------------------------*/
- /* 选择按键用到的GPIO */
- GPIO_InitStructure.GPIO_Pin = KEY1_INT_GPIO_PIN;
- /* 配置为浮空输入 */
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
- GPIO_Init(KEY1_INT_GPIO_PORT, &GPIO_InitStructure);
- /* 选择EXTI的信号源 */
- GPIO_EXTILineConfig(KEY1_INT_EXTI_PORTSOURCE, KEY1_INT_EXTI_PINSOURCE);
- EXTI_InitStructure.EXTI_Line = KEY1_INT_EXTI_LINE;
- /* EXTI为中断模式 */
- EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
- /* 上升沿中断 */
- EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
- /* 使能中断 */
- EXTI_InitStructure.EXTI_LineCmd = ENABLE;
- EXTI_Init(&EXTI_InitStructure);
-
- /*--------------------------KEY2配置-----------------------------*/
- /* 选择按键用到的GPIO */
- GPIO_InitStructure.GPIO_Pin = KEY2_INT_GPIO_PIN;
- /* 配置为浮空输入 */
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
- GPIO_Init(KEY2_INT_GPIO_PORT, &GPIO_InitStructure);
- /* 选择EXTI的信号源 */
- GPIO_EXTILineConfig(KEY2_INT_EXTI_PORTSOURCE, KEY2_INT_EXTI_PINSOURCE);
- EXTI_InitStructure.EXTI_Line = KEY2_INT_EXTI_LINE;
- /* EXTI为中断模式 */
- EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
- /* 下降沿中断 */
- EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
- /* 使能中断 */
- EXTI_InitStructure.EXTI_LineCmd = ENABLE;
- EXTI_Init(&EXTI_InitStructure);
-
-
-
- /*等待EXTI中断都配置完成,最后打开AFIO时钟*/
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
- }
复制代码 |
|