14、外部中断

1、NVIC

NVIC即嵌套向量中断控制器。它是内核的器件。M3内核都是支持256个中断,其中包含了16个系统中断和240个外部中断,并且具有256级的可编程中断设置。然而芯片厂商一般不会把内核的这些资源全部用完,STM32F103ZET6的系统中断有10个,外部中断有60个。STM32F103的中断向量表在STM32F103xx.h文件中被定义。

1.1、NVIC寄存器

NVIC相关的寄存器定义了可以在core_cm3.h文件中找到。

c 复制代码
typedef struct 
{
	__IOM 	uint32_t ISER[8U];             /* 中断使能寄存器 */ 
			uint32_t RESERVED0[24U]; 
	__IOM 	uint32_t ICER[8U];             /* 中断清除使能寄存器 */ 
			uint32_t RSERVED1[24U]; 
	__IOM 	uint32_t ISPR[8U];             /* 中断使能挂起寄存器 */ 
			uint32_t RESERVED2[24U]; 
	__IOM 	uint32_t ICPR[8U];             /* 中断解挂寄存器 */ 
			uint32_t RESERVED3[24U]; 
	__IOM 	uint32_t IABR[8U];             /* 中断有效位寄存器 */ 
			uint32_t RESERVED4[56U]; 
	__IOM 	uint8_t  IP[240U];             /* 中断优先级寄存器(8Bit 位宽) */ 
			uint32_t RESERVED5[644U]; 
	__OM  uint32_t STIR;                   /* 软件触发中断寄存器 */ 
}  NVIC_Type; 
  • ISER[8]:ISER全称是:Interrupt Set Enable Registers,这是一个中断使能寄存器组。CM3内核支持256个中断,这里用8个32位寄存器来控制,每个位控制一个中断。但是STM32F103的可屏蔽中断最多只有60个,所以对我们来说,有用的就是两个(ISER[0]和ISER[1]),
    总共可以表示64个中断。而STM32F103只用了其中的60个。ISER[0]的bit0~31分别对应中
    断031;ISER[1]的bit027 对应中断32~59,这样总共60个中断就可以分别对应上了。你要使
    能某个中断,必须设置相应的ISER位为1,使该中断被使能(这里仅仅是使能,还要配合中断
    分组、屏蔽、IO口映射等设置才算是一个完整的中断设置)。具体每一位对应哪个中断,请参考
    stm32f103xe.h 里面的第 69 行。
相关推荐
不能跑的代码不是好代码4 小时前
STM32窗口看门狗(WWDG)知识点及标准库使用指南
stm32·单片机·嵌入式硬件
bingquan33334 小时前
在 Ghidra 中分析STM32裸机固件
stm32·单片机·嵌入式硬件
羽获飞4 小时前
从零开始学嵌入式之STM32——11.STM32---USART串行通讯
stm32·单片机·嵌入式硬件
宵时待雨6 小时前
STM32笔记归纳9:定时器
笔记·stm32·单片机·嵌入式硬件
逐步前行6 小时前
STM32_新建工程(寄存器版)
stm32·单片机·嵌入式硬件
bai5459366 小时前
STM32 CubeIDE 通过PWM占空比控制舵机角度
stm32·单片机·嵌入式硬件
松涛和鸣8 小时前
72、IMX6ULL驱动实战:设备树(DTS/DTB)+ GPIO子系统+Platform总线
linux·服务器·arm开发·数据库·单片机
简单中的复杂8 小时前
【避坑指南】RK3576 Linux SDK 编译:解决 Buildroot 卡死在 host-gcc-final 的终极方案
linux·嵌入式硬件
上海合宙LuatOS9 小时前
LuatOS核心库API——【audio 】
java·网络·单片机·嵌入式硬件·物联网·音视频·硬件工程
Hhh __灏9 小时前
stm32的SRAM内存不足如何分析和优化?堆栈空间如何优化?
单片机