STM32F101xx/STM32F103xx固件函数库NVIC模块详解

需积分: 36 30 下载量 52 浏览量 更新于2024-08-09 收藏 4.7MB PDF 举报
"本文档是关于STM32F101xx和STM32F103xx微控制器的固件函数库用户手册,详细介绍了NVIC(Nested Vector Interrupt Controller)库函数,这些函数用于管理和配置中断系统。" NVIC(Nested Vector Interrupt Controller)是STM32系列微控制器中的中断控制器,它负责处理和调度来自多个外设的中断请求。在STM32的固件函数库中,NVIC提供了多种库函数来帮助开发者有效地管理中断和优先级。 1. `NVIC_DeInit` 和 `NVIC_SCBDeInit` 函数用于将NVIC和System Control Block (SCB)寄存器重置到默认状态,这在初始化或复位系统时非常有用。 2. `NVIC_PriorityGroupConfig` 允许设置中断优先级分组,分为先占优先级和从优先级。这允许开发者根据需求分配不同的中断优先级。 3. `NVIC_Init` 用于根据指定的结构体参数初始化NVIC寄存器,结构体包含中断通道、优先级等信息,确保中断配置正确。 4. `NVIC_StructInit` 是一个辅助函数,用于填充NVIC初始化结构体的所有字段为默认值,方便快速初始化。 5. `NVIC_SETPRIMASK`、`NVIC_RESETPRIMASK`、`NVIC_SETFAULTMASK` 和 `NVIC_RESETFAULTMASK` 用于控制PRIMASK和FAULTMASK寄存器,这些寄存器可以防止在中断服务程序中发生其他中断。 6. `NVIC_BASEPRICONFIG` 可以改变执行优先级,提升低可设置优先级到较高的级别。 7. `NVIC_GetBASEPRI` 返回当前的BASEPRI屏蔽值,这有助于了解当前中断处理的状态。 8. `NVIC_GetCurrentPendingIRQChannel` 返回正在等待处理的中断通道标识符。 9. `NVIC_GetIRQChannelPendingBitStatus`、`NVIC_SetIRQChannelPendingBit` 和 `NVIC_ClearIRQChannelPendingBit` 分别用于检查、设置和清除中断通道的挂起位,控制中断请求的状态。 10. `NVIC_GetCurrentActiveHandler` 提供当前正在执行的中断处理程序或系统处理程序的标识符。 11. `NVIC_GetIRQChannelActiveBitStatus` 检查中断通道的活动位,表明中断是否已触发并正在处理。 12. `NVIC_GetCPUID` 返回CPU ID,包括Cortex-M3内核的版本信息和实现细节。 13. `NVIC_SetVectorTable` 设置向量表的位置和偏移,这对于定位中断处理程序的入口地址至关重要。 14. `NVIC_GenerateSystemReset` 和 `NVIC_GenerateCoreReset` 用于产生系统复位和内核复位,以重启微控制器。 15. `NVIC_SystemLPConfig` 用于配置低功耗模式,控制何时进入睡眠或其他低功耗状态。 16. `NVIC_SystemHandlerConfig`、`NVIC_SystemHandlerPriorityConfig`、`NVIC_GetSystemHandlerPendingBitStatus`、`NVIC_SetSystemHandlerPendingBit` 和 `NVIC_ClearSystemHandlerPendingBit` 与上述中断通道的函数类似,但针对的是系统处理程序,如NMI(非 maskable interrupt)和Hard Fault。 17. `NVIC_GetSystemHandlerActiveBitStatus` 检查系统处理程序的活动状态。 18. `NVIC_GetFaultHandlerSources` 和 `NVIC_GetFaultAddress` 用于获取导致系统处理程序触发的错误源和故障发生的位置,用于故障排查和调试。 这个库提供了全面的中断管理功能,不仅简化了中断处理的编程,还通过实时错误检测增强了软件的健壮性。虽然为了通用性和易用性,可能会牺牲一定的代码效率和大小,但对大多数应用来说,这是个很好的起点。对于有特殊要求的项目,开发者可以根据需要调整这些库函数。