STM32F101xx/STM32F103xx固件库函数NVIC详解

需积分: 37 15 下载量 35 浏览量 更新于2024-08-10 收藏 4.86MB PDF 举报
"STM32固件库中的NVIC库函数使用指南" STM32固件库中的NVIC(Nested Vectored Interrupt Controller,嵌套向量中断控制器)库提供了多种函数,用于管理和配置STM32微控制器的中断系统。NVIC是Cortex-M3处理器的一部分,负责管理中断的优先级和向量处理。以下是对NVIC库函数的详细解释: 1. NVIC_DeInit:这个函数用于重置NVIC的所有寄存器到它们的默认状态,清空中断配置。 2. NVIC_SCBDeInit:SCB(System Control Block,系统控制块)寄存器的初始化,同样将相关寄存器重置为初始值。 3. NVIC_PriorityGroupConfig:配置中断优先级分组,可以设置先占优先级和从优先级的组合,以确定中断处理的顺序。 4. NVIC_Init:根据提供的NVIC_InitStruct结构体中的参数,初始化NVIC寄存器,设置中断优先级、使能或禁用中断等。 5. NVIC_StructInit:将NVIC_InitStruct结构体中的参数初始化为默认值,方便快速配置。 6. NVIC_SETPRIMASK:启用PRIMASK优先级,将执行优先级提升至0,可以阻止所有中断。 7. NVIC_RESETPRIMASK:禁用PRIMASK优先级,恢复中断处理。 8. NVIC_SETFAULTMASK:启用FAULTMASK优先级,提升执行优先级至-1,是最高的优先级,允许在异常处理期间屏蔽所有中断。 9. NVIC_RESETFAULTMASK:禁用FAULTMASK优先级,解除异常处理时的中断屏蔽。 10. NVIC_BASEPRICONFIG:改变执行优先级,从最低可设置优先级N提升至1。 11. NVIC_GetBASEPRI:返回当前的BASEPRI屏蔽值,用于查看哪些中断被屏蔽。 12. NVIC_GetCurrentPendingIRQChannel:获取当前正在等待处理的中断通道标识符。 13. NVIC_GetIRQChannelPendingBitStatus:检查指定的中断通道的待处理位状态,判断是否有中断待处理。 14. NVIC_SetIRQChannelPendingBit:设置指定中断通道的待处理位,模拟产生中断请求。 15. NVIC_ClearIRQChannelPendingBit:清除指定中断通道的待处理位,取消中断请求。 16. NVIC_GetCurrentActiveHandler:返回当前活跃的中断处理程序或系统处理程序的标识符。 17. NVIC_GetIRQChannelActiveBitStatus:检查指定中断通道的活动位,确认中断是否正在进行。 18. NVIC_GetCPUID:获取CPU的ID号码,包含Cortex-M3内核的版本信息和实现细节。 19. NVIC_SetVectorTable:设置向量表的位置和偏移,影响中断处理的入口地址。 20. NVIC_GenerateSystemReset:触发系统复位,重置整个系统。 21. NVIC_GenerateCoreReset:触发内核复位,只重置CPU和NVIC。 22. NVIC_SystemLPConfig:配置系统进入低功耗模式的条件。 23. NVIC_SystemHandlerConfig:使能或禁用特定的系统处理程序,如NMI(非 maskable interrupt)或HardFault。 24. NVIC_SystemHandlerPriorityConfig:设置系统处理程序的优先级。 25. NVIC_GetSystemHandlerPendingBitStatus:检查系统处理程序的待处理位状态。 26. NVIC_SetSystemHandlerPendingBit:设置系统处理程序的待处理位。 27. NVIC_ClearSystemHandlerPendingBit:清除系统处理程序的待处理位。 28. NVIC_GetSystemHandlerActiveBitStatus:检查系统处理程序的活动位状态。 29. NVIC_GetFaultHandlerSources:返回表示错误的系统处理程序源,帮助调试。 30. NVIC_GetFaultAddress:返回导致错误的系统处理程序触发位置的地址。 这些函数提供了全面的中断管理能力,使得开发者可以灵活地配置STM32的中断系统,适应不同的应用需求。通过使用这些库函数,可以简化中断处理的编程,提高代码的可靠性,并降低开发难度。需要注意的是,为了优化代码大小和执行速度,某些实时错误检测功能可以在最终应用中移除。固件库适用于大多数应用场景,但对于有特定性能要求的应用,开发者可以根据需要调整和优化库函数。