美文网首页
stm32中断

stm32中断

作者: 清亮2015 | 来源:发表于2018-08-31 20:37 被阅读0次

初始化中断


void NVIC_cfg(void)
{
  EXTI_InitTypeDef   EXTI_InitStructure;
  GPIO_InitTypeDef   GPIO_InitStructure;
  NVIC_InitTypeDef   NVIC_InitStructure;
    GPIO_InitTypeDef   GPIO_InitStructure1;

    
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOE, ENABLE);
    //RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);
  /* Enable SYSCFG clock */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
  
  /* Configure PA0 pin as input floating */
  
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
    
  GPIO_InitStructure1.GPIO_Mode = GPIO_Mode_IN;
  GPIO_InitStructure1.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_InitStructure1.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;
  GPIO_Init(GPIOE, &GPIO_InitStructure1);
    
    
    
    SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0);
    SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSource2);
    SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSource3);
    SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSource4);
    
  

  EXTI_InitStructure.EXTI_Line = EXTI_Line0;//设置外部中断线
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;// 设置为外部中断
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;  // 设置触发方式
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;// 使能
  EXTI_Init(&EXTI_InitStructure);  
    
  EXTI_InitStructure.EXTI_Line = EXTI_Line2;
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;  
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);  
    
  EXTI_InitStructure.EXTI_Line = EXTI_Line3;
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;  
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);  
    
  EXTI_InitStructure.EXTI_Line = EXTI_Line4;
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;  
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);  
    

  NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);

  NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn; //设置中断通道
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;//设置抢占优先级
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;// 设置响应优先级
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//  使能
  NVIC_Init(&NVIC_InitStructure);
    
  NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
    
  NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
}

这里设置的是四个按键的中断,
1、先定义结构体、在初始化时钟。
2、在设置串口为输入模式。
3、配置EXIT中断线。
4、配置中断控制器NVIC。
5、写中断服务子程序 。

中断服务程序

实现功能是点灯

void EXTI0_IRQHandler(void)
{
    if(EXTI_GetITStatus(EXTI_Line0) == SET) // 如果产生了中断
    {
        PFout(9) = ~PFout(9);
    }
    
    EXTI_ClearITPendingBit(EXTI_Line0);
}

相关文章

  • STM32外部中断

    STM32 的每个 IO 都可以作为外部中断的中断输入口,这点也是 STM32 的强大之处。GPIO 的管脚 GP...

  • 按键与中断处理

    NVIC中断工作原理 cortex-m3支持256个中断,其中包含了16个内核中断,240个外部中断。stm32中...

  • STM32一文通(5) 中断概览

    STM32 中断非常强大,每个外设都可以产生中断 中断优先级数值越小级别越高 中断的类型分两类: 1. 系统异常(...

  • 4.STM32之中断式按键

    1.STM32中断概述 中断优先级 在使用中断式按键之前,我们先去了解一下STM32的中断。关于这方面可以参考《S...

  • STM32之外部中断

    关于stm32 的外部引脚中断的简单应用;用来添加一个外部引脚中断;更改IRQ_Handler函数可以实现不同的中...

  • stm32 外部中断

    首先,要理清楚,什么是中断。 中断的意思是,比如CPU是主角,他正在工作,忽然间GPIO口跟他讲,这件事需要他来做...

  • stm32使用TIM3产生定时器中断控制LED灯闪烁

    参考文章 STM32之定时器中断控制LED闪烁https://blog.csdn.net/qq_36554582/...

  • 4.4每日站报

    DONE STM32定时器中断部分的学习 学习数电译码器部分 写了关于定时器中断的学习笔记 TODO 完成STM3...

  • stm32串口回调函数 2021-09-02

    STM32中断数据回调函数接收处理[https://www.cnblogs.com/lifan3a/article...

  • STM32 利用Hal库实现UART中断处理

    实验室项目需要使用STM32开发,Hal库的资料相对较少,关于UART中断与之前使用飞思卡尔芯片的中断不同。首先在...

网友评论

      本文标题:stm32中断

      本文链接:https://www.haomeiwen.com/subject/wcmewftx.html