STM32寄存器开发-环境搭建

来源:互联网 发布:corel 片头制作软件 编辑:程序博客网 时间:2024/06/10 09:28

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,然后在里面建立StartUpBspProjectApp,如图1-1
图1-1example文件夹
         然后我们从ST的官方网站下载库函数,然后将库函数的启动文件startup_stm32f10x_hd.S(startup_stm32f10x_md.Sstartup_stm32f10x_ld.S)拷贝到我们新建工程文件夹StartUp里面如图1-2
1-2 StartUp文件夹
         App文件夹里面新建main.c如图1-3
1-3 App文件夹
         Bsp里面新建芯片设置相关的都会在这里新建相应的文件夹,比如LedKeyClock......,如图1-4
1-4 Bsp文件夹
         下面我们打开MDK,新建工程,我们把工程存放在文件夹Project文件里面,Device选择STM32F103RC,点击OK,如图1-5
1-5 Device选择
         然后点击Cancel关闭弹出的对话框,如图1-6
1-6 关闭Manage Run-TimeEnvironment
         点击ManageProject Items,修改Project TargetsGroups后点击OK,如图1-7
1-7 修改ManageProject Items
         工程树如图1-8
1-8 工程树
         点击Options for Target进行设置如图1-91-101-111-12所示:
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-191-20
1-18 报错信息
1-19 startup_stm32f10x_hd.s文件修改前
1-20 startup_stm32f10x_hd.s修改后
         再次编译没有错误,至此我们的工程新建完毕。

[Ecube1]哈佛结构:
将程序指令存储和数据指令存储分开的处理器结构,执行效率较高,哈佛结构的计算机有CPU、程序存储器和数据存储器,有较高的数字信号处理能力;另外一种是冯·诺依曼结构(普林斯顿结构),它是将程序和数据存储在一起,程序指令存储地址和数据存储地址指向同一存储器的不同物理地址。


原创粉丝点击