STM32L--Interrupts and events

来源:互联网 发布:安卓紫外线灯软件 编辑:程序博客网 时间:2024/05/22 20:28

STM32L-Interrupts and events


1.  NVIC控制器

  • 45个可屏蔽中断源(medium density devices);53个可屏蔽中断源(medium+ density devices);56个可屏蔽中断源(high density devices)。以上均不包含Cortex-M3 16个中断
  • 16个可编程中断优先级(4个中断优先级已被占用)
  • 低延迟异常和中断控制
  • 功耗控制
  • 实现系统控制寄存器
NVIC与处理器内核相辅相成,包括了低延迟中断处理机制和对于高延迟的中断有着高效的处理机制

所有的中断,包括内核的中断均由NVIC管理

中断向量表如下(medium-density devices):

 

  
 


2. 外部中断/事件控制器(EXTI)

外部中断/事件控制器含有多达了23个边缘检测器用于产生事件/中断请求。每一个均可单独配置其检测类型(事件/中断)和触发事件(上升缘、下降缘或上升及下降缘),并且每一个均可单独屏蔽,pending寄存器保存着当前中断状态
有以下主要特性:
  • 每个中断/事件都有单独的触发器和屏蔽器
  • 每个中断源有专用的状态位
  • 23个软件事件/中断请求
  • 检测的外部信号的脉冲宽度可低于APB2总线时钟
其框架图如下:




3. 唤醒事件管理

STM32L15XX可以通过外部事件或者内部事件来唤醒内核(WFE),唤醒事件可由以下之一产生:
  • 在外设控制寄存器中使能一个中断(在NVIC中不使能该中断),使能Cortex-M3系统控制寄存器中的SEVONPEND位。当MCU被WFE唤醒时,外设中断状态位和外设NVIC IRQ状态位(使用NVIC 中断状态清除寄存器)需要清除。
  • 配置一个外部或者内部EXTI为事件模式,当MCU被WFE唤醒时,由于事件行中的状态位没有置位,所以不需要清除外设中断状态位和外设NVIC IRQ状态位

4. 功能描述

为了产生中断,中断必需被配置和使能,可以通过配置两个触发器寄存器为所需要的类型和使能中断请求(往相应的中断屏蔽寄存器中写入1)。当所配置的检测事件发生时,会产生中断请求。相应的状态位会被置位,通过往状态寄存器中写1可以清除该中断事件。

为了产生事件,事件必需被配置和使能,可以通过配置两个触发器寄存器为所需要的类型和使能事件请求(往相应的事件屏蔽寄存器中写入1)。当所配置的检测事件发生时,会产生事件请求。相应的状态位不会被置位

中断/事件请求均可通过软件产生,只需要往软件中断/事件寄存器中写入1即可。

(1)硬件中断
可按照以下步骤配置中断源
  • 配置屏蔽寄存器(EXTI_IMR)
  • 为中断配置触发器寄存器(EXTI_RTSR、EXTI_FTSR)
  • 配置控制NVIC IRQ映射到外部中断控制器上的使能位和屏蔽位
(2)硬件事件
可按照以下步骤配置事件源
  • 配置屏蔽寄存器(EXTI_EMR)
  • 为事件配置触发器寄存器(EXTI_RTSR、EXTI_FTSR)
(3)软件触发中断/事件
可按照以下步骤产生一个软件中断
  • 配置屏蔽寄存器(EXTI_IMR和EXTI_EMR)
  • 设置对应的软件中断寄存器的请求位(EXTI_SWIRE)
5. 外部中断/事件的映射关系

83个GPIO连接到了16个外部中断/事件上,可见下图



另外EXTI 映射情况如下:
  • EXTI 16 连接到 PVD 输出
  • EXTI 17 连接到 RTC Alarm event
  • EXTI 18 连接到 USB Device FS wakeup event
  • EXTI 19 连接到 RTC Tamper 和 TimeStamp events
  • EXTI 20 连接到 RTC Wakeup event
  • EXTI 21 连接到 Comparator 1 wakeup event
  • EXTI 22 连接到 Comparator 2 wakeup event
  • EXTI 23 连接到 Comparator channel acquisition interrupt