STM32固件库V3.5 在Keil MDK环境下使用方法

发布者:NanoScribe最新更新时间:2017-11-02 来源: eefocus关键字:STM32  固件库  Keil  MDK环境 手机看文章 扫描二维码
随时随地手机看文章

简介

    写这篇教程主要是和大家分享使用STM32的基本方法,也是给自己学习过程的总结、记录和备忘,避免重复学习之前明白但又忘记的知识和操作。我现在也是刚开始接触学习STM32,我是在STM32的固件库V3基础上进行学习。在这里我和大家分享一下使用V3.x库的方法,希望大家喜欢,如有错误请指出。

    这篇教程分以下几个方面,一:建立工程,设置工程属性。二:建立条理清晰的GROUP;三:使用JLINK仿真调试。下面就分别逐个说明。

一、新建MDK工程

    1、首先,打开MDK软件,再点击Project->New uVision Project…,如下图所示:

[转载]STM32固件库V3.5 <wbr>在Keil <wbr>MDK环境下使用方法

弹出如下对话框:

[转载]STM32固件库V3.5 <wbr>在Keil <wbr>MDK环境下使用方法

    新建一个文件夹MDK工程,然后把工程名字设为test,点击保存。弹出选择器件的对话框,

我们使用的是stm32单片机,所以选择STMicroelectronics下面的器件,如STM32F107VCT6,如图所示:

[转载]STM32固件库V3.5 <wbr>在Keil <wbr>MDK环境下使用方法

点击OK,MDK会弹出一个对话框,如图所示:问是否加载启动代码到当前工程下面,

[转载]STM32固件库V3.5 <wbr>在Keil <wbr>MDK环境下使用方法

如果选择是,则这个启动代码是旧版本库的启动代码,新版本的启动代码和这个不同,需要自己添加。在这里我们使用的是新版本的库,所以点击否,自己添加启动代码。

    启动代码是一段和硬件相关的汇编代码,是必不可少的!这个代码具体如何工作,感兴趣可以研究一下,现在可以不必关心它。

    2、接下来我们需要对工程进行一些设置。

    在工程区,右键点击Target1,选择Options for Target‘Target1’ 如图所示:

[转载]STM32固件库V3.5 <wbr>在Keil <wbr>MDK环境下使用方法

弹出如下窗口,选择Output标签,设置目标文件的生成路径及其他相关参数。

 [转载]STM32固件库V3.5 <wbr>在Keil <wbr>MDK环境下使用方法

如图点击Select Folder for Objects 在弹出的窗口中点空白处新建“Obj”文件夹,然后双击“Obj” 文件夹,如图中所示的Path后,点击OK.

点击Listing标签,新建“list”文件夹,设置链接文件的生成路径,及相关参数。如图所示:

[转载]STM32固件库V3.5 <wbr>在Keil <wbr>MDK环境下使用方法

    【友情提示:Obj和list这两个文件夹会保存Keil编译连接过程中产生的一些文件,虽然是一个不起眼的细节但是也请大家关注,不然在工程目录下面“邋遢”的很,所以强烈建议创建这两个文件夹!】

    点击Debug标签,选择使用的仿真器,我们使用JLINK V8进行仿真调试,对应的,在此选择Cortex-M/R J-LINK/J-Trace。Cortex-M/R J-LINK/J-Trace前的Use要选中,否则J-LINK调试会出问题。如图所示:

[转载]STM32固件库V3.5 <wbr>在Keil <wbr>MDK环境下使用方法

点击右侧的Setting,配置JLINK下载参数,主要是选择目标处理器系列,添加目标芯片对应的烧写算法。

[转载]STM32固件库V3.5 <wbr>在Keil <wbr>MDK环境下使用方法

图中要勾选Reset and Run 选项,如果Flash Download 算法不对,请点击Add 重新添加Flash算法。

    点击Utilities,进行公共参数设置

[转载]STM32固件库V3.5 <wbr>在Keil <wbr>MDK环境下使用方法

至此,我们已经完成了一个RVMDK工程参数设置。

二、介绍MDK工程的文件管理方面的功能。

    我们在使用ST标准的固件库进行代码设计时,一个工程内可能会包含很多的库文件,因此对文件进行管理就非常的必要。

    如下图所示,右键点击Target1,选择Manage Components,进入分类文件管理设置。

[转载]STM32固件库V3.5 <wbr>在Keil <wbr>MDK环境下使用方法

在弹出的选择框中,可以设置工程名,增加、删减文件夹。以及在某个文件夹内添加删除文件。

[转载]STM32固件库V3.5 <wbr>在Keil <wbr>MDK环境下使用方法

在完成以上操作后,一个MDK工程就设置完成了,只需要依据实际应用要求编写相关代码即可。

   【友情提示:Groups下的文件夹不是实际存在的(如果这里的名字跟实际工程中的文件夹同名也不要以为它是真实的,否则不同名时,你在硬盘中是找不到它们的),只是为了工程管理建立的。】   

    我个人觉得标准的库文件“埋”的太深,使用起来有点不方便,所以我一般对这些文件进行一些整理,把相关文件放在一起,并取上一个标准化的名字,这些文件夹的名字一般和原始固件库文件夹的名字相同,只是把需要的文件放在一起。一般在工程目录下面我会建立以下几个文件夹,如图所示。当然还会建立前面已经建立的两个很有用的文件夹(List和Obj)

自己建立的文件夹和库文件的对应关系:

StdPeriph_Driver文件夹内的内容与标准库保持一致。

    STM32F10x_StdPeriph_Lib_V3.5.0LibrariesSTM32F10x_StdPeriph_Driver

StartUp文件夹内的文件在库中的位置:

    STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportSTSTM32F10xStartUp

CMSIS文件夹内的文件在库中的位置:

    STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportSTSTM32F10x

        stm32f10x.h,system_stm32f10x.c, system_stm32f10x.h

    STM32F10x_StdPeriph_Lib_V3.5.0ibrariesCMSISCM3CoreSupport

        core_cm3.c, core_cm3.h

 [转载]STM32固件库V3.5 <wbr>在Keil <wbr>MDK环境下使用方法

    Groups文件夹的名称和工程文件夹的名称尽量保持一致,如上图所示。为每个Group添加同名文件夹下的源文件或者头文件,为了便于查看代码,我把源文件和头文件都添加进Group中(除StdPeriph_Driver),在这里注意过滤文件的类型。StdPeriph_Driver中只添加需要的源文件,例如建立一个LED闪烁的工程,那么这个工程除了进行必要的初始化之外,只需要包含GPIO的操作函数,当然需要使用GPIO就必须要使能GPIO的时钟,RCC是绝对少不了的。所以只需要包含misc.c,stm32f10x_gpio.c和stm32f10x_rcc.c。添加需要的文件之后,工程目录如图所示。

 [转载]STM32固件库V3.5 <wbr>在Keil <wbr>MDK环境下使用方法

现在重新说明一下一个工程建立的文件夹:

    MDK工程:内有List和Obj两个文件夹

    CMSIS:包含系统的内核文件

    StartUp:包含各种启动文件

    User:用户编写的应用文件

    StdPeriph_Driver:内有src和inc两个文件夹,是标准库提供的源文件和头文件。

 

    当然也有人直接将List和Obj两个文件夹放在User文件夹内,然后去掉MDK工程文件夹。这样也是可以的,看个人爱好了。我习惯将User文件夹独立出来不放List、Obj和**.uvproj等文件,只放自己编写的应用文件,这样当项目有很多应用文件的时候可以在User内建立src和inc两个文件夹存放源文件和头文件,使文件结构看起来更加清晰。


    需要说明的是,虽然在有些Group中包含了一些头文件,但是Keil在编译连接的时侯却不知道头文件在什么地方,所以一定要指定头文件的路径。

[转载]STM32固件库V3.5 <wbr>在Keil <wbr>MDK环境下使用方法
【 重要 】 指定的头文件为:..CMSIS;..StdPeriph_Driverinc;..User

【 重要 】两个重要的宏也一定要指定:USE_STDPERIPH_DRIVER,STM32F10X_MD

三、J-LINK仿真调试。

       【 强调 】:Debug标签,使用JLINK V8进行仿真调试,对应的Cortex-M/R J-LINK/J-Trace前的Use要选中,否则J-LINK调试会出问题。

       这部分我就不多说了,在实际硬件平台上多多练习吧,祝大家在学习过程中不断提高。

注:此文档参考了网上的一篇文章和神舟开发手册的部分内容。


关键字:STM32  固件库  Keil  MDK环境 引用地址:STM32固件库V3.5 在Keil MDK环境下使用方法

上一篇: STM32的简单的SD卡读写
下一篇:STM32的GPIO口工作的八种模式

推荐阅读最新更新时间:2024-03-16 15:42

stm32专题七:EXTI(二) 外部中断
EXTI外部中断的配置过程: 开启GPIO时钟,初始化要连接的GPIO端口为浮空输入(参考手册); 开启AFIO时钟; 设置IO口与中断线的映射关系,调用函数GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); 初始化EXTI,设置触发条件等; 初始化NVIC(注意,有几个中断就要写几次中断源); 编写中断服务函数; 常见的中断服务函数写法: void EXTI3_IRQHandler(void) { if(EXTI_GetITStatus(EXTI_Line3)!=RESET) //判断某个线上的中断是否发生 { // 中断逻辑…
[单片机]
STM32对你来说有什么好处
STM32是32位的单片机却只要八位单片机的价格,速度也是八位的好几倍。 更重要的是它作为ARM入门级的芯片比较容易掌握,网上资料也很多,很多人都在用。 STM32的IO端口有7个寄存器来控制,但是我们常用的就4个:CRL、CRH、IDR和ODR 。 端口配置低寄存器(GPIOx_CRL) 端口配置高寄存器(GPIOx_CRH) 端口输入数据寄存器(GPIOx_IDR) 端口输出数据寄存器(GPIOx_ODR) 其中CRL控制高8位的IO,CRH控制低8位的IO。这两个实质是一样的。 八种模式 对照A VR 来G PI Ox_CRL就相当于DDRx;GPIOx_ODR就相当于PORTx;GPIOx_ODR就相当于PIN
[单片机]
学<font color='red'>STM32</font>对你来说有什么好处
STM32上的外部中断
今天记录一下关于外部中断的知识点以及在32上外部中断的相关寄存器以及配置的流程。 一、原理介绍 首先,什么是中断 中断就是将正在做的事情停下来,先去完成另外一件事情,完成后继续回来做这件事。 比如:在吃饭的时候有电话打来,去接电话,打完电话后继续吃法。 在计算机科学中,中断(英语:Interrupt)是指处理器接收到来自硬件或软件的信号,提示发生了某个事件,应该被注意,这种情况就称为中断。 通常,在接收到来自外围硬件(相对于中央处理器和内存)的异步信号,或来自软件的同步信号之后,处理器将会进行相应的硬件/软件处理。发出这样的信号称为进行中断请求(interru
[单片机]
<font color='red'>STM32</font>上的外部中断
STM32再学习――启动流程分析
  我们写嵌入式程序,基本上采用C语言来编写,以main( )作为程序的入口。但实际上,mian()并不是最先要执行的,在这之前需要做一些基本的工作,如堆、栈的定义;main函数的复位连接等,这些工作就需要一个专门的启动程序来完成,由于需要做的工作内容不多,并且需要更直接的管理内存,一般采用汇编编写。   无论是STM32、ARM系列的单片机,还是简单的如51,PIC等,都以为上述原因,需要启动程序,只不过51,PIC等单片机的启动程序已经在相应的IDE编译、链接的时候隐含的编译了,故在写单片机程序的时候无需考虑。而STM32的启动有相应的启动文件,本文将采用KEIL MDK自带的启动文件STM32F10x.s进行分析。
[单片机]
智能家居控制系统设计方案
一、环境介绍 单片机采用:STM32F103C8T6 上网方式:采用ESP8266,也可以使用其他设备代替,只要支持TCP协议即可。比如:GSM模块、有线网卡等。 云平台: 采用中国移动OneNet. 也可以采用腾讯、阿里云、华为云、百度天工物接入、机智云等等。 前面文章有讲解。 协议: 采用MQTT协议 开发软件:keil5 二、包含的硬件与实物图介绍 1. 一个光敏电阻传感器 2. 一个DHT11温湿度传感器 3. 一个MQ-5 液化气/天然气/煤气监测传感器 4. 一个MQ-2 烟雾传感器 5. 3盏LED灯表示窗帘开关、空调开关、电视开关 6. 联网WIFI采用: ESP8266 7. 最小系统板: STM32F1
[单片机]
智能家居控制系统设计方案
关于在Bootloader模式下的应用程序下载
1.引言 STM32 MCU 在 bootloader 模式下,可以通过多种可用外设(USART、CAN、USB、I2C、SPI等)将程序下载到内部存储器中,详细内容可参考应用笔记 AN2606《STM32 microcontroller system memory boot mode》。本文档主要介绍利用 STLINK-V3SET 调试/编程工具的 I2C 接口将程序下载到 SDRAM 中并执行的方法。 2.问题描述 问题源自客户的实际需求,希望通过 I2C 接口将程序下载到 SRAM 中执行,进行芯片功能性测试。 3.问题分析与定位 关于在 Bootloader 模式下的应用程序下载,有多篇 LAT 可参考。例如《如何使用
[单片机]
关于在Bootloader模式下的应用程序下载
如何用STM32CubeIDE软件实现STM32外部中断
本文用STM32CubeIDE软件实现STM32外部中断实例。 新建工程 “File”-“New”-“STM32 Project”。 输入芯片型号STM32F103ZE。 选择相应封装,下一步。 填写项目名,选择工程位置,下一步。 配置时钟、调试模式 选择高速外部时钟。 HCLK总线时钟处输入72,回车,配置使用最高时钟频率。 调试模式选择串行,方便下载程序。 配置管脚外设 本实例中用到了LED1与KEY_LEFT,找到相应电路图。 可见LED1对应PC0管脚,低电平点亮。按键K1对应PE2管脚,低电平有效。 PC0配置为GPIO_Output,GPIO输出模式 PE2配置为GPIO_EX TI 2,GPIO中断线2。 对G
[单片机]
如何用STM32CubeIDE软件实现<font color='red'>STM32</font>外部中断
STM32单片机I/O的工作模式
最近有个朋友在设计低功耗设备,用的是STM32的主控,他知道我做过很多类似的超低功耗项目,于是向我咨询了一些问题,其中就包括I/O口的几种工作模式。今天我就详细的来总结一下这几种工作模式,让大家在以后的设计中知其然也知其所以然。 先说说GPIO 在聊这8种工作模式之前,我想先说一下GPIO的概念—通用输入输出GeneralPurposeInputOutput简称GPIO,就是芯片引脚可以通过它们输出高、低电平,也可以通过他们输入、读取引脚的电压、电平状态。 下面的8种工作模式我将围绕下图进行分析介绍,读懂这一张图大家基本就可以完全理解STM32的GPIO了。希望大家仔细的看一看。 四种不同的输出模式 推挽输出:该模式下引脚
[单片机]
<font color='red'>STM32</font>单片机I/O的工作模式
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved