微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于STM32EXTI中断的一个小疑问

关于STM32EXTI中断的一个小疑问

时间:10-02 整理:3721RD 点击:
以下为代码
main.c:
int main(void)
{
  HAL_Init();
  SystemClock_Config();                        /* Configure the system clock to 64 MHz */
  /* Add your application code here */
  gpio_init();
        nvic_init();
        while(1)
        {
                                        HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2,GPIO_PIN_RESET);
        }
       
}

void   HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
                if(GPIO_Pin == GPIO_PIN_2)
                {
                //        HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_2);
                                HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2,GPIO_PIN_SET);
                                HAL_Delay(10);
                }
}

中断部分:
void        EXTI2_IRQHandler(void)
{
                                HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_2);
}
EXTI初始化部分:
#include"exti0.h"
void gpio_init()
{
                                GPIO_InitTypeDef  GPIO_InitStruct;                       
                //                SystemInit();
                                __HAL_RCC_GPIOE_CLK_ENABLE();                                                                                                //ê1?ü???úAμ?íaéèê±?ó
                                __HAL_RCC_GPIOC_CLK_ENABLE();                                                                                                //ê1?ü???úAμ?íaéèê±?ó
                                __HAL_RCC_AFIO_CLK_ENABLE();
       
                //                ????GPIOC_2×÷?aLEDμ?áá?ú
                                GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;
                                GPIO_InitStruct.Pull  = GPIO_PULLUP;
                                GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
                                GPIO_InitStruct.Pin   = GPIO_PIN_2;
                                HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
                //          é?éy??2úéú?D??        PA0
                                GPIO_InitStruct.Mode  = GPIO_MODE_IT_FALLING;
                                GPIO_InitStruct.Pull  = GPIO_PULLUP;
                                GPIO_InitStruct.Pin   = GPIO_PIN_2;
                                HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
}
void nvic_init()
{
        //        HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_1);                //éè??1???à????£?3???±ó??è??
                HAL_NVIC_SetPriority(EXTI2_IRQn,0,0);                                                                        //éè??EXTI0?a×?????μ??à??ó??èoí?±ó??è
                HAL_NVIC_EnableIRQ(EXTI2_IRQn);                                                                                                //ê1?üIRQ?D??
}
*******************************************************************
但是就是在下载仿真的过程中,发现只要摁下开关,触发中断,然后控制闪灯,但是等就永远的熄灭了,这是为什么

顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶

顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top