STM32寄存器开发-环境搭建
From:http://bbs.elecfans.com/jishu_1102996_1_2.html
概述
STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核,CM3采用了[url=]哈佛结构[/url][Ecube1] ,拥有独立的指令总线和数据总线,可以让取指与数据访问并行不悖。
STM32F103系列主频最高72MHz,是一个32位处理器内核,内部的数据路径、寄存器、存储器接口均为32位。
而对于STM32的开发方式来说,可以分为寄存器方式和库函数方式,这两种的开发方式各有优缺点,寄存器方式相对来说配置起来比较麻烦,程序的可读性比较差,不利于维护,而库函数方式开发相对来说让我们告别了繁琐的寄存器配置,增加了程序的可读性、便于后期维护。但是相对来说库函数不如寄存器方式效率高。
对于STM32官方库这里说一下,STM32开发可以采用库函数也可以采用寄存器方式,寄存器方式相对于库函数来说比较复杂,因为STM32的寄存器相对非常多,但是对于寄存器更能非常详细的了解原理。所以我们采用寄存器的开发方式。
下面我们搭建一下寄存器开发的IDE环境,MDK的安装不做过多的介绍,因为比较简单,值得注意的是在安装完成MDK以后需要安装Keil.STM32F1xx_DFP.2.1.0.pack。下面我们主要介绍一下工程项目的建立,我们新建文件夹example,然后在里面建立StartUp、Bsp、Project、App,如图1-1:
图1-1example文件夹
然后我们从ST的官方网站下载库函数,然后将库函数的启动文件startup_stm32f10x_hd.S(startup_stm32f10x_md.S、startup_stm32f10x_ld.S)拷贝到我们新建工程文件夹StartUp里面如图1-2:
图1-2 StartUp文件夹
在App文件夹里面新建main.c如图1-3:
图1-3 App文件夹
图1-4 Bsp文件夹
下面我们打开MDK,新建工程,我们把工程存放在文件夹Project文件里面,Device选择STM32F103RC,点击OK,如图1-5:
图1-5 Device选择
然后点击Cancel关闭弹出的对话框,如图1-6:
图1-6 关闭Manage
Run-TimeEnvironment
点击ManageProject Items,修改Project Targets和Groups后点击OK,如图1-7:
图1-7 修改ManageProject
Items
工程树如图1-8:
图1-8 工程树
图1-9 晶振的设置
图1-10 HEX文件的创建
图1-11 宏定义及头文件路径的设置
图1-12 Debug设置
当每一次下载的时候需要设计JTAG,如图1-13所示,如果是JTAG下载那么在黑色的框中选择的是JTAG,如果是SWD下载那么就选择SWD:
图1-13 JTAG设置
设置下载完成reset,因为当下载完成以后必须手动按下reset按键才能使程序运行,如果勾选图中的框住部分则不需要手动按下reset按键,设置如图1-14:
图1-14 Flash Download设置
点击OK退出,在Groups里面添加相应的C语言文件,我们先包含进头文件编译一下,如图1-15:
图1-15 main函数编译测试
点击Rebuild,根据报错提示可以知道缺少头文件core_cm3.h,如图1-16,为了方便下一次使用,我们将库函数里面的core_cm3.h存放到安装路径下面和stm32f10x.h相同的文件夹里面,G:\Program
Files\MDK521\ARM\PACK\Keil\STM32F1xx_DFP\2.1.0\Device\Include这个路径根据安装MDK的路径不同而改变,如图1-17:
图1-16 错误提示
图1-17 拷贝core_cm3.h
然后在次编译,查看报错信息,如图1-18,知道在.s文件里调用了SystemInit函数,但是并没有发现函数的定义。所以我们修改.s文件,如图1-19、1-20:
图1-18 报错信息
图1-19 startup_stm32f10x_hd.s文件修改前
图1-20 startup_stm32f10x_hd.s修改后
再次编译没有错误,至此我们的工程新建完毕。
[Ecube1]哈佛结构:
将程序指令存储和数据指令存储分开的处理器结构,执行效率较高,哈佛结构的计算机有CPU、程序存储器和数据存储器,有较高的数字信号处理能力;另外一种是冯·诺依曼结构(普林斯顿结构),它是将程序和数据存储在一起,程序指令存储地址和数据存储地址指向同一存储器的不同物理地址。
|