STM32F101x NVIC库函数详解与应用

需积分: 35 16 下载量 94 浏览量 更新于2024-08-10 收藏 5.11MB PDF 举报
"本文档是关于32位基于ARM微控制器STM32F101xx与STM32F103xx的固件函数库的用户手册,特别是关于NVIC(Nested Vector Interrupt Controller)库函数的详细说明。NVIC是Cortex-M3内核中的中断控制器,用于管理系统的中断和优先级。" NVIC库是STM32固件库的一部分,提供了对嵌套向量中断控制器的接口,使得开发者能够方便地配置和管理中断。NVIC包含了一系列的库函数,用于初始化、配置和控制中断处理。 1. NVIC初始化:NVIC_DeInit函数用于将NVIC寄存器重置到默认值,而NVIC_SCBDeInit则负责SCB(System Control Block)寄存器的重置。 2. 优先级分组:NVIC_PriorityGroupConfig函数允许设置中断优先级分组,包括抢占优先级和子优先级。 3. NVIC配置:NVIC_Init函数根据提供的结构体NVIC_InitStruct初始化NVIC寄存器,NVIC_StructInit则将结构体的参数填充为默认值。 4. PRIMASK和FAULTMASK控制:NVIC_SETPRIMASK和NVIC_RESETPRIMASK分别用于启用和禁用PRIMASK优先级,NVIC_SETFAULTMASK和NVIC_RESETFAULTMASK则控制FAULTMASK优先级。 5. 基础优先级设置:NVIC_BASEPRICONFIG可以改变执行优先级,提升低可设置优先级到1。 6. 状态获取:NVIC_GetBASEPRI返回当前的BASEPRI屏蔽值,NVIC_GetCurrentPendingIRQChannel返回当前待处理的中断通道,NVIC_GetCurrentActiveHandler提供当前活动的处理器(IRQ通道和系统处理器)标识符。 7. 中断处理:NVIC_GetIRQChannelPendingBitStatus检查指定中断通道的待处理位,NVIC_SetIRQChannelPendingBit和NVIC_ClearIRQChannelPendingBit分别用于设置和清除中断通道的待处理位。 8. 系统处理器管理:NVIC_GetSystemHandlerPendingBitStatus、NVIC_SetSystemHandlerPendingBit和NVIC_ClearSystemHandlerPendingBit用于系统Handler的待处理位设置与清除,NVIC_SystemHandlerConfig则用来启用或禁用指定的系统Handler。 9. 系统Handler优先级设置:NVIC_SystemHandlerPriorityConfig函数用于设置系统Handler的优先级。 10. 错误源和故障地址:NVIC_GetFaultHandlerSources返回表示错误的系统Handler源,NVIC_GetFaultAddress返回导致错误的系统Handler所在地址。 11. 系统复位和低功耗配置:NVIC_SetVectorTable可以设置向量表的位置和偏移,NVIC_GenerateSystemReset和NVIC_GenerateCoreReset用于产生系统复位和内核复位,NVIC_SystemLPConfig则用于配置系统进入低功耗模式的条件。 这个库提供了全面的中断管理功能,对于开发STM32微控制器的中断处理程序非常有用。通过这些库函数,开发者可以高效地管理和响应中断事件,同时保证系统运行的稳定性和实时性。