|
一. 需要准备的资料及环境:
1.STM32固件库,我们使用的固件库为STM32F10x_StdPeriph_Lib_V3.5.0,可在st官方下载
2.MDK开发环境(我们使用的版本为MDK4.7A)。
二. 新建工程
1.打开MDK ,然后选择菜单 Project->Close Project,关掉已存在的工程!这样整个MDK就是一个空的了,接下来我们将建立工程。
2.在建立工程之前,建议用户在电脑的某个目录下面建立一个文件夹,后面所建立的工程都可以放在这个文件夹下面,这里我们建立一个文件夹为: STM32_IAP.在该文件夹下再创建CORE、OBJ、STM32F10x_FWLib、USER等文件夹,USER用来保存工程,CORE用来存放核心文件和启动,OBJ是用来存放编译过程文件以及 hex 文件,STM32F10x_FWLib 文件夹用来存放ST 官方提供的库函数源码文 官方提供的库函数源码文 官方提供的库函数源码文 官方提供的库函数源码件。
3.点击Keil的菜单:Project –>New Uvision Project ,然后将目录定位到刚才建立的文件夹STM32_IAP之下,把工程文件保存到USER文件夹下面。工程命名为IAP-Bootloader ,点击保存
4.接下来会出现一个选择Device的界面,我们选择STM32F103C8(如果是其他芯片,请选择对应的型号)。
5.弹出对话框“ Copy STM32 Startup Code to project ….”,询问是否添加启动代码到工程中,选择“否”,”,因为使用的 ST 固件库文件已经包含了启动文件。
6.下面我们要将官方的固件库包里的源码文件复制到我们的工程目录文件夹下面。
打开官方固件库包,定位到我们之前准备好的固件库包的目录STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver下面,将目录下面的src,inc文件夹copy到我们刚才建立的STM32F10x_FWLib文件夹下面。src存放的是固件库的.c文件,inc存放的是对应的.h文件。
7.将固件库包里面相关的启动文件复制到我们的工程目录CORE之下。 打开官方固件库包,定位到目录STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport下面,将文件core_cm3.c和文件core_cm3.h 复制到CORE下面去。然后定位到目录STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm下面,将里面所有的文件同样复制到CORE下面
8.定位到目录:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x,将里面的三个文件stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h,复制到我们的USER目录之下。然后将STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template下面的4个文件main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h复制到USER目录下面。
9.前面的步骤,我们将需要的固件库相关文件复制到工程目录下面,下面我们将这些文件加入我们的工程中去。右键点击Target1,选择Manage Components
10.Project Targets一栏,我们将Target名字修改为IAP-Bootloader,然后在Groups一栏删掉一个,建立三个Groups:USER,CORE,FWLIB.点击OK.可以看到我们的Target名字以及Groups情况。
11.往Group里面添加我们需要的文件。我们按照步骤10的方法, 右键点击点击IAP-Bootloader,选择选择Manage Components.然后选择需要添加文件的Group,这里第一步我们选择FWLIB,然后点击右边的Add Files,定位到我们刚才建立的目录STM32F10x_FWLib/src下面,选择需要的文件,然后点击Add,然后Close.可以看到Files列表下面包含我们添加的文件。
12.用同样的方法,将Groups定位到CORE和USER下面,添加需要的文件。这里我们的CORE下面需要添加的文件为core_cm3.c,startup_stm32f10x_md.s,USER目录下面需要添加的文件为main.c,stm32f10x_it.c,system_stm32f10x.c.这样我们需要添加的文件已经添加到我们的工程中去了,最后点击OK,回到工程主界面。
13.点击魔术棒,出来一个菜单,然后点击 c/c++选项.然后点击Include Paths右边的按钮。弹出一个添加path的对话框,然后我们将图上面的3个目录添加进去。记住,keil只会在一级目录查找,所以如果你的目录下面还有子目录,记得path一定要定位到最后一级子目录。然后点击OK.
14.配置一个全局的宏定义变量。按照步骤13,定位到c/c++界面,然后copy “STM32F10X_MD,USE_STDPERIPH_DRIVER”到 Define里面。这里解释一下,如果你用的是大容量那么STM32F10X_MD修改为STM32F10X_HD,小容量修改为STM32F10X_LD。
15.配置Output选项。定位到Output界面,点击Select Folder For Obiects...将目标文件选择到OBJ文件夹下。然后勾上下三个选项。其中Create HEX file是编译生成hex文件,Browser Information是可以查看变量和函数定义
16..配置Debug选项。定位到Debug界面,选择ST-Link Debugger(按实际用的工具选择),勾选Use,点击右边的Setting选项,在弹出的Cortex-MTarget Driver Setup窗口中选择SW(按实际选择),选择确定。
17.配置Utilities选项。(1)定位到Utilities界面;(2)选择ST-Link Debugger(按实际用的工具选择);(3)点击右边的Setting选项;(4)在弹出的Cortex-MTarget Driver Setup窗口按下图红框4选择;(5)点击下方ADD;(6)在弹出的Add Flash Programming Algorithm菜单中选择STM32F10X Med-density Flash(按实际对应芯片选择);(7)选择完后点击Add;(8)选择确定,回到上一菜单后再次选择确定,回到主界面。
18.编写简单main函数,点击进行编译,编译完成后在OBJ文件夹中生成.hex文件
19.用ST Link将MCU与PC连接好后,点击将.hex文件下载到MCU中。
仿真设置
在使用模拟器调试时,出现以下错误提示,导致不能连续运行:
*** Error 65: Access violation at 0x40000004 : No 'write' permission
解决措施
将以下内容保存为debug_Cortex-M_use_simulator.ini脚本文件,并根据CPU的外设地址更改map指令后面的参数。
配置选择为初始化文件:
/* Usage: Project ==> Options for Target ==> Debug:
/====================================================================\
| (●) Use Simulator |
| |
+--------------------------------------------------------------------+
| |
| Initialization File: |
| +------------------------------------+ +-----+ +---------+ |
| | .\debug_Cortex-M_use_simulator.ini | | ... | | Edit... | |
| +------------------------------------+ +-----+ +---------+ |
| |
| |
| |
| |
\====================================================================/
*/
// S32K1xx Series Reference Manual, Chapter 3: Memory Map
map 0x40000000,0x40080000 read write // Peripheral
map 0x400FF000,0x40100000 read write // GPIO controller
map 0x50000000,0x50070000 read write
map 0xA0000000,0xA0080000 read write
|
评分
-
查看全部评分
|