#include "EXIT.h"
#include "delay.h"
#include "key.h"
#include "LED.h"
//ÍⲿÖжϳõʼ»¯
void EXIT_Init()
{
//ÅäÖÃIO¿Ú
//ʹÄÜIO¿ÚµÄʱÖÓ
//ÅäÖÃIO¿ÚµÄģʽ ÊäÈë Êä³ö ¸´Óà ÉÏÀÏÂÀ ¿ªÂ©ÍÆÍìµÈģʽ
GPIO_InitTypeDef GPIO_Initure;
__HAL_RCC_GPIOA_CLK_ENABLE(); //ʹÄÜGPIOAµÄʱÖÓ
__HAL_RCC_GPIOC_CLK_ENABLE(); //ʹÄÜGPIOBµÄʱÖÓ
__HAL_RCC_GPIOH_CLK_ENABLE(); //ʹÄÜGPIOHµÄʱÖÓ
//ÅäÖÃPA0
GPIO_Initure.Pin = GPIO_PIN_0;
GPIO_Initure.Mode = GPIO_MODE_IT_RISING;//ÉèÖÃΪÉÏÉýÑØ´¥·¢
GPIO_Initure.Pull = GPIO_PULLDOWN; //ÏÂÀ
HAL_GPIO_Init(GPIOA, &GPIO_Initure);
//ÅäÖÃPC13
GPIO_Initure.Pin = GPIO_PIN_13;
GPIO_Initure.Mode = GPIO_MODE_EVT_FALLING;//ÉèÖÃϽµÑØ´¥·¢
GPIO_Initure.Pull = GPIO_PULLUP; //ÉÏÀ
HAL_GPIO_Init(GPIOC,&GPIO_Initure);
//ÅäÖÃPH2ºÍPH3
GPIO_Initure.Pin = GPIO_PIN_2 | GPIO_PIN_3;
HAL_GPIO_Init(GPIOH,&GPIO_Initure);
//ÉèÖÃÖжÏÏßµÄÓÅÏȼ¶
//ÖжÏÏß0
HAL_NVIC_SetPriority(EXTI0_IRQn,2,0);//ÇÀÕ¼ÓÅÏȼ¶2 ÏìÓ¦ÓÅÏȼ¶0
HAL_NVIC_EnableIRQ(EXTI0_IRQn); //ʹÄÜÖжÏ
//ÖжÏÏß2
HAL_NVIC_SetPriority(EXTI2_IRQn,2,1);
HAL_NVIC_EnableIRQ(EXTI2_IRQn);
//ÖжÏÏß3
HAL_NVIC_SetPriority(EXTI3_IRQn,2,2);
HAL_NVIC_EnableIRQ(EXTI3_IRQn);
//ÖжÏÏß13
HAL_NVIC_SetPriority(EXTI15_10_IRQn,2,3);
HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);
}
//ÖжϷþÎñº¯Êý
void EXIT0_IRQHandler()
{
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);
}
void EXIT2_IRQHandler()
{
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_2);
}
void EXIT3_IRQHandler()
{
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);
}
void EXIT13_IRQHandler( )
{
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13);
}
//»Øµ÷º¯Êý
//ËùÓеÄÖжϺ¯Êý¶¼Òªµ÷ÓÃ
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
delay_ms(100);
switch(GPIO_Pin)
{
case GPIO_PIN_0:
if(WK_UP==1)
{
//printf("\r\nWK_UP\r\n");
LED0(0);
LED1(0);
}
break;
case GPIO_PIN_2:
if(KEY1==0)
{
printf("\r\nKEY1\r\n");
}
break;
case GPIO_PIN_3:
if(KEY0==0)
{
printf("\r\nKEY0\r\n");
}
break;
case GPIO_PIN_13:
if(KEY2==0)
{
printf("\r\nKEY2\r\n");
}
break;
}
}
查看了寄存器的值没发现问题 但是不可以用 求大佬指教 |