可靠的MCU伙伴
Design for Reliability
全国服务咨询热线
0757-8185 9361

03SWM系列之EXTI


华芯微特|MCUEXTI

一、嵌套向量中断控制器(NVIC

NVIC的全称是Nested vectoredinterrupt controller,即嵌套向量中断控制器。

Cortex-M0Cortex-M4提供了嵌套向量中断控制器(NVIC用以管理中断事件。其中M0M4提供的中断优先级及个数不一致,为了让您更加简单的使用这一功能,下面小编将以SWM190为例,给大家展示如何使用SWM系列产品NVIC

SWM190系列32MCU(以下简SWM190内嵌ARM® CortexTM-M0内核,其中断优先级分为4级,可通过中断优先级配置寄存器(IRQn)进行配置。

特性

4位中断优先级

支持嵌套和向量中断

硬件完成现场的保存和恢复

动态改变优先级

确定的中断时间

可屏蔽中断

在中断发生时,内核比较中断优先级,并自动获取入口地址,并保护现场,将指定寄存器中数据入栈,此过程无需软件参与。中断服务程序结束后,由硬件完成出栈工作。同时支持“尾链”模式及“迟滞”模式,有效的优化了中断发生及背对背中断的执行效率,提高了中断的实时性。嵌套向量中断控制器管理着包括核异常等中断。关于更多的异常和NVIC编程的说明请参考SWM190数据手册及M0权威指南

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

EXTI的全程是External interrupt/event controller,即外部中断/事件控制器,管理了控制器的32个中断/事件线。每个中断/事件线都对应一个电平或者边沿检测,电平检测支持高电平/低电平检测;边沿检测包括上升沿/下降沿/双边沿触发

EXTI 可以实现对每个中断/事件线进行单独配置,可以单独配置为中断或者事件,以及触发事件的属性。

SWM190提供了32个中断供外设与核交互,其排列如表格 1所示。可以通过中断配置模块,将任意模块或具体IO的中断连接至指定中断编号。具体使用参考中断配置模块。

表格 1 中断编号及对应外设


中断(IRQ编号)
描述
0
GPIOA
1
GPIOA0
2
UART0
3
UART1
4
SPI0
5
TIMER0
6
DMA
7
PWM_CH0
8
BTIMER0
9
BTIMER3
10
TIMER1
11
WDT
12
GPIOA4
13
I2C0
14
GPIOA5
15
BTIMER2
16
GPIOC/CORDIC
17
SPI1/BTIMER1
18
GPIOB/BOD
19
GPIOC4/SARADC0
20
GPIOD/RTC_BASE
21
STOP_DET/CMP
22
UART2/GPIOB4
23
TIMER2/GPIOA15
24
TIMER3/HALL
25
GPIOC5/I2C1
26
PWM_CH1/GPIOB6
27
UART3/GPIOB5
28
PWM_CH2/EXTFLASHC
29
PWM_CH3/CACHE
30
SARADC1/GPIOA14
31
GPIOE/PWM_BRK


SWM190 EXTI功能配置库函数

下面我们以最简单的按键输入为例,用外部中断的方法实现按键控制。在此例程中,我们将A4设为按键输入引脚,A5设为输出引脚,外接LED灯,通过按键翻转LED的状态来观察现象。

我们之前GPIO的配置方法,在这里就不在做赘述,将按键引脚通过GPIO_Init函数设为上拉输入,并与外部按键电路连接,将LED输出引脚通过GPIO_Init设置为输出,与外部LED引脚相连。然后进行外部中断配置:

SWM190固件库中对外部中断的配置进行了说明,下面将根据库函数对SWM190EXTI配置,首先来看一下EXTI_Init函数的原型void EXTI_Init(GPIO_TypeDef * GPIOx, uint32_t n, uint32_t mode)。这个函数的实现是在SWM190_exti.c文件中,若要使用该函数在相应的应用程序的前面包含SWM190_exti.h头文件。

函数的第一个参数为GPIO_ TypeDef,它是一个结构体类型,该类型在SWM190_gpio.h中被定义。具体参数为指定GPIO端口,有效值包括GPIOAGPIOBGPIOCGPIODGPIOE

第二个参数为uint32_t n指定GPIO引脚,有效值包括PIN0PIN1PIN2... ... PIN14PIN15

第三个参数为uint32_t mode,为EXTI触发方式配置,有效值包括EXTI_FALL_EDGE下降沿触发中断)、EXTI_RISE_EDGE上升沿触发中断)、EXTI_BOTH_EDGE双边沿触发中断)、EXTI_LOW_LEVEL低电平触发中断)、EXTI_HIGH_LEVEL高电平触发中断);

配置GPIO中断引脚后,需要使能NVIC,将对应中断线连接至NVIC。并将引脚外部中断打开具体配置函数如下图所示:

接下来我们看下中断服务子函数,中断服务子函数与上面配置的外部中断线相对应,在中断服务函数中我们清中断并进行LED的翻转。

四、实验现象

下载好程序后,按下按键时LED点亮,再按下按键时LED熄灭,如此循环。


具体详情可登录华芯微特官网:http://www.synwit.cn/

共享文件夹:ftp://221.217.59.230/

QQ技术交流群:492524359等方式获取最新支持