一、整体流程

1、获取ST库--STM32F10x_StdPeriph_Lib_V3.5.0

2、新建文件夹并加载文件

3、新建工程

4、给工程添加组

5、设置"Target Option"

6、设置J-link选项

二、获取ST库

  这里用野火光盘提供的"ST库3.5.0源码"--STM32F10x_StdPeriph_Lib_V3.5.0,也可以从ST公司的官网下载,下载地址是“http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/PF257890”。

三、新建文件夹并添加文件

  先新建一个顶层文件夹Template,然后依次建立以下子文件夹。

1、DOC

  此目录存放说明文档,对程序的一些简要说明、用法之类,通常放readme.txt。

2、Include

  该目录集中存放头文件,将下面列出的库中的头文件拷贝到这个文件夹下。

   STM32F10x_StdPeriph_Lib_V3.5.0/Librarys/CMSIS/CM3/CoreSupport/core_cm3.h

     STM32F10x_StdPeriph_Lib_V3.5.0/Librarys/CMSIS/CM3/DeviceSupport/ST/STM32F10x/stm32f10x.h以及该目录下的system_stm32f10x.h。

   STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc下的所有头文件,比如说misc.h、stm32f10x_adc.h等。

   STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\stm32f10x_conf.h以及该目录下的stm32f10x_it.h。  

3、Libraries

  再新建两个子目录:CMSIS和FWLIB

①CMSIS

 存放ARM公司为cm3内核专一定制的内核文件接口,将下面列出的库中的文件拷贝到这个文件夹下。

  STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport\core_cm3.c

 STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c

  再在CMSIS中新建一个子文件夹startup,将下面列出的库中的文件拷贝到这个文件夹下。

  STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm所有文件拷到该目录。

②FWLIB

  存放STM32的外设库,将下面列出的库中的文件拷贝到这个文件夹下。

  STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src所有文件。

4、Listing

  该目录是MDK生成信息输出目录,存放代码分布(.map和.lst)。

5、Output

  该目录是MDK生成信息输出目录,存放目标文件(.o)、调试文件(.axf)、下载文件(.hex)、依赖文件(.d)等。

6、Project

  再新建一个子目录RVMDK(uv4),将来MDK的工程就建在这个目录中。之所以这样处理,是因为可能将来我们会在IAR环境下编译程序,这个时候只需要在Project目录下新建一个针对IAR的目录,就可以方便的切换开发环境。

7、User

  存放用户程序,以后写程序的文件存放在该目录,先把库中的用户程序添加进来,建立一个完整模板。

  STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\main.c和stm32f10x_it.c。

8、keilkill.bat

  在顶层目录中,添加MS-DOS批处理文件keilkill.bat。当双击这个工具的时候,会将Output目录中生成的中间目标文件全部删除,只留下hex文件。

四、新建工程

1、点击MDK图标打开软件

2、Project->New uVision Project,将工程目录选择在Template\Project\RVMDK(uv4)

3、选择芯片为ST公司的STM32F103VE。

4、在新弹出的对话框--询问是否添加启动代码,我们选择"否"。

五、给工程添加组

1、建立5个分组,分别为STARTUP、SMSIS、USER、DOC、FWLIB。

2、对每个分组双击,然后添加文件。

  这里只需要添加C文件和汇编文件(其中DOC目录除外),头文件不需要添加。通过“六、设置Target Option”,我们可以指定头文件搜索路径,来解决这个问题。而且,编译器会根据*.C文件生成对应的依赖文件。

六、设置Target Option

  依次选择Project->Options for Target ‘Template’

1、Device

  Device选择100脚的STM32F103VE

2、Target

晶振频率:8 MHz

Use MicroLIB: 使用微库

片内Flash起始地址:0x8000000

片内Flash大小:0x80000

片内RAM起始地址:0x20000000

片内RAM大小:0x10000

3、Output

Select Folder for Objects: 可以选择输出文件夹

Name of Executable:  可执行文件的名字

4、Listing

Select Folder for Listing: 可以选择生成Lst的文件夹

5、User

  如果想生成bin格式的可执行文件,可以在User栏子选项中添加如下语句:

C:/Keil/ARM/BIN40/fromelf.exe --bin -o ../../Output/Template.bin ../../Output/Template.axf

6、C/C++

Define:  预处理宏

  STM32F10X_HD  使用的芯片是大容量的

  USE_STDPERIPH_DRIVE 为了使用ST库

Optimization  优化等级

Warngings  警告等级

Include Paths   添加头文件目录

compiler control string  可以查看编译命令

  可见头文件搜索目录除了系统默认的C:\Keil\ARM\INC\ST\STM32F10x,还包括我们添加的..\..\Include

7、ASM

  与C/C++选项配置类似

8、Linker

R/O Base  代码段和只读数据段起始地址

R/W Base  数据段起始地址

Linker control string 可以查看连接命令

Don't Search Standard Libraries 完全不使用系统默认提供的库

9、Debug

Use simulator  软件仿真

Use cortex-M3 J-LINK 用J-link硬件仿真

10、Utilities(工具)

七、设置J-link选项

  在步骤六的第8小步--Debug界面,按下settings,进入J-link配置界面。以下是开发板上电后正常连通时的配置信息。

1、Debug

2、Flash Download

  其中Programming Algorithm的Description中需要添加芯片的Flash型号,这样下载的时候才知道是什么存储器,下载到哪里,大小多少。

Erase Full Chip 擦除整个Flash

Program  使能编程

Verify   使能核查

Reset and Run  编程完毕后,复位并且运行

参考资料:《STM32库开发实战指南》

附:Template.zip

MDK建立STM32F103*开发模板的更多相关文章

  1. Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发

    Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...

  2. 基于MDK的ARM-GCC开发环境建立及新唐M0的HID类设备的C++开发

    一,下载安装测试arm-none-eabi-gcc编译工具链 1,查看arm-none-eabi-gcc编译工具版本        打开网页:https://sourcery.mentor.com/G ...

  3. STM32开发环境--使用MDK建立一个工程

    STM32开发环境--使用MDK建立一个工程 该工程模版是基于库函数基础制作而成,其中有借鉴相关资料.虽然工程模版一旦建立,以后任何项目只需套用即可,但考虑到长时间不使用,在将来某天可能会突然用到,再 ...

  4. ASP.NET 5 入门(1) - 建立和开发ASP.NET 5 项目

    ASP.NET入门(1) - 建立和开发ASP.NET 5 项目 ASP.NET 5 理解和入门 使用自定义配置文件 建立项目 首先,目前只有VS 2015支持开发最新的ASP.NET 5 程序,所以 ...

  5. ubuntu linux下建立stm32开发环境: 程序烧录 openocd+openjtag

    原文出处: http://blog.csdn.net/embbnux/article/details/17619621 之前建立stm32开发环境,程序也已经编译好生成main.bin,接下来就是要把 ...

  6. 轻松建立Silverlight开发环境

    创建Silverlight 4开发环境,微软提供最简单的方法是使用Web Platform Installer,进行“一键安装”, 下载安装后,Web Platform Installer会自动检测哪 ...

  7. 奉上简单的.Net后端开发模板

    假定一个场景,开始做开发的你,领导走到你的面前说道:"小伙子,看了简历和最近的工作表现,很不错,现在交给一个任务,开发一个简单的CMS后端接口吧,前端有人配合你",当时你内心读白: ...

  8. MDK中用C++开发STM32

    ​作者:良知犹存 转载授权以及围观:欢迎添加微信:Allen-Iverson-me-LYN 前言     最近想开发一段单片机的代码,代码本身有很多的重复元素,这重复定义的一些结构体使用起来有些繁琐, ...

  9. 在Visual Studio 2015 中添加SharePoint 2016 开发模板

    前言 SharePoint 2016已经发布很久了,然而,默认安装VS2015以后,却没有SharePoint 2016的开发模板.其实问题很简单,和VS2012开发SharePoint 2013一样 ...

随机推荐

  1. sharepoint 2013 更改搜索server组态

    1.新搜索server在.安装sharepoint server 2013,并连接到一个现有的sharepoint server领域,完成后.您可以配置新的搜索server. 打开sharepoint ...

  2. SignalR安装以及安装问题

    正常节奏 介绍 SignalR 是 ASP.NET 团队正在开发的一个 Microsoft .NET Framework 库和 jQuery 插件,可能包括在以后版本的 ASP.NET 平台中. 它提 ...

  3. java中Map等对象转换为json

    ObjectMapper objectMapper = new ObjectMapper(); String jsonString = objectMapper.writeValueAsString( ...

  4. linux内存管理解析1----linux物理,线性内存布局及页表的初始化

    主要议题: 1分页,分段模式及实模式 2Linux分页 3linux内存线性地址空间布局及物理内存空间布局 4linux页表初始化及代码解析 1.1.1内存寻址和保护模式 在X86平台上,内存控制单元 ...

  5. 如何从零开始学习DIV+CSS

    CSS是样式,DIV是层.DIV+CSS是网站标准(web标准),通常为了说明与HTML网页设计语言中的表格(table)定位方式的区别.因为XHTML网站设计标准中,不再使用表格定位技术,而是采用D ...

  6. 读写应用程序数据-SQLite3

    SQLite3是嵌入到ios中的关系型数据库.对存储大规模的数据非常实用,使得不必将每个对象加到内存中. 支持NULL.INTEGER.REAL(浮点数字).TEXT(字符串和文本).BLOB(二进制 ...

  7. Java基础知识强化之集合框架笔记73:如何选择使用哪种集合

    1. 到底使用那种集合.    看需求 是否是键值对象形式: 是:Map 键是否需要排序: 是:TreeMap 否:HashMap 不知道,就使用HashMap. 否:Collection 元素是否唯 ...

  8. MySQL INSERT DELAYED

    INSERT DELAYED 语法 INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_nam ...

  9. char与varchar区别

    char:储存定长数据,长度不够,以空格填满.储存效率高. varchar: 变长数据,根据数据长度储存,节省空间,效率低.

  10. oracle report err:REP-2103 PL/SQL formula returned invalid value or no value

    好多年没用report builder做报表了,最近又开始接触这玩意了,今天修改一个report,调试半天没发现逻辑问题,一直报REP-2103: Column 'CF_report_line_po' ...