STM32F101xx/STM32F103xx固件函数库NVIC功能详解

需积分: 42 19 下载量 110 浏览量 更新于2024-08-10 收藏 3.45MB PDF 举报
"这篇文档详细介绍了NVIC库函数在STM32F101xx和STM32F103xx微控制器中的使用,这些函数主要用于管理中断控制器NVIC(Nested Vector Interrupt Controller)以及系统控制块SCB(System Control Block)。NVIC库包含了多个函数,用于初始化、配置和管理中断及处理器优先级。这些函数包括NVIC初始化、设置和获取优先级、处理中断pending状态等。此外,文档还提到了函数库的设计标准,如遵循 Strict ANSI-C 和 MISRA-C2004,确保代码的可移植性和健壮性。该库通过实时错误检测增强了软件的稳定性,但也可能导致代码大小和执行速度的增加,可以根据需求进行优化。" NVIC库函数是STM32微控制器中管理中断的关键部分,它提供了丰富的功能,使得开发者能够有效地控制中断处理。其中,NVIC_DeInit用于将NVIC寄存器重置为默认值,而NVIC_SCBDeInit则用于重置SCB寄存器。NVIC_PriorityGroupConfig函数允许设置优先级分组,区分抢占优先级和子优先级。NVIC_Init用于根据用户提供的结构体NVIC_InitStruct配置NVIC寄存器,NVIC_StructInit则将结构体的参数设置为默认值。 NVIC_SETPRIMASK和NVIC_RESETPRIMASK用于控制PRIMASK优先级,使能或失能中断。NVIC_SETFAULTMASK和NVIC_RESETFAULTMASK分别用于提升执行优先级到-1(最高)和恢复中断。NVIC_BASEPRICONFIG可以改变执行优先级,NVIC_GetBASEPRI则返回当前的BASEPRI屏蔽值。 NVIC_GetCurrentPendingIRQChannel返回当前处理的中断通道,NVIC_GetIRQChannelPendingBitStatus检查指定中断通道的pending状态,NVIC_SetIRQChannelPendingBit和NVIC_ClearIRQChannelPendingBit分别用于设置和清除中断pending位。NVIC_GetCurrentActiveHandler返回当前活动的Handler(中断通道和系统Handler)标识符。 NVIC_GetIRQChannelActiveBitStatus检查中断通道的active状态,而NVIC_GetCPUID返回Cortex-M3内核的ID、版本号和实现细节。NVIC_SetVectorTable允许设置向量表的位置和偏移,NVIC_GenerateSystemReset和NVIC_GenerateCoreReset用于生成系统或内核复位。 NVIC_SystemLPConfig用于配置系统进入低功耗模式的条件,NVIC_SystemHandlerConfig则用于启用或禁用特定的系统Handler。NVIC_SystemHandlerPriorityConfig用于设置系统Handler的优先级。NVIC_GetSystemHandlerPendingBitStatus、NVIC_SetSystemHandlerPendingBit和NVIC_ClearSystemHandlerPendingBit分别用于检查、设置和清除系统Handler的pending位。NVIC_GetSystemHandlerActiveBitStatus检查系统Handler的active状态,NVIC_GetFaultHandlerSources返回表示错误的系统Handler源,而NVIC_GetFaultAddress返回导致错误的系统Handler所在地址。 这个库为开发者提供了一个全面的工具集,简化了STM32微控制器中中断管理的复杂性,使得在处理中断和优先级时更加方便高效。虽然这些函数可能会增加代码大小和执行速度,但它们对于快速开发和调试非常有用,而且可以针对最终应用进行优化。