STM32F101xx/STM32F103xx固件库函数NVIC详解
需积分: 49 186 浏览量
更新于2024-08-07
收藏 2.8MB PDF 举报
"STM32固件库中的NVIC库函数"
STM32固件库包含了一组用于管理NVIC(Nested Vector Interrupt Controller)的库函数,这些函数主要用于中断管理和优先级配置,适用于基于ARM Cortex-M3内核的STM32F101xx和STM32F103xx系列微控制器。NVIC是Cortex-M处理器内核的一个关键组件,负责处理和调度中断请求。
1. NVIC初始化和重置:
- `NVIC_DeInit` 函数用于重置NVIC寄存器,将其恢复到默认状态。
- `NVIC_SCBDeInit` 函数则用于重置SCB(System Control Block)寄存器,SCB包含了NVIC的部分功能。
2. 优先级分组配置:
- `NVIC_PriorityGroupConfig` 允许用户设置中断优先级分组,以确定先占优先级和从优先级的分配方式。
3. NVIC寄存器初始化:
- `NVIC_Init` 根据提供的结构体`NVIC_InitStruct`中的参数初始化NVIC寄存器,允许用户配置中断的优先级和状态。
- `NVIC_StructInit` 则用于将结构体的各个参数初始化为默认值。
4. 优先级控制:
- `NVIC_SETPRIMASK` 用来启用PRIMASK优先级,将执行优先级提升至0,防止所有中断。
- `NVIC_RESETPRIMASK` 关闭PRIMASK优先级,恢复中断处理。
- `NVIC_SETFAULTMASK` 启用FAULTMASK,提升执行优先级至-1,进一步阻止异常处理。
- `NVIC_RESETFAULTMASK` 失能FAULTMASK,解除阻止异常处理。
5. 中断通道管理:
- `NVIC_BasePriConfig` 用于改变执行优先级,提升从N(最低可设置优先级)到1。
- `NVIC_GetBasePRI` 返回当前的BASEPRI屏蔽值。
- `NVIC_GetCurrentPendingIRQChannel` 获取当前待处理的中断通道号。
- `NVIC_GetIRQChannelPendingBitStatus` 检查指定中断通道的待处理位状态。
- `NVIC_SetIRQChannelPendingBit` 设置指定中断通道的待处理位。
- `NVIC_ClearIRQChannelPendingBit` 清除指定中断通道的待处理位。
6. 活动中断和系统处理:
- `NVIC_GetCurrentActiveHandler` 返回当前活动的中断处理程序(包括IRQ通道和系统处理程序)的标识符。
- `NVIC_GetIRQChannelActiveBitStatus` 检查指定中断通道的活动位状态。
7. CPU和系统信息:
- `NVIC_GetCPUID` 返回CPUID,包含Cortex-M3内核的版本号和实现细节。
- `NVIC_SetVectorTable` 设置向量表的位置和偏移。
8. 复位操作:
- `NVIC_GenerateSystemReset` 引发系统复位。
- `NVIC_GenerateCoreReset` 引发内核(内核+NVIC)复位。
9. 低功耗模式配置:
- `NVIC_SystemLPConfig` 用于配置系统进入低功耗模式的条件。
10. 系统处理程序管理:
- `NVIC_SystemHandlerConfig` 用于启用或禁用特定的系统处理程序。
- `NVIC_SystemHandlerPriorityConfig` 设置系统处理程序的优先级。
- `NVIC_GetSystemHandlerPendingBitStatus` 检查系统处理程序的待处理位状态。
- `NVIC_SetSystemHandlerPendingBit` 设置系统处理程序的待处理位。
- `NVIC_ClearSystemHandlerPendingBit` 清除系统处理程序的待处理位。
- `NVIC_GetSystemHandlerActiveBitStatus` 检查系统处理程序的活动位状态。
11. 故障处理:
- `NVIC_GetFaultHandlerSources` 返回表示出错的系统处理程序源。
- `NVIC_GetFaultAddress` 返回导致错误的系统处理程序所在位置的地址。
该固件库提供了一个标准的API(Application Programming Interface),使得开发者能够方便地与NVIC交互,同时提供了错误检测机制,增强了软件的健壮性。虽然库代码是通用的,可能不是最优的代码大小和执行速度,但对于大多数应用来说,直接使用库函数即可满足需求。对于有特殊要求的应用,开发者可以参考库函数进行定制优化。
2024-01-09 上传
2011-10-27 上传
114 浏览量
点击了解资源详情
2022-11-17 上传
2024-01-01 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
李_涛
- 粉丝: 56
- 资源: 3867
最新资源
- Aspose资源包:转PDF无水印学习工具
- Go语言控制台输入输出操作教程
- 红外遥控报警器原理及应用详解下载
- 控制卷筒纸侧面位置的先进装置技术解析
- 易语言加解密例程源码详解与实践
- SpringMVC客户管理系统:Hibernate与Bootstrap集成实践
- 深入理解JavaScript Set与WeakSet的使用
- 深入解析接收存储及发送装置的广播技术方法
- zyString模块1.0源码公开-易语言编程利器
- Android记分板UI设计:SimpleScoreboard的简洁与高效
- 量子网格列设置存储组件:开源解决方案
- 全面技术源码合集:CcVita Php Check v1.1
- 中军创易语言抢购软件:付款功能解析
- Python手动实现图像滤波教程
- MATLAB源代码实现基于DFT的量子传输分析
- 开源程序Hukoch.exe:简化食谱管理与导入功能