STM32F101xx/STM32F103xx固件库函数NVIC详解
需积分: 49 127 浏览量
更新于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 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
李_涛
- 粉丝: 55
- 资源: 3851
最新资源
- sicherheit_ws:安全概念讲习班
- Bregman Cookbook:此工具箱提供基于 Bregman Iterations 的信号/图像/3D 处理-matlab开发
- 下一个大学
- fccWebDesign:在此仓库内,有我为在线课程(在freeCodeCamp上进行的响应式Web设计认证)制作的项目
- dchr.host:端到端K8s CICD练习
- 4ampr-fj2021-paginas-web-semana-03:专业人士
- Accuinsight-1.0.36-py2.py3-none-any.whl.zip
- vicms:用于python-flask的迷你内容管理架构
- Atcoder
- Pure
- irawansyahh.github.io:我的个人网站
- ask:一种在 Node 或浏览器中构建 HTTP 请求的简单、可链接的方式
- Dark Crystals New Tab Game Theme-crx插件
- 库存-REST-API:REST APIのテスト
- JavascriptVerletAlgorithm
- antiwasm:Web程序集objdump