STM32F101xx/STM32F103xx NVIC寄存器详解

需积分: 35 16 下载量 131 浏览量 更新于2024-08-10 收藏 5.11MB PDF 举报
"NVIC寄存器结构在STM32固件库中的定义和用途" STM32固件库是专为32位ARM Cortex-M3内核微控制器STM32F101xx和STM32F103xx设计的一套软件库,它包含了对外设的操作函数、数据结构和宏定义,简化了开发者对这些微控制器外设的使用。在STM32F10x系列中,NVIC(Nested Vector Interrupt Controller)是中断控制器,用于管理芯片上的中断服务。 NVIC寄存器结构在头文件"stm32f10x_map.h"中被定义为NVIC_TypeDef结构体。这个结构体包含了一系列的32位寄存器,用于控制和查询中断状态。以下是NVIC_TypeDef结构体的主要组成部分: 1. **Enable[2]**: 这两个32位寄存器用于启用中断。将特定中断位置1,意味着允许该中断发生。 2. **Disable[2]**: 相应地,这两个寄存器用于禁用中断。置位某个中断位,可阻止该中断触发。 3. **Set[2]**: 设置中断待处理寄存器。写入某个中断位,会模拟中断的发生,使得中断处理函数被调用。 4. **Clear[2]**: 清除中断待处理寄存器。清零某个中断位,可以取消待处理的中断状态。 5. **Active[2]**: 中断活动位寄存器,用于检查当前哪些中断正在活动或已被触发。 6. **Priority[11]**: 中断优先级寄存器,用于设置各个中断的优先级,决定了中断服务的执行顺序。 除了NVIC,还有一个SCB_TypeDef(System Control Block)结构体,它包含了系统控制块相关的寄存器,如: 1. **CPUID**: CPU ID 基寄存器,用于标识微处理器的特性。 2. **IRQControlState**: 中断控制状态寄存器,显示当前中断的状态。 3. **ExceptionTableOffset**: 向量表移位寄存器,确定中断向量表的位置。 4. **AIRC**: 应用中断和复位控制寄存器,控制复位和异常响应。 5. **SysCtrl**: 系统控制寄存器,用于配置系统时钟和其他系统设置。 6. **ConfigCtrl**: 配置控制寄存器,可能包含系统选项字节的访问。 7. **SystemPriority[3]**: 系统优先级寄存器,用于设置预分频器和抢占优先级。 8. **SysHandlerCtrl**: 系统处理程序控制寄存器,定义中断服务例程(ISR)。 9. **ConfigFaultStatus**: 配置故障状态寄存器,记录配置错误。 10. **HardFaultStatus**: 硬故障状态寄存器,记录导致硬故障的事件。 11. **DebugFaultStatus**: 调试故障状态寄存器,显示调试相关故障信息。 12. **MemoryManageFaultAddr** 和 **BusFaultAddr**: 分别记录内存管理故障和总线故障的地址,用于故障分析。 通过这些寄存器,开发者可以精确控制中断的发生、优先级设置以及处理中断事件。固件库的API函数提供了访问这些寄存器的接口,使得开发者能够以标准的、易于理解的方式编写代码。同时,库中的函数遵循"Strict ANSI-C"标准,确保代码的可移植性和兼容性。在开发过程中,实时错误检测功能可以提高软件的健壮性,但在最终应用中,为了优化代码大小和执行速度,可以根据需要去除。 STM32固件库不仅提供了现成的驱动程序,还包含每个外设的描述和应用示例,方便开发者快速上手。对于对代码大小和性能有严格要求的应用,库函数可以作为一个起点,根据具体需求进行定制和优化。