cortex 微控制器软件接口标准( CMSIS )
简而言之: CMSIS 定义了一套 API,应用层代码调用这套API。微控制器厂商完成 API 的实现。
CMSIS 项目仍在不断更新,它开始是为了 cortex-M 微控制器的设备驱动库建立一致性,现在已经成为了 CMSIS-Core,其他的 CMSISI 项目也已经启动:
- CMSIS-Core(cortex-M 处理器支持)。应用程序或者中间件开发者用的一组 API,可以访问 cortex-M 处理器的特性,无需考虑使用的是何种微控制器或者工具链。CMSIS 目前支持 cortex-M0、cortex-M0+、cortex-M3 和 cortex-M4 处理器以及 SC00 和 SC300 等 SecureCore 产品。由于架构相同,cortex-M1 可以使用 cortex-M0 版本的 CMSIS
- CMSIS-DSP库。
- CMSIS-SVD。
- CMSIS-RTOS。定义了一套 OS 相关的 API,比如信号量、创建线程等。因为 freeRTOS 和 ucos 都有自己的一套 API,如果用 freeRTOS 或者 ucos 的 API 实现 CMSIS-RTOS 的 API,然后应用层代码都是调用 CMSIS-RTOS 的 API,这样就增强应用层代码的可移植性。
- CMSIS-DAP。
CMSISI-Core 所做的标准化:
1、处理器外设的标准化。比如嵌套向量中断控制器(NVIC)中的寄存器、系统控制块(SCB)中的多个可编程寄存器等
2、访问处理器特性的标准化函数。包括使用 NVIC 进行中断控制的多个函数以及访问处理器中特殊寄存器的函数。
3、操作特殊指令的标准化函数。cortex-M 处理器支持几个用于特殊目的的指令(例如等待中断WFI、用于进入休眠模式)。CMSIS 实现了一组函数,C 程序代码可以利用这些函数实现特殊指令。
4、系统异常处理的标准化命名。
5、系统初始化的标准函数。在应用程序开始前需要配置时钟电路和电源管理寄存器,在符合 CMSIS 的设备驱动库中,这些配置过程由 SystemInit() 实现。
6、描述时钟频率的标准化变量。
CMSIS-Core 的组织结构:
如何使用 CMSIS-Core
1、将源文件添加到工程中,包括:
- 设备相关、工具链相关的启动代码
- 设备相关的设备初始化代码(如 system_<device>.c)
- 对于 CMSIS-Core 库的 CMSIS 2.00 或者之前版本,为了访问内核寄存器,还需要将处理器相关的 C 程序文件(如 core_cm3.c)添加到工程中,从 CMSIS-Core 版本 2.10 开始就不再需要了
2、将头文件添加到搜索路径中
- 用于外设寄存器定义和中断分配定义的设备相关的头文件(如 <device>.h)
- 用于设备初始化代码的设备相关的头文件(如 system_<device>.h)
- 多个处理器相关的头文件(如 core_cm3.h、core_cm4.h,它们对于所有的微控制器供应商都是相同的)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
2016-06-28 125KHZ信号(低频唤醒)
2016-06-28 人体检测传感器