第7章 CMSIS架构与STM32标准外设库.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* Embedded System Development 嵌入式系统与应用 第7章 CMSIS架构与STM32标准外设库 7.1 CMSIS简介 7.2 C/C++项目建立与调试 7.3 CM7的启动文件解析 7.4 STM32标准外设库 7.1 CMSIS简介 为解决不同厂商的Cortex微控制器软件的兼容性问题,ARM与芯片厂商制定了Cortex微控制器软件接口标准CMSIS (Cortex MicroController Software Interface Standard)。 是Cortex-M处理器系列的与供应商无关的硬件抽象层,可以为处理器和外设实现一致且简单的软件接口。 1、基于CMSIS应用程序的架构 中间件 CMSIS层 内核访问函数、外设寄存器与中断向量定义 MCU层 用户层 RTOS、中间件层 外设函数库 2、CMSIS包含的主要组件: CMSIS-CORE库: 访问内核及其设备、寄存器、内核外设函数,如ARM提供core_cm3.h、 core_cm3.c等core_前缀的文件; 片上外设寄存器与中断定义,如由芯片生产商提供device.h、system_device.c等文件; CMSIS-DSP库:包括向量运算、矩阵计算、复杂运算、筛选函数、控制函数、PID 控制器、傅里叶变换和很多其他常用的 DSP 算法。有C源代码允许修改。 CMSIS-RTOS API库:用于线程控制、资源和时间管理的实时操作系统的标准化编程接口。 CMSIS-SVD库:系统视图描述 (SVD) 文件以基于格式化的 XML提供了外设信息和其他设备参数。 编译器+微控制器专用启动文件startup_device.s。 3、CMSIS的作用 CMSIS层起着承上启下的作用: 对硬件寄存器层进行统一实现、统一定义; 向上层的操作系统及中间件接口层和应用层提供接口,简化应用程序开发难度。 CMSIS可实现与处理器和外设之间的一致且简单的软件接口,从而简化软件的重用,缩短微控制器开发人员新手的学习过程,并缩短新设备的上市时间。 ARM公司提供的CMSIS组件函数库、芯片厂商提供的外设函数库都是参照此标准设计的。 device HAL(Hardware Abstraction Layer 硬件抽象层)芯片厂商的标准外设函数库。 7.2 C/C++项目建立与调试 当前的嵌入式应用程序开发,使用C/C++语言成了绝大部分场合的最佳选择。 那么main函数成了理所当然的起点。 微控制器上电后,是如何寻找到并执行main函数的呢? 每一种微控制器都必须有启动文件(Bootloader),负责执行微控制器从“复位”到“开始执行main函数”,这段时间称为启动过程,进行所必须的工作。 芯片公司都提供了各种芯片的启动文件,开发人员可以方便地引用启动文件直接进行C/C++应用程序的开发。 Cortex-M3规定,起始地址存放主堆栈指针初值,下一地址存放复位中断服务程序入口地址即PC复位初值。 所以芯片复位后会自动取出复位中断入口向量给PC,执行复位中断服务程序。 C/C++项目建立与调试 第一步:新建工程,芯片选择,以Cortex M7核为例: C/C++项目建立与调试 第二步,选择CMSIS的接口软件组件:CORE内核接口库、DSP信号处理算法库(可选)、实时操作系统Keil RTX(可选)、Device的Startup启动文件,编译时自动添加其他用的库文件。 C/C++项目建立与调试 第三步:在Source Group 1中添加C语言源程序即可。 #define uint32 unsigned int #define N 10 uint32 sum; // 计算1+2+3+...+N的值。 int main(void) { uint32 i; sum = 0; for(i=0; i=N; i++) { sum += i; } } C/C++项目建立与调试 第四步:编译、链接、调试类似于汇编程序。 注意:Project窗口加载的库文件 RTX_前缀的文件为Keil RTX实时操作系统相关文件。 stdin.h 头文件是ANSI C 文件,独立于处理器之外,类似熟知的C语言头文件stdio.h文件。 core_前缀文件核内设备访问函数层,进入内核的接口。 ARMCM7.h定义寄存器地址、寄存器数据结构、中断向量表。 system_ ARMCM7.c /.h 含两个函数:系统初始化函数SystemInit、__main 函数; startup_ARMCM7.s 系统启动文件。 7.3 CM7的启动文件解析 打开startup_ARMCM7.s启动文件,前面注释部分为版权信息,

文档评论(0)

339910001 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档