打印
[应用相关]

MDK建立STM32F103*开发模板

[复制链接]
627|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一、整体流程
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”。

使用特权

评论回复
沙发
functions|  楼主 | 2019-7-22 14:08 | 只看该作者
三、新建文件夹并添加文件

  先新建一个顶层文件夹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文件。

使用特权

评论回复
板凳
functions|  楼主 | 2019-7-22 14:08 | 只看该作者
四、新建工程

1、点击MDK图标打开软件

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

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

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

使用特权

评论回复
地板
functions|  楼主 | 2019-7-22 14:08 | 只看该作者
五、给工程添加组

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

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

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

使用特权

评论回复
5
functions|  楼主 | 2019-7-22 14:09 | 只看该作者
六、设置Target Option

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

1、Device

  Device选择100脚的STM32F103VE

使用特权

评论回复
6
functions|  楼主 | 2019-7-22 14:10 | 只看该作者
2、Target

晶振频率:8 MHz

Use MicroLIB: 使用微库

片内Flash起始地址:0x8000000

片内Flash大小:0x80000

片内RAM起始地址:0x20000000

片内RAM大小:0x10000

使用特权

评论回复
7
functions|  楼主 | 2019-7-22 14:10 | 只看该作者
3、Output

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

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

使用特权

评论回复
8
functions|  楼主 | 2019-7-22 14:11 | 只看该作者
4、Listing

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

使用特权

评论回复
9
functions|  楼主 | 2019-7-22 14:11 | 只看该作者
5、User

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

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

使用特权

评论回复
10
functions|  楼主 | 2019-7-22 14:11 | 只看该作者
6、C/C++

Define:  预处理宏

  STM32F10X_HD  使用的芯片是大容量的

  USE_STDPERIPH_DRIVE 为了使用ST库

Optimization  优化等级

Warngings  警告等级

Include Paths   添加头文件目录

compiler control string  可以查看编译命令

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

使用特权

评论回复
11
functions|  楼主 | 2019-7-22 14:12 | 只看该作者
7、ASM

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

使用特权

评论回复
12
functions|  楼主 | 2019-7-22 14:12 | 只看该作者
8、Linker

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

R/W Base  数据段起始地址

Linker control string 可以查看连接命令

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

使用特权

评论回复
13
functions|  楼主 | 2019-7-22 14:13 | 只看该作者
9、Debug

Use simulator  软件仿真

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



10、Utilities(工具)

使用特权

评论回复
14
functions|  楼主 | 2019-7-22 14:13 | 只看该作者
七、设置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库开发实战指南》

使用特权

评论回复
15
labasi| | 2019-8-12 11:23 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
16
paotangsan| | 2019-8-12 11:32 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
17
renzheshengui| | 2019-8-12 11:35 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

39

主题

446

帖子

1

粉丝