当前位置:首页 > 工业控制 > 工业控制
[导读]摘要:基于简化Codex-M核微控制器嵌入式软件的开发步骤,增强软件可移植性的目的,时微控制器软件接口标准(CMSIS)、ST公司标准外设库V3.5的文件结构、相互联系、功能作用进行了简要介绍,并以具有Cortex-M3内核的ST

摘要:基于简化Codex-M核微控制器嵌入式软件的开发步骤,增强软件可移植性的目的,时微控制器软件接口标准(CMSIS)、ST公司标准外设库V3.5的文件结构、相互联系、功能作用进行了简要介绍,并以具有Cortex-M3内核的STM32F103VET6为例,给出了IAR FOR ARM6.30编程环境下的开发步骤。结合具体应用,本文对数据端口、中断进行设置,缩短了开发时间,提高了代码效率。
关键词:Cortex-M;微控制器;外设库;CMSIS

    Stm32f10x系列微控制器具有Cortex-M3内核结构,它集成了CM3core的中心处理器内核和先进的系统外设,实现了内置的中断控制、存储器保护,以及系统的调试和跟踪功能。在进行嵌入式系统设计时,控制软件首先需要对微控制器的启动、系统时钟、存储器映射、中断向量、异常处理等进行设置,增加了控制软件的前期开发时间,更加造成了初学者的难度。为了缩短开发时间、提高软件的可移植性,同时降低开发成本,ST公司提供了标准外设驱动库,该库集成了CMSIS文件及微控制器所有外设驱动函数,由于屏蔽了不同型号微控制器之间的差异,用户文件仅需调用相应的库函数便可完成系统配置,简化了开发流程,降低了开发难度。

1 CMSIS文件结构
    CMSIS为Codex微控制器软件接口标准,提供了独立于Cortex-M处理器的外设、实时操作系统、中间组件的通用接口方法,解决了软件组件应用于不同Cortex核微控制器时所带来的难题,简化了软件复用,降低了Codex-M上操作系统的移植难度。


    CMSIS的文件结构如图1所示(以Codex-M3为例),其中stdint.h包括对8位、16位、32位等类型指示符的定义,主要用来屏蔽不同编译器之前的差异。core_cm3.h和core_cm3.c中包括Cortex_M3核的全局变量声明和定义,并定义一些静态功能函数。system_stm32.h和system_ stm 32.c是不同芯片厂商定义的系统初始化函数SystemInit(),以及一些指示时钟的变量。Stm32f10x.h是提供给应用程序的头文件,包含core _cm3.h和system_stm32.h,定义了与特定芯片厂商相关的寄存器以及各中断异常号,并可定制M3核中的特殊设备,如MCU、中断优先级位数以及SysTick时钟配置。虽然CMSIS提供的文件很多,但在应用程序中只需包含h头文件。

2 标准外设库简介
    ST官方提供的标准外设库文件包括标准外设库文件、标准外设驱动例程、各种开发环境下的模板示例、评估板专用驱动等几部分,其中,CMSIS和STM32F10x_StdPeriph_Driver是最重要的部分。STM32F10x_StdPeriph_Driver则包括了微控制器所有外设对应驱动函数,这些驱动函数均使用C语言编写,并提供了统一的函数调用接口。Project文件夹中则包括了ST官方的所有例程和基于不同编译器的项目模板,这些例程是学习和使用STM32的重要参考。Utilities包含了相关评估板的示例程序和驱动函数,供使用官方评估板的开发者使用,其中很多驱动函数同样可以作为学习的重要参考。


    标准外设库文件之间的关系如图2所示,每一个标准外设驱动包括源文件stm32f10x_PPP.C和头文件stm32f10x_ppp.h两个文件(PPP表示外设,如GPIO、EXTI、I2C等),源文件中包含了相应外设的所有驱动函数,在misc.c文件中定义了CMSIS功能的一些附加函数,如对NVIC的配置等。STM32f10x.h为CMSIS Codex-M3设备外设访问层头文件,包含了STM32F10x全系列所有外设寄存器的定义(寄存器的基地址和布局)、位定义、中断向量表、存储空间的地址映射,以及是否使用标准外设库设置等。System_stm32f10x.C为CMSIS Cortex-M3设备外设访问层系统文件,完成系统初始化及时钟配置。Stm32f10x_conf.h为标准外设驱动配置文件,通过更改包含的外设头文件来选择所使用的外设,在新建程序和进行功能变更之前应当首先修改对应的配置。Stm32f10x_it.c为外设中断函数文件,通过在相应位置加入中断程序代码执行相应中断操作,在实际应用中,中断函数也可以设置在项目主程序文件中,但中断函数名必须正确。

3 基于标准外设库的实现步骤
    在IAR FOR ARM6.30编程环境下,采用V3.50的标准外设库,开发步骤如下:
    1)首先创建一能够象征项目含义的文件夹(如touch),并在该文件夹下创建名为EVARM和Library的文件夹;
    2)STM32F10x_StdPeriph_Lib_V3.5.0中STM32F10x_StdPeriph_Driver和CMSIS文件夹拷贝到touch目录下;
    3)将\STM32F10x_StdPeriph_Lib_V350\Project\STM32F10x_StdPeriph_Template下的main.c、stm32f10x_confh、stm32f10x_it.c、stm32f10x_it.h拷贝到touch目录下;
    4)将\STM32F10x_StdPeriph_Lib_V350\Project\STM32F10x_StdPeriph_Template\EWARM下的stm32f10x_flashcfstm32f10x_flash_ex tsram.icf、stm32f10x_nor.icf、stm32f10x_ram.icf拷贝至/touch/EVARM;
    5)打开IAR Embedded Workbench IDE,创建一个新的workspace,而后按照模板创建一个新空白项目;
    6)为项目添加工作组CMSIS、StdPeriph_Driver、EVARM、User、Doc,如图3所示;


    7)向各工作组添加文件,将core_cm3.c、system_stm32f10x.c添加到CMSIS;将startup_stm32f10x_hd.s添加到EVARM;将misc.c、stm32f10x_rcc.c及所需其它外设驱动源文件添加到StdPeriph_Driver;将main.c、stm32f10x_it.c添加到User;
    8)在Project→options→C/C++Compiler→Preprocessor中设置、添加编译搜索路径,最好包括所有项目中所调用文件的路径,否则需要在源文件中给出被调文件的完整路径;
    9)在Project→options→Ceneral Options→Target标签页选择相应器件;
    10)勾选Project→Options→General Options→Library Configuration→Use CMSIS选项;
    11)在stm32f10x.h文件中配置控制器启动文件,根据所选用产品系列,去掉相应注释即可,如令#defineSTM32F10X_HD有意义;同时,去掉/*#define USE_STDPERIPH_DRIVER*/的注释,表示使用标准外设库;
    12)选择使用HSI或HSE,system_stm32f10x.c中相关程序代码段如下:

    
    在不进行任何改动情况下,系统默认使用HIS作为系统时钟,如使用HSE作为系统时钟,则需将/*#define SYSCLK_FREQ_HSE HSE_VALU E*/的注释去掉,屏蔽HSI频率定义项,同时根据所用外部晶振频率在stm32f10x.h中重新定义HSE_VALUE的数值。
    13)对main.c文件内容进行修改,但须保留#include“stm32f10x.h”,编译、连接项目文件后生成可执行代码;
    14)在仿真器编译环境下,进行系统调试。

4 应用实例
    采用STM32F103VET6微控制器实现LCD显示器的各种操作,LCD显示器采用北京宁和公司的480×234TFT256色显示器,配套控制器为NHC_ 36。微控制器PD口高8位作为数据口,PB15、PB14、PC6、PC7、PC8分别作为A0、WR、A1、CS、RD的控制信号,当PBO引脚电平在下降沿时触发外部中断线0中断,在显示器上绘制一条直线。建立项目步骤如3所述,将中断函数设置在主程序文件中,使用HSE为系统时钟,本文且未对LCD操作函数进行说明,仅给出利用标准外设库进行端口及中断设置的代码。
    微控制器I/O口配置程序代码如下:

    为了将PB0配置为中断输入且中断有效,须开启PB口I/O时钟及AFIO时钟,中断配置代码如下:


    在主程序中设置循环状态以等待中断,当PB0口由高电平跳变为低电平时,触发中断,调用外部中断线0中断函数。具体应用中,如果有多个中断源可以触发该外部中断,还须判断中断标志位以确定执行何种操作。

5 结束语
    文中介绍了ST公司V3.50标准外设库的文件架构和相互联系,基于IAR FOR ARM6.30开发环境给出了参考编程步骤,并根据实例设计了具体的程序代码。采用标准外设库进行嵌入式软件开发,无需太多了解微处理器底层硬件结构,只要具有C/C++软件基础,根据本文介绍的参考步骤,便可开发出高效直观的程序代码。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭