使用 IO 口外部中断的一般步骤:
1)初始化 IO 口为输入。
2)开启 IO 口复用时钟,设置 IO 口与中断线的映射关系。
3)初始化线上中断,设置触发条件等。
4)配置中断分组(NVIC),并使能中断。
5)编写中断服务函数。

 

基础知识略过,

第一步.配置 GPIO 与中断线的映射关系的函数

1 void SYSCFG_EXTILineConfig(uint8_t EXTI_PortSourceGPIOx, uint8_t EXTI_PinSourcex)

配置实例:

1 void SYSCFG_EXTILineConfig(uint8_t EXTI_PortSourceGPIOI, uint8_t EXTI_PinSource8)

  将中断线 8 与 GPIOI 映射起来,那么很显然是 GPIOI.8 与 EXTI8 中断线连接了。设置好中断线映射之后,那么到底来自这个IO口的中断时通过什么方式出发的呢?接下来我们就要设置该中断线上中断的初始化参数了。

第二步.中断线上中断的初始化是通过函数 EXTI_Init()实现的。EXTI_Init()函数的定义是:

1 void EXTI_Init  ( EXTI_InitTypeDef *  EXTI_InitStruct )  

下面我们用一个使用范例来说明这个函数的使用:

1 EXTI_InitTypeDef    EXTI_InitStructure;
2 EXTI_InitStructure.EXTI_Line=EXTI_Line8;
3 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
4 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
5 EXTI_InitStructure.EXTI_LineCmd = ENABLE;
6 EXTI_Init(&EXTI_InitStructure);      //根据 EXTI_InitStruct 中指定的
7 //参数初始化外设 EXTI 寄存器

  STM32 的外设的初始化都是通过结构体来设
  置初始值的,这里就不罗嗦结构体初始化的过程了。我们来看看结构体 EXTI_InitTypeDef 的成员变量:

 1 typedef struct
 2 {
 3   uint32_t EXTI_Line;               /*!< Specifies the EXTI lines to be enabled or disabled.
 4                                          This parameter can be any combination value of @ref EXTI_Lines */
 5    
 6   EXTIMode_TypeDef EXTI_Mode;       /*!< Specifies the mode for the EXTI lines.
 7                                          This parameter can be a value of @ref EXTIMode_TypeDef */
 8 
 9   EXTITrigger_TypeDef EXTI_Trigger; /*!< Specifies the trigger signal active edge for the EXTI lines.
10                                          This parameter can be a value of @ref EXTITrigger_TypeDef */
11 
12   FunctionalState EXTI_LineCmd;     /*!< Specifies the new state of the selected EXTI lines.
13                                          This parameter can be set either to ENABLE or DISABLE */ 
14 }EXTI_InitTypeDef;
EXTI_InitTypeDef

相关文章:

  • 2021-12-09
  • 2021-09-10
  • 2022-12-23
  • 2022-12-23
  • 2021-09-21
  • 2021-12-13
  • 2021-04-07
  • 2021-05-16
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-07
  • 2021-06-27
  • 2021-11-24
相关资源
相似解决方案