OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 关于CMSIS和ST core_cm3.h的问题

共5条 1/1 1 跳转至

关于CMSIS和ST core_cm3.h的问题

高工
2013-12-02 14:56:04    评分

    先描述下我的问题:欲将之前的散列文件移植到同一个工程中去,于是建立了一个新的IAR工程,再将有关的函数添加到工程中之后,进行编译去除BUG。

遇到的第一个问题是:

"__IO"未定义和"uint32_t"与标准C的stdio.h文件中不相符的问题,这个是老问题了,之前由于IAR的升级后软件环境自动集成了CMSIS软件标准的架构,使得无需再次添加core_cm3.c和core_cm3.h文件。

【在core_cm3的文件中定义了访问Cortex-M3内核及其设备:NVIC,SysTick等以及访问Cortex-M3的CPU寄存器和内核外设的函数。在STM32F10x.h中这个文件包含了STM32F10x全系列所有外设寄存器的定义(寄存器的基地址和布局)、位定义、中断向量表、存储空间的地址映射等。】

经过了一系列的周折之后发现在工程指定的STM32F10x.h的478行丢失了#include “core_cm3.h”的头文件包含。于是重新添加编译(此时用的是ST库的Core_cm3.h文件

,预定义路径未修改)。


编译报错:依旧是定义不符,此时先到了软件集成CMSIS的问题,在IAR配置中将路径中的core_cm3.h的路径去除。再次编译,发现找不到头文件core_cm3.h的路径。

为方便百度,现把错误贴出:

Error[Pe065]: expected a ";" F:\DBR_csy_copy\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h 497

Error[Pe020]: identifier "__I" is undefined F:\DBR_csy_copy\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h 499

Error[Pe256]: invalid redeclaration of type name "int32_t" (declared at line 26 of "D:\Program Files (x86)\IAR Systems\Embedded  F:\DBR_csy_copy\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h 499

Workbench 6.0\arm\inc\c\stdint.h")

Error[Pe065]: expected a ";" F:\DBR_csy_copy\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h 499




关键词: CMSIS     core_cm3.h    

高工
2013-12-02 14:58:32    评分
2楼

    标准外设库的第一部分是CMSIS 和STM32F10x_StdPeriph_Driver,CMSIS 是独立于供应商的Cortex-M 处理器系列硬件抽象层,为芯片厂商和中间件供应商提供了简单的处理器软件接口,简化了软件复用工作,降低了Cortex-M 上操作系统的移植难度,并减少了新入门的微控制器开发者的学习曲线和新产品的上市时间。STM32F10x_StdPeriph_Driver则包括了分别对应包括了所有外设对应驱动函数,这些驱动函数均使用C语言编写,并提供了统一的易于调用的函数接口,供开发者使用。

    基于CMSIS标准的软件架构

    对于ARM公司来说,一个ARM内核往往会授权给多个厂家,生产种类繁多的产品,如果没有一个通用的软件接口标准,那么当开发者在使用不同厂家的芯片时将极大的增加了软件开发成本,因此,ARM与Atmel、IAR、Keil、hami- nary Micro、Micrium、NXP、SEGGER和ST等诸多芯片和软件厂商合作,将所有Cortex芯片厂商产品的软件接口标准化,制定了CMSIS 标准。此举意在降低软件开发成本,尤其针对新设备项目开发,或者将已有软件移植到其他芯片厂商提供的基于Cortex处理器的微控制器的情况。有了该标准,芯片厂商就能够将他们的资源专注于产品外设特性的差异化,并且消除对微控制器进行编程时需要维持的不同的、互相不兼容的标准的需求,从而达到降低开发成本的目的。

    基于CMSIS标准的软件架构主要分为以下4层:用户应用层、操作系统及中间件接口层、CMSIS层、硬件寄存器层。其中CMSIS层起着承上启下的作用:一方面该层对硬件寄存器层进行统一实现,屏蔽了不同厂商对Cortex-M系列微处理器核内外设寄存器的不同定义;另一方面又向上层的操作系统及中间件接口层和应用层提供接口,简化了应用程序开发难度,使开发人员能够在完全透明的情况下进行应用程序开发。也正是如此,CMSIS层的实现相对复杂。


院士
2013-12-03 10:20:36    评分
3楼

问题整理的精华


高工
2013-12-03 11:37:26    评分
4楼
谢老大支持

专家
2013-12-07 15:08:00    评分
5楼
这个问题对于新手来说,是一个很头痛的问题。

共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]