EXTI和NVIC初探
来源:互联网 发布:天下网盟网络收藏夹 编辑:程序博客网 时间:2024/05/21 06:11
NVIC
Nested vectored interrupt controller。嵌套向量中断控制器。它是STM32 core peripherals的其中之一,其余为system timer, system control block和memory protect unit。
从NVIC的vector table中看出,NVIC type按照优先级从高到低的顺序,可以分为Reset, NonMaskable Interrupt(NMI), Hard Fault, Memory management fault, Usage Fault, ..., SysTick, Interrupt(IRQ)。整理表格如下。
由此可见,EXTI是NVIC中的一个成员。NVIC中,IRQ分为level-sensitive和pulse两种。前者的中断需要相应外设来取消,因此外设可以控制处理器重复执行相应的ISR;后者由处理器时钟的上升沿同步采集,因此需要外设将中断保持至少一个时钟周期。对于软硬件控制中断挂起和取消中断信号的条件等,参见<PM0056 Programming manual: STM32F10xxx Cortex-M3 programming manual> 4.3.9 Level-sensitive and pulse interrupts。
寄存器
NVIC IRQ的主要寄存器为set enable, clear enable, set pending, clear pending, active bit,每种均有三个元素,分别控制第0~31,32~63,64~67号IRQ;以及设置优先级和软件中断的寄存器。
EXTI
EXTI可以检测20个事件或中断,对应关系如下所示。
寄存器
EXTI的寄存器主要有:interrupt mask, event mask, rising trigger selection, falling trigger selection, software interrupt event, pending。通过对EXTI寄存器的操作,可实现 硬件/软件 中断/事件 的设置,分别需要改写的寄存器参见<RM0008 Reference manual: STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and STM32F107xx advanced ARM-based 32-bit MCUs> 9.2.4 Function description。
将GPIO作为中断的处理流程
1. GPIO初始化。包括外设时钟,管脚,速度,模式等。
2. 将GPIO脚连接到EXTI line。这是通过写AFIO下的EXTICR寄存器实现的。
3. EXTI初始化,使能该条EXTI line,并做上升下降沿设置。通过写EXTI下IMR, EMR, PTSR, FTSR实现。
4. NVIC初始化。包括优先级的计算和使能。
当中断到来,ISR做相应处理后:
1. 清除GPIO寄存器中的信号量。
2. 清除EXTI上的信号量。
- EXTI和NVIC初探
- STM32----------NVIC和EXTI
- 关于NVIC和EXTI详解
- STM32中EXTI(外部中断)和NVIC(嵌套向量中断)的关系
- STM32 EXTI(外部中断)和NVIC(嵌套向量中断控制器)学习
- NVIC
- NVIC
- stm32F4的NVIC和中断
- STM32的内核CM3没有理解,NVIC,EXTI都涉及到了,内核到目前为止没有理解
- EXTI中断和事件的区别
- STM32 NVIC 抢占优先级和响应优先级
- NVIC和SCB的简单理解
- STM32的NVIC和中断的总结
- NVIC 的抢占中断和响应中断
- STM32外部中断(EXTI)分析和应用
- stm32按键的检测(EXTI和Polling两种方式)
- STM32M4 EXTI
- STM8->EXTI
- java
- 记录管理系统
- gcj官方网站
- SQL语句实现日历
- Ubuntu 10.10安装配置指南&Ubuntu 11.10 图形安装教程
- EXTI和NVIC初探
- Dispaly table contents in HTML
- [Fedora]/root下anaconda-ks.cfg
- Oracle启动服务和手动控制(详解)
- sin值(0到90度)
- flash as3读取xml
- 正则表达式在js中的几个实例
- 图像增强(频域低通)
- [ZZ]浮点数的存储格式