历史上的今天
返回首页

历史上的今天

今天是:2025年03月13日(星期四)

正在发生

2019年03月13日 | STM32F4开发板----外部中断(003)

2019-03-13 来源:eefocus

外部中断

1 初始化参数

/**

  * @brief  EXTI Init Structure definition  

  */


typedef struct

{

  uint32_t EXTI_Line;               /*!< Specifies the EXTI lines to be enabled or disabled.

                                         This parameter can be any combination value of @ref EXTI_Lines */ 

  EXTIMode_TypeDef EXTI_Mode;       /*!< Specifies the mode for the EXTI lines.

                                         This parameter can be a value of @ref EXTIMode_TypeDef */

  EXTITrigger_TypeDef EXTI_Trigger; /*!< Specifies the trigger signal active edge for the EXTI lines.

                                         This parameter can be a value of @ref EXTITrigger_TypeDef */

  FunctionalState EXTI_LineCmd;     /*!< Specifies the new state of the selected EXTI lines.

                                         This parameter can be set either to ENABLE or DISABLE */

}EXTI_InitTypeDef;


外部中断库函数


/* Exported macro ------------------------------------------------------------*/

/* Exported functions --------------------------------------------------------*/


/*  Function used to set the EXTI configuration to the default reset state *****/

void EXTI_DeInit(void);


/* Initialization and Configuration functions *********************************/

void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct);

void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct);

void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line);


/* Interrupts and flags management functions **********************************/

FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line);

void EXTI_ClearFlag(uint32_t EXTI_Line);

ITStatus EXTI_GetITStatus(uint32_t EXTI_Line);

void EXTI_ClearITPendingBit(uint32_t EXTI_Line);


2 配置过程

[..] In order to use an I/O pin as an external interrupt source, follow steps 

below: 

(#) Configure the I/O in input mode using GPIO_Init() 

(#) Select the input source pin for the EXTI line using SYSCFG_EXTILineConfig() 

(#) Select the mode(interrupt, event) and configure the trigger 

selection (Rising, falling or both) using EXTI_Init() 

(#) Configure NVIC IRQ channel mapped to the EXTI line using NVIC_Init()


[..] 

(@) SYSCFG APB clock must be enabled to get write access to SYSCFG_EXTICRx 

registers using RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);


其中 

EXTI_GetFlagStatus()先判断中断是否使能,使能之后才去判断中断标志位 

EXIT _GetFlagStatus()直接判断状态标志位


扩展,所有stm32中断处理函数入口


WWDG_IRQHandler                     PVD_IRQHandler                                      

TAMP_STAMP_IRQHandler               RTC_WKUP_IRQHandler                             

FLASH_IRQHandler                    RCC_IRQHandler

EXTI0_IRQHandler                    EXTI1_IRQHandler                              

EXTI2_IRQHandler                    EXTI3_IRQHandler                                    

EXTI4_IRQHandler                    DMA1_Stream0_IRQHandler                

DMA1_Stream1_IRQHandler             DMA1_Stream2_IRQHandler                     

DMA1_Stream3_IRQHandler             DMA1_Stream4_IRQHandler                                    DMA1_Stream5_IRQHandler              DMA1_Stream6_IRQHandler                    

ADC_IRQHandler                      CAN1_TX_IRQHandler                                                            

CAN1_RX0_IRQHandler                 CAN1_RX1_IRQHandler                         

CAN1_SCE_IRQHandler                 EXTI9_5_IRQHandler          

TIM1_BRK_TIM9_IRQHandler            TIM1_UP_TIM10_IRQHandler                

TIM1_TRG_COM_TIM11_IRQHandler       TIM1_CC_IRQHandler          

TIM2_IRQHandler                     TIM3_IRQHandler                                   

TIM4_IRQHandler                     I2C1_EV_IRQHandler                          

I2C1_ER_IRQHandler                  I2C2_EV_IRQHandler                              

I2C2_ER_IRQHandler                  SPI1_IRQHandler                                     

SPI2_IRQHandler                     USART1_IRQHandler                             

USART2_IRQHandler                   USART3_IRQHandler                                    

EXTI15_10_IRQHandler                RTC_Alarm_IRQHandler                         

OTG_FS_WKUP_IRQHandler              TIM8_BRK_TIM12_IRQHandler                      

TIM8_UP_TIM13_IRQHandler            TIM8_TRG_COM_TIM14_IRQHandler    

TIM8_CC_IRQHandler                  DMA1_Stream7_IRQHandler                      

FSMC_IRQHandler                     SDIO_IRQHandler                                   

TIM5_IRQHandler                     SPI3_IRQHandler                                  

UART4_IRQHandler                    UART5_IRQHandler                                

TIM6_DAC_IRQHandler                 TIM7_IRQHandler                                  

DMA2_Stream0_IRQHandler             DMA2_Stream1_IRQHandler                  

DMA2_Stream2_IRQHandler             DMA2_Stream3_IRQHandler                           

DMA2_Stream4_IRQHandler             ETH_IRQHandler                                     

ETH_WKUP_IRQHandler                 CAN2_TX_IRQHandler                                                           

CAN2_RX0_IRQHandler                 CAN2_RX1_IRQHandler                          

CAN2_SCE_IRQHandler                 OTG_FS_IRQHandler                                    

DMA2_Stream5_IRQHandler             DMA2_Stream6_IRQHandler                     

DMA2_Stream7_IRQHandler             USART6_IRQHandler                               

I2C3_EV_IRQHandler                  I2C3_ER_IRQHandler                                

OTG_HS_EP1_OUT_IRQHandler           OTG_HS_EP1_IN_IRQHandler                  

OTG_HS_WKUP_IRQHandler              OTG_HS_IRQHandler                                  

DCMI_IRQHandler                     RYP_IRQHandler                                              

HASH_RNG_IRQHandlerFPU_IRQHandler


这里中断函数对应关系


EXPORT  EXTI0_IRQHandler                 ----> EXTI_Line0                                          

EXPORT  EXTI1_IRQHandler                 ----> EXTI_Line1                                        

EXPORT  EXTI2_IRQHandler                 ----> EXTI_Line2                                             

EXPORT  EXTI3_IRQHandler                 ----> EXTI_Line3                                      

EXPORT  EXTI4_IRQHandler                 ----> EXTI_Line 4


EXTI9_5_IRQHandler —-> EXTI_Line 5-9 

EXTI15_10_IRQHandler —-> EXTI_Line 10-15z


3.3 初始化实例


RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);//使能SYSCFG时钟


SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0);//PA0 连接中断线0


 /* 配置EXTI_Line0 */

 EXTI_InitStructure.EXTI_Line = EXTI_Line0;//LINE0

 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//中断事件

 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; //上升沿触发

 EXTI_InitStructure.EXTI_LineCmd = ENABLE;//使能LINE0

 EXTI_Init(&EXTI_InitStructure);//配置


    NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;//外部中断0

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00;//抢占优先级0

  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;//子通道优先级2

  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能外部中断通道

  NVIC_Init(&NVIC_InitStructure);//配置


void EXTI0_IRQHandler(void)

{

    delay_ms(10);    //Ï消抖

    if(WK_UP==1)    

    {

        BEEP=!BEEP; //电平翻转

    }        

     EXTI_ClearITPendingBit(EXTI_Line0); //清除LINE0上的中断标志

}

推荐阅读

史海拾趣

问答坊 | AI 解惑

电子技术课程设计题目:秒表(要求:能精确显示0.01秒的变化;能同时对3个不同事件进行计时:比如长跑前三名)

电子技术课程设计题目:秒表(要求:能精确显示0.01秒的变化;能同时对3个不同事件进行计时:比如长跑前三名) …

查看全部问答>

关于ARM中断处理的问题----《ARM嵌入式系统开发-软件设计与优化》第九章中疑问

各位过年好哦~ 呵呵,小弟这里有点疑惑相同大家讨论讨论~,这个问题是《ARM嵌入式系统开发-软件设计与优化》一书中的见下: 第九章-中断处理 9.3.2嵌套中断 在这一节中,描述了如何处理嵌套式的中断(不能单纯的在IRQ模式下打开中断允许位) ...…

查看全部问答>

This file should only be compiled with iccavr or aavr with processor option -v1

#error This file should only be compiled with iccavr or aavr with processor option -v1 有人用IAR AVR遇到过这个问题吗?…

查看全部问答>

无线电通信

RT 无线电通信怎么入门啊~~~…

查看全部问答>

设计家用电器电路控制板时的EMC方法

家电控制板的小体积,低成本决定了在线路中不会使用高成本的材料来解决其电磁干扰问题。家电控制板的干扰主要来自三大方面:一是控制板本身产生的干扰,二是来自负载的干扰,三是来自线路上的干扰。解决这些干扰可以分别采用不同的方案来达成。 控 ...…

查看全部问答>

怎样让应用程序支持中文

我公司有个触摸屏是用wince英文系统的,我们电脑和触摸屏的故障信息是同步的,但是电脑改成中文故障信息后,触摸屏不能显示出中文故障,只显示乱码。 我应该怎么弄才能显示出来啊。…

查看全部问答>

OV系列摄像头配置格式如何解释?

FPGA的I2C对摄像头配置怎么没有地址,只有数据呢。谁能解释下。///////////// Config Data LUT  ////////////////////////// alwaysbegin case(LUT_INDEX) // Audio Config Data 0 : LUT_DATA <= 16\'h0000; 1 : LUT_DATA <= 16\'h1140; ...…

查看全部问答>

【C2000 LaunchPad】硬件组成及使用

【C2000 LaunchPad】 一、概述 C2000 LaunchPad,LAUNCHXL-F28027,是TI使用Piccolo F2802x器件制作的一个完备的低成本的实验板。F28027 LAUNCHXL平台,包括了F28027的所需要硬件及软件。 LaunchPad是基于F28027 CPU的,也可以让用户移植为成 ...…

查看全部问答>