在Keil MDK环境下使用STM32 V3.4库

合集下载

STM32固件库使用手册

STM32固件库使用手册

STM32固件库使用手册随着嵌入式系统在各个领域的越来越广泛的应用,各种芯片和处理器的类型也逐渐增多。

在这些芯片中,ST公司的STM32系列尤其受到了大量开发者们的追捧,其功能强大、性能优越、可编程性高等优点使得其成为了嵌入式系统设计的首选。

在STM32系列芯片中,固件库是其重要的组成部分,提供了独立的硬件抽象层和应用程序接口。

这些功能丰富的API库可用于快速搭建程序架构,以及简便地实现一些常见的操作。

节省开发人员大量的开发时间。

对于初学者,欲了解STM32芯片开发的话,学习STM32固件库的使用是第一步,因此在这里我将分享一些该库的基础内容。

一、固件库的启用在使用STM32固件库之前,我们需要先了解如何启用它。

首先,在安装Keil或IAR等IDE环境后,我们需要将官方提供的固件库下载到本地,并将其解压。

解压后,将库文件夹中的 inc 和src 文件夹添加至Keil或IAR的相关项目目录中,从而ermöglichen 制定了。

接下来,在IDE环境中选择对应的芯片,我们需要设置相关的固件库路径。

具体来说,我们打开Keil或IAR的属性管理器,设置 C/C++ -> Directories 中的 Include Paths 为stm32f10x_stdPeriph_driver/inc,设置配置管理器中的包含路径为上述inc文件夹的全路径。

这样就可以启用了 STM32 固件库,开始进行我们的嵌入式系统开发。

二、基础应用程序在信息时代的今天,眼前各种各样的计算机系统和程序都涌现在眼前。

但是无论是最基础的窗口显示,还是复杂的人脸识别技术,都需要一些基本的芯片和系统支持,而 STM32 芯片就是这一系统之一。

其基础应用程序包括了:GPIO 端口配置:GPIO(PIN)模式配置、输出配置、输入配置。

其中GPIO(PIN)模式配置是对GPIO端口输出模式进行设置,包括推挽、开漏等多种模式,GPIO口的作用是用于输入/输出操作。

Keil uVision5中建Stm32工程(教程)

Keil uVision5中建Stm32工程(教程)

Keil uVision5中建Stm32工程教程本教程中,介绍在Keil uVision5中建STM32工程的两种方法:一种是利用固件库建立工程,另一种是通过建工程时软件给的引导直接完成。

软件的安装和破解网上教程很多,这里就不赘述了,直接从建立工程开始。

首先介绍第一种:利用固件库建立STM32工程1.在你电脑中想要建立工程的地方先新建一个文件夹。

这里我在E盘下新建了一个文件夹,命名为STM32Project。

2.在新建的STM32Project文件夹下再新建一个文件夹,命名为STM32固件库,然后把事先下载的固件库放在文件夹中,方便查找进行复制。

3.打开Keil uVision5软件,在软件的菜单栏中找到Project——>New uVisionProject…,单击,找到上述新建的文件夹,对新建的工程进行命名,这里命名为test,点击保存。

4.此时软件弹出一个选择芯片的窗口:“Select Device for Target ‘Target 1’…”,在左侧的芯片库中找到你要使用的STM32系列的芯片,这里选择的是STMicroelectronics——>STM32F1 Series——>STM32F103——>STM32F103RC,单击OK。

5.此时弹出一个窗口:“Manage Run-Time Environment”,这个窗口在第二个建工程的方法中会使用到,这里先直接点击OK,跳过。

6.现在开始添加相关文件。

在STM32Project文件夹中新建以下四个文件夹:user:放置用户自己编写的相关文件CMSIS:放置与内核相关的文件startup:放置启动单片机的汇编文件driver:放置外设操作的驱动文件再向这四个文件夹中添加固件库中的相关文件:user:STM32Project\STM32固件库\STM32F10x_StdPeriph_Lib_V3.5.0 \Project\STM32F10x_StdPeriph_Template中的stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h一共3个文件复制粘贴到user文件夹中,同时新建一个文本文档,重命名为main.c。

Jlink在MDK下使用Cortex-m3-Jlink模式开发STM32的说明

Jlink在MDK下使用Cortex-m3-Jlink模式开发STM32的说明

Jlink V7在MDK下使用Cortex-M3-Jlink模式开发STM32的说明开发环境:STM32F103RB(128K Flash 20K RAM)+MDK3.50+JLINK V7(v4.04)mdk3.50 新增一种cortex-ms-Jlink调试模式,可以很好地支持Jlink、Jlink-SWD调试,无RDI需要按复位的缺点。

烧写速度比RDI慢一些。

1 软件安装1.1 安装Segger jlink V4.04驱动安装在c:\Program Files\SEGGER\JLinkARM_V404插上jlink V7,可自动安装上USB驱动。

执行J-link command,查看版本。

如果已经连上目标板,可显示目标处理器信息。

如果Jlink V7 Firmware版本较低,它会自动升级到新版本Firmware。

1.2 MDK3.50安装安装到c:\Keil中,使用Keil_Lic.exe生成合适的license码并注册。

其中c:\keil\ARM\Segger有V3.90d的Jlink驱动1.3 驱动修正1. 备份c:\keil\ARM\Segger\*.*2. 拷贝c:\Program Files\SEGGER\JLinkARM_V404\ JLinkRDI.dllJLinkARM.dllJlink.exe到c:\keil\ARM\Segger\ 目录,覆盖原文件目的是4.04版包含STM32 FLASH程序,3.90则没有。

JLinkARM.dll可以替换(不同与mdk3.40)。

3. .建立MDK工程(1)选择STM32F103RB 并加入STARTUP文件,这一步就不用细说了吧,用过keil的人都会。

(2)工程中选择Options for target ‘xxx’,选择器件STM32F103RB(3) 配置Jlink:按照下图配置即可点击Settings按钮,选Debug页选择USB接口,注意软件缺省是TCP/IP模式,需要改为USB。

STM32在Keil MDK环境下RAM上代码调试

STM32在Keil MDK环境下RAM上代码调试

STM32 在Keil MDK 环境下RAM 上代码调试
自从51 后就没碰过了Keil 了~从昨天下午又开始再次使用Keil MDK~不过
这次是for ARM 的~前几天的STM32W108 调试统统是在IAR 上进行的~刚在STM32F103ZE-EK 上进行了一个例程的调试~就发现原来更有方法在RAM 中
进行代码调试的配置~以前在IAR 中知道有个iar- cfg.icf 文件是关于存储分配的~貌似也可以如此~不过没实际操作过不敢下结论~索性就在Keil 下来了个尝
试~比较坎坷~也学到不少东西~
废话少说,进入正题~(Keil4 下的画面~这个配置的方法跟是3 一样~)
步骤与图示:
1.先给个CPU 的数据,需要注意的是三个红圈的地方,架构,型号,Flash
和SRAM 大小~如图1
图1
2.Target 的设置
1)勾上可以用微库,减小生成代码的大小
2,3)分别定义ROM 区位置及大小和RAM 区位置和大小。

在这里需要说
明的是,Cortex-M3 的架构有4G 的寻址空间,而Flash 的起始地址在
0x08000000,RAM 地址在0x20000000,在这里进行了第一次相关地址的更改~ 如图2
0x1000 为4K~这里的0xc000 则为48K 的ROM 分配~RAM 的为16K~基本上移植个uCOS-II 都够用了~。

【自写】如何使用STM32_V3.5版本固件库在Keil4下建立工程模板

【自写】如何使用STM32_V3.5版本固件库在Keil4下建立工程模板

如何使用STM32_V3.5版本固件库在Keil4下建立工程模板By 呼延靖国准备工作如下:1.下载STM32F10x_StdPeriph_Lib_V3.5.0固件库。

2.下载并安装好Keil uVision V4.10(MDK4)开始:1.首先解压STM32F10x_StdPeriph_Lib_V3.5.0固件库。

PS:保留一个备份,你懂的。

解压得到如图1所示的几个文件夹。

其中_htmresc文件夹:里面是ST的Logo图片,没有多大用,可以删除。

Libraries文件夹:是比较重要的文件包含STM32的系统文件和大量头文件,即库文件。

Project文件夹:里面为STM32F10x的例程和工程模板。

Keil对应的就是 MDK-ARM 文件下的工程模板。

也可以利用这个工程模板为原型建立自己的工程模板本文不用此法。

Utilities文件夹:里面有一些实用程序,也没多大用,可删除。

Release_Notes.html:版本注视,可删除。

stm32f10x_stdperiph_lib_um.chm:帮助文件,你懂的。

2.为了项目程序中的各部分条理清晰,我们建议工程文件夹时对其子目录子下归类建立子文件夹,例建立一个工程文件夹My Project,在其下在创建五个子文件夹如图2所示:其中:CMSIS文件夹:此文件夹从STM32F10x_StdPeriph_Lib_V3.5.0固件库中的CMSIS文件夹直接复制过来。

Libraries文件夹:此文件夹从STM32F10x_StdPeriph_Lib_V3.5.0固件库中的Libraries文件夹复制过来。

只保留当中的inc和src文件夹。

即只包含头文件。

Startup文件夹:此文件夹从CMSIS\CM3\DeviceSupport\ST\STM32F10x\Startup目录下直接将Startup文件剪切出来。

其中放置的是启动代码,具体的代码根据所用芯片的容量选择,我们用的STM32F103C8为中等容量芯片,故选择其中的startup_stm32f10x_md.s启动代码,其他不用的可以删除User文件夹:User文件夹为用户的应用程序,其中包括main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h四个文件,这四个文件可从V3.5.0固件库Project\STM32F10x_StdPeriph_Template目录下复制过来,当然main.c文件中的内容可删除。

使用Keil MDK以及标准外设库创建STM32工程

使用Keil MDK以及标准外设库创建STM32工程

使用Keil MDK以及标准外设库创建STM32工程1.1 使用Keil MDK以及标准外设库创建STM32工程通过上一节对标准外设库的介绍,想必各位读者对标准外设库已经有了基本的认识,然而由于标准外设库中文件众多,很多初学者在开始很长一段时间内甚至都无法完全自己建立一个工程,很多人只是依赖标准外设库或给定的工程模板。

本节就介绍怎样利用Keil MDK 开发环境和标准外设库来搭建自己的工程。

建立一个基于标准外设库其实并不复杂,网络上也有很多关于怎样在Keil MDK下建立工程的教程,方法也各异,本节所介绍的方法本着少改动、便于使用、方便更换器件等原则,给大家介绍怎样在Keil中创建一个工程,并以一个最简单的例子来说明怎样下载和调试程序。

1.1.1 开发工具与开发环境1. 软件版本本节所使用Keil MDK 为目前的最新版V4.21,具体版本信息如图5-6所示。

其他版本差别不大,读者可以根据自己使用的版本进行操作或者从Keil的官网下载新版本。

使用的标准外设库为目前最新的V3.5版本。

使用的开发调试工具为JLINK-V8,使用的驱动版本为V4.08l。

图5-6 MDK详细版本信息2. 建立工程目录首先先建立一个用于存放工程的文件夹,此处命名为STM32,在文件夹下分别建立LIB、USER、MDK三个文件夹,分别用于存放标准外设库文件、用户程序文件、工程目录。

在MDK 文件夹下建立List、Obj两个文件夹,分别用于存放在编译过程中产生的临时文件和输出文件。

接下来拷贝标准外设库和相应的文件到工程目录中,首先拷贝STM32F10x_StdPeriph_Li b_V3.5.0\Libraries文件夹下的两个文件夹CMSIS和STM32F10x_StdPeriph_Driver到刚刚新建的STM32\LIB目录下,接下来拷贝用户编写程序的程序文件,此文件可以从标准外设库自带的例程中拷贝,这里从STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Exam ples\ADC\3ADCs_DMA目录下拷贝main.c、stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it. h四个文件,这四个文件是在编程的时候用户往往需要根据实际需求进行修改的。

KEIL(MDK)同时兼容STM32和51系列单片机的方法

KEIL(MDK)同时兼容STM32和51系列单片机的方

keil4 方法一:
首先安装KEIL4,然后安装KEIL3 到MDK 相同目录,安装过的就跳过。

然后以管理员身份打开KEIL4,用KEIL4 的注册机,注册ARM 和C51。

破解结果方法二:
下面这个方法可以让keilMDK 兼容51 的工程,只要一个keil 就都能编译51 和stm32 的工程了:
1、安装keilC51,并破解,安装目录T:keilC51
2、安装keilMDK,并破解,安装目录T:keilMDK
3、把T:keilC51 里面的C51 文件夹复制到T:keilMDK 里
4、把T:keilC51 里面的UV4 文件夹复制到T:keilMDK 里,提示有同名文件都不要覆盖
5、把T:keilC51TOOLS.INI 文件里面的内容复制到T:keilMDKTOOLS.INI 文件后面,并且把所有的keilC51 替换为keilMDK
6、OK 了.
keil5tips:感谢大家的阅读,本文由我司收集整编。

仅供参阅!。

如何使用STM32 v3.5固件库建工程

如何使用STM32_V3.5版本固件库建立工程模板准备工作如下:1:下载STM32_V3.5的固件库去论坛上找,很多2:准备Keil uVision4 软件,并安装到电脑上。

3:不要带板凳了,带上你的脑袋就行,因为板凳不会思考。

开始:1:首先解压缩下载的固件库(保留一个备份,你懂的)里面有,_htmresc :ST的logo完全无用,不用理会,Libraries:比较重要的文件包含STM32的系统文件和大量头文件,也就是库文件了。

Project:包含大量外设的例程,和各个软件版本的评估版工程模板。

KEIL对应的就是MDK-ARM 文件下的工程模板。

你也可以利用这个工程模板来修改,得到你自己的工程模块,本文不用此法。

Utilities:就是评估版的相关文件:本文也不会用到,无视既可。

这四个文件,(先去掉文件的只读属性吧,相信你会的)2:安照一般的方法,建立工程模板先建立一些文件夹,比如工程模板要建在D盘,下面的D:\STM32\PRO1(项目名字,自己随便定)再该文件夹下面新建以下文件夹Libraries:直接复制上述的的Libraries文件夹,把其中的CMSIS剪切出来,放到PRO1目录下,直接成为另一个文件夹。

另外把STM32F10x_StdPeriph_Driver下的inc和src文件夹剪切出来,放在Libraries目录下,STM32F10x_StdPeriph_Driver文件夹就可以删除了。

会发现里面就只剩下头文件了。

CMSIS:就是从上面粘贴来的。

在CMSIS\CM3\DeviceSupport\ST\STM32F10x目录下直接将Startup文件剪切出来,放在Libraries目录下,其他的不需要动。

里面存放的就是重要的系统文件,先不要理会是什么作用吧,慢慢就明白了。

Startup 就是从上面粘贴来的。

我们要用的比如是:STM32F103VC,只要把startup\arm目录下的startup_stm32f10x_hd.s文件剪切出来,放到Startup 下面就好。

新建基于STM32固件库V3.5的Keil工程


* @retval None
布谷鸟@UCORTEX
CORTEX 技术之家:
第 6 页,共 7 页
新建基于
STM32 固件库 V3.5 的 Keil 工程
* @param led:指示灯编号 * * */ void LED_Off(uint8_t led) { if(led==0) else{} } /** * @brief 毫秒延时函数 * @param ms: 延时的毫秒数 * @retval None */ void Delay_ms(uint32_t ms) { ms*=12000; while(ms--); } int main(void) { LED_Init(); while (1) { //跑马灯程序 LED_On(0); LED_Off(1); Delay_ms(250); LED_Off(0); LED_On(1); Delay_ms(250); } } 好了,到这里,一个基于 STM32 固件库,实现跑跑马灯功能的工程就完成了,以后所有的项目都可以在这 个工程模版的基础上,进行修改得到。 GPIO_SetBits(GPIOB,GPIO_Pin_5);//点亮 LED0 else if(led==1) GPIO_SetBits(GPIOE,GPIO_Pin_5);//点亮 LED1 @arg 0:LED0 @arg 1:LED1
* @retval None
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//IO 口速度为 50MHz //根据设定参数初始化 GPIOB.5 //PB.5 输出高 //开漏输出,IO 口速度为 50MHz //PE.5 输出高
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED1-->PE.5 端口配置, 推挽输出

Keil 下配置stm32库开发环境

Keil MDK下配置stm32库开发环境(包括J-Link调试环境设置)准备:1.stm32官方固件库2.Keil MDK一、建立stm32工程当出现提示是否要添加启动文件时,选择否(因为在官方固件库中包含有启动文件)工程建立完成!二、添加官方固件库右键工程目录,选择Manage Components..第一栏表示工程名称,第二栏表示工程包含的文件夹,第三栏表示各个文件夹中包含的文件通过Add Files将固件库中的文件添加进工程中,添加过后如下这么整理是为了让工程开起来层次清晰,对于工程编译没有影响,也就是说即使工程里文件不是按照目录这么整理的,也可以正常编译,只是习惯上如此整理。

三、工程设置右键工程,选择Options for Target…需要设置的有C/C++标签页中的Include Paths,如下:点击最右边的三个点按钮,这里设置的意思是把整个工程中所有.h文件所在的目录添加进来,只有这样,编译器在编译程序时才会从这些路径中寻找头文件。

点击这个方框按钮,添加目录,本例中将./sys ./inc ./src ./usr都添加进来四、J-Link调试器在keil中的设置接着第三步,在Debug标签中选择J-Link调试器选择完成后,点击右侧Setting按钮,如下:提示:必须正确连接J-Link后才会显示这样选择Flash Downlade标签页,点击Add按钮,将对应CPU型号的flash点击ok在Utilities标签页中,选择J-Link后点击ok即完成所有工程设置在main.c中写入main函数后编译未提示错误可以直接使用下图中红色标记按钮直接下载程序,不用再打开J-Flash下载程序了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

简介写这篇“小”教程主要是和大家分享使用STM32的基本方法。

在一年以前,我开始接触并开始使用STM32。

STM32价格便宜,外设丰富,开发和仿真环境使用方便,一下子便爱上了它。

我当时使用了IAR编译环境,固件库也是以前的V2版本。

由于ST公司更新了STM32的固件库,所以想试着使用新固件库。

刚开始使用新库时也遇到了一些问题,但是慢慢熟悉不但觉得不难不烦,反而觉得V3比V2更好用。

在这里我和大家分享一下使用V3.4库的方法,希望大家喜欢,如有错误请指出,在下不慎感激。

这篇“小”教程分以下四步来说,第一步,获得库文件,并进行适当的整理;第二步,建立工程,并建立条理清晰的GROUP;第三步,修改工程的Option属性;第四步:使用JLINK仿真调试。

下面就分这四大步来逐个说明。

第一步 获得库文件,并进行适当的整理第一步非常的简单,访问ST的官网上就可以获得最新的固件库,在我写“小”教程的时候最新的固件库是V3.4。

除了获得固件库之外还可以获得和固件库相关的说明文档。

在以前的官网上可以下载到一篇名为《如何从 STM32F10xxx固件库 V2.0.3 升级为 STM32F10xxx标准外设库 V3.0.0》的应用手册,但是在现在的ST官网上却找不到这篇十分有用的应用文档,不过却可以在百度文库中找到,这篇文档详细说明了新固件库的文件结构,在Keil工程建立之前,值得一看。

图1是新固件库改动比较大的部分,ST称为CMSIS。

在这个文件夹下面出现了一些新的源文件、头文件和启动代码,新的源文件如core_cm.c system_stm32f10x.c,也有新的启动代码如start_stm32f10x_h/m/ld.s。

在第二部分会详细介绍这些文件到底有什么作用,以及和V2版本的区别。

在这里我也补充一句,V3.4还是和V3.0有点区别,V3.4又比V3.0多出了几个启动代码。

我个人觉得这些文件“埋”的太深,使用起来有点不方便,所以我一般对这些文件进行一些整理,把相关文件放在一起,并取上一个标准化的名字,这些文件夹的名字一般和原始固件库文件夹的名字相同,只是把需要的文件放在一起。

例如我把启动代码(startup)放在一个文件夹下面,而在这个文件下面只放Keil MDK有关的启动代码,把IAR和GCC的文件全部给去除了,这样做不但使得文件夹内容“清爽”也可以避免不必要的错误。

一般在工程目录下面我会建立以下几个文件夹,如图2所示。

当然还会建立两个很有用的文件夹,一个取名为Listing,另一个取名为Object。

这两个文件夹会保存Keil编译连接过程中产生的一些文件,虽然是一个不起眼的细节但是也请大家关注,不然在工程目录下面“邋遢”的很!下面来简单说说这些文件各有什么作用。

在下重在应用,对里面的内容也知之甚少。

core_cm3.c/core_cm3.h该文件是内核访问层的源文件和头文件,查看其中的代码多半是使用汇编语言编写的。

在线不甚了解。

stm32f10x.h该文件是外设访问层的头文件,该文件是最重要的头文件之一。

例如定义了CPU 是哪种容量的CPU,中断向量等等。

除了这些该头文件还定义了和外设寄存器相关的结构体,例如:typedef struct{__IO uint32_t CRL;__IO uint32_t CRH;__IO uint32_t IDR;__IO uint32_t ODR;__IO uint32_t BSRR;__IO uint32_t BRR;__IO uint32_t LCKR;} GPIO_TypeDef;包含了那么多寄存器的定义,那么在应用文件中(例如自己编写的main源文件)只需要包含stm32f10x.h即可,而不是以前固件库的需要包含stm32f10x_conf.h这个头文件。

system_stm32f10x.c/h该头文件也可以称为外设访问层的头文件和源文件。

在该文件中可以定义系统的时钟频率,定义低速时钟总线和高速时钟总线的频率,其中最关键的函数就是SystemInit()了,这个后面会详细介绍。

总之这两个文件是新固件库的重点,有了它粮也大大简化了使用stm32的初始化工作。

stm32f10x_conf.h这个文件和V2版本的库的内容是一样的,需要使用哪些外设就取消哪些外设的注释。

例如需要使用GPIO功能,但不使用SPI功能,就可以这样操作。

#include "stm32f10x_gpio.h"/* #include "stm32f10x_spi.h" */main.c这个文件就不用多说了,自己编写。

stm32f10x_it.c/h这两个文件包含了stm32中断函数,在源文件和头文件中并没有把所有的中断入口函数都写出来,而只写了ARM内核的几个异常中断,其他的中断函数需要用户自己编写。

stm32f10x_it.c的最后给了这样一个模板。

/******************************************************************** **********//* STM32F10x Peripherals Interrupt Handlers *//* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the *//* available peripheral interrupt handler's name please refer to the startup *//* file (startup_stm32f10x_xx.s). *//******************************************************************** **********//*** @brief This function handles PPP interrupt request.* @param None* @retval None*//*void PPP_IRQHandler(void){}*/从注释中的英文提示可以看出,中断向量的名称可以从相应的启动代码中找出,例如可以在startup_stm32f10x_md.s中找到USART1中断函数的名称——USART1_IRQHandler。

其他的中断函数名可以以此类推,一一获得,在这里我就不一一复述了。

StdPeriph_Driver文件夹该文件夹有包含两个文件夹,一个是src文件夹,另一个是inc文件夹,顾名思义,一个里面放的是元件一个里面放的是头文件。

这两个文件夹包含了所有的STM32的外设驱动函数,其实和V2版本也没有太大的变化。

简单来说,外设的驱动相当于windows的驱动函数API,这些驱动函数看到函数名基本就可以明白这个函数的作用,例如:GPIO_SetBits可以置位某个IO口,相反GPIO_ResetBits则可以复位某个IO口。

我个人认为熟练使用库可以大大提高编程的效率,同时规范使用库函数也可以提高程序的可读性,让团队中的其他程序员可以快速的明白代码的作用。

第二步,建立工程,并建立条理清晰的GROUP从这一步开始就开始和Keil MDK打交道了。

首先建立一个Keil工程,这一小步再简单不过了,Project菜单项中点击New uVision Project,然后保存工程文件,路径自由设定并可以包含中文。

然后选择指定的CPU型号,如图3所示。

例如选择STM32F103RB。

接着弹出一个添加启动代码的窗口,在这里请大家点击否。

因为这个启动代码是旧版本库的启动代码,新版的启动代码和这个不同,需要自己添加。

所谓启动代码就是在main函数之前运行的代码。

以上的几个步骤和在Keil环境下使用51很相似,所以也不必多说。

选择CPU型号后就需要建立一个条理清晰的Group,在这里我强调的是一个“条理性”。

我尽可能的把同类的文件放在一起,并取名和工程文件目录中相同的名字,这样便于管理也避免不必要的错误。

在Target 1选项上右击,在弹出菜单上选择manage components,如图5所示。

建立相应的Group。

例如User,CMSIS,StdPeriph_Driver和StartUP,这些Group 的名称和工程文件夹的名称保持一致,如图6所示。

为每个Group添加同名文件夹下的源文件或者头文件,为了便于查看代码,我把源文件和头文件都添加进Group中(除StdPeriph_Driver),在这里注意过滤文件的类型。

StdPeriph_Driver中只添加需要的源文件,例如建立一个LED闪烁的工程,那么这个工程除了进行必要的初始化之外,只需要包含GPIO的操作函数,当然需要使用GPIO就必须要使能GPIO的时钟,RCC是绝对少不了的。

所以只需要包含misc.c,stm32f10x_gpio.c和stm32f10x_rcc.c。

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

添加需要的文件之后,工程目录如图7所示。

三步 修改工程的Option属性修改工程属主要目的是指定相关头文件的路径。

接着上面说就是右击工程目录的LED Toggle则会出现Option选项卡,当然右击User或者其他的Group就不会出现Option选项卡,初学者极容易犯这个错误。

给Output选择一个名为Object的文件夹,当然文件夹也可以是其他任何名称。

给Listing选择一个名为Listing的文件夹,当然这个文件夹也可以是其他的名称。

在C/C++选项卡下,需要输入两个非常重要的宏,一个宏是USE_STDPERIPH_DRIVER,定义了这个宏和外设有关的函数才会包括进来,还有一个宏是STM32F10X_MD,这个宏指定了CPU的容量,即中等容量的STM32。

除了设定两个宏之外,还要确定和工程有关的头文件的路径。

在工程目录下面除了StartUP中没有相关头文件,而其他的文件中都有头文件,所以需要逐个指定。

写到这里除了仿真的选项没有设置之外,其他的参数都设定好了,此时如果编译连接工程的话,就应该显示没有错误和没有警告。

当然也会遇到有错误和有警告的情况,根据错误提示耐心地寻找错误,总可以把问题迎刃而解。

第四步 使用JLINK仿真调试在说JLINK仿真调试之前,我先说说我在main.c中写了点什么,为什么这样写,还有一个比较要命的问题的是如何初始化系统时钟。

先说说我在main函数中写点什么,其实就是利用一个软件延时函数点亮然后熄灭一盏LED。

相关文档
最新文档