STM32
直播中

石正厚

7年用户 1109经验值
私信 关注
[问答]

小白求助,求STM32外部中断函数

小白求助,求STM32外部中断函数

回帖(1)

庞琳

2021-11-18 15:26:31
其中PC1、PC13口开关接地,PA0开关口接电源,故PC1/13为下拉,下降沿触发,PA0为上拉,上升沿触发


void EXTIX_Init(void)
{
RCC->APB2ENR|=1<<2;     //使能GPIOA时钟
RCC->APB2ENR|=1<<4;     //使能GPIOB时钟
JTAG_Set(JTAG_SWD_DISABLE);//关闭JTAG和SWD   
       //具体配置需要看寄存器手册
GPIOA->CRL&=0XFFFFFFF0;//PA0设置为输入  
GPIOA->CRL|=0X00000008;   //上、下拉模式
GPIOC->CRH&=0XFF0FFFFF;//PC13设置为输入  
GPIOC->CRH|=0X00800000;   //上、下拉模式
GPIOC->CRL&=0XFFFFFF0F;//PC1设置为输入  
GPIOC->CRL|=0X00000080;  上、下拉模式
GPIOC->ODR|=1<<13;   //PC13设置为下拉
GPIOC->ODR|=1<<1;   //PC1设置为下拉
              //PA0默认为上拉


Ex_NVIC_Config(GPIO_A,0,RTIR); //PA0上升沿触发
Ex_NVIC_Config(GPIO_C,13,FTIR);//PC13下降沿触发
Ex_NVIC_Config(GPIO_C,1,FTIR);//PC1下降沿触发

  MY_NVIC_Init(2,3,EXTI15_10_IRQChannel,2);//抢占优先级2,从优先级3,组2
MY_NVIC_Init(2,2,EXTI0_IRQChannel,2);    //抢占优先级2,从优先级2,组2
  MY_NVIC_Init(2,1,EXTI1_IRQChannel,2);    //抢占优先级2,从优先级2,组2
}

void EXTI0_IRQHandler(void)
{
delay_ms(10);//消抖
if(KEY2==1)  //按键2
{
LED0=!LED0;
LED1=!LED1;  
}  
EXTI->PR=1<<0;  //清除LINE0上的中断标志位
}
void EXTI1_IRQHandler(void)
{
delay_ms(10);//消抖
if(KEY0==0)  //按键0
{
   LED1=!LED1;

}  
EXTI->PR=1<<1;  //清除LINE1  上的中断标志位
}

void EXTI15_10_IRQHandler(void)
{
delay_ms(10);    //消抖  
if(KEY1==0)      //按键1
{
LED0=!LED0;
}
EXTI->PR=1<<13;   //清除LINE13上的中断标志位
}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分