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 文件夹
          Bsp 里面新建芯片设置相关的都会在这里新建相应的文件夹,比如Led Key Clock...... ,如图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 Targets Groups 后点击OK ,如图1-7
1-7  修改 ManageProject Items
          工程树如图1-8
1-8  工程树
          点击Op tions for Target 进行设置如图1-9 1-10 1-11 1-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-19 1-20
1-18  报错信息
1-19 startup_stm32f10x_hd.s 文件修改前
1-20 startup_stm32f10x_hd.s 修改后
          再次编译没有错误,至此我们的工程新建完毕。

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值