打印
[应用相关]

EXTI和NVIC初探

[复制链接]
880|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Vitality1|  楼主 | 2015-3-28 22:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
vi, TI, ic, TE, se
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;以及设置优先级和软件中断的寄存器。

沙发
Vitality1|  楼主 | 2015-3-28 22:04 | 只看该作者
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。

使用特权

评论回复
板凳
Vitality1|  楼主 | 2015-3-28 22:05 | 只看该作者
将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上的信号量。

使用特权

评论回复
地板
搞IT的| | 2015-3-29 10:26 | 只看该作者
不错喔,赞!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

81

主题

421

帖子

9

粉丝