0
点赞
收藏
分享

微信扫一扫

新建STM32工程并配置——基于寄存器

在keil5中新建STM32的工程文件,该工程基于STM32F103。

1.新建一个文件夹,自己根据所要进行的项目进行命名“超声波测距”,同样在内部新建“USER”;

新建STM32工程并配置——基于寄存器_新建工程

2.打开keil,从“Project”选择“New μVision Project...”,如下图:

新建STM32工程并配置——基于寄存器_宏定义_02

3.将项目定位到“超声波测距”的“USER”目录下,然后按照自己的需求进行命名;

4.然后会弹出选择框,我们根据自己手中的STM32选择对应的“STMicroelectronics”;

新建STM32工程并配置——基于寄存器_启动文件_03

5.点击“Cancel”;

新建STM32工程并配置——基于寄存器_寄存器_04

6.首先选择启动文件,正点原子在文档中也已经有了相关说明,如下所示:

ST 公司提供了 3 个启动文件给我们,分别用于不同容量的 STM32 芯片,这三个文件是:

启动文件

容量产品

FLASH大小

startup_stm32f10x_ld.s

小容量产品

FLASH≤32K

startup_stm32f10x_md.s

中容量产品

64K≤FLASH≤128K

startup_stm32f10x_hd.s

大容量产品

256K≤FLASH

C8T6是64Kb,因此属于中容量,启动文件应选择"startup_stm32f10x.md.s"。

新建STM32工程并配置——基于寄存器_STM32_05

7.然后将启动文件添加到工程中;

新建STM32工程并配置——基于寄存器_宏定义_06

当然也可以右键从"Manage Project items"中进行添加,这里不展示。

8.因为启动文件不同,因此代码会存在一定的差别,因此需要将启动文件的某段代码进行替换成下面的代码;

Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT __main
;寄存器版本代码,因为没有用到 SystemInit 函数,所以注释掉
;库函数版本代码,建议加上这里(外部必须实现 SystemInit 函数),以
;初始化 stm32 时钟等。
;IMPORT SystemInit
;LDR R0, =SystemInit
;BLX R0
LDR R0, =__main
BX R0
ENDP

不过复制从正点原子链接下载的文件是不需要进行修改的。

9.对工程进行编译可以发现是存在一个“error”的;其实就说添加一个main函数,然后在“USER”目录下新建main.c文件(可以是其他的名称);

10.在“Manage Project”中添加“USER”、“SYSTEM”分组,然后把main.c文件添加到“USER”分组中;

新建STM32工程并配置——基于寄存器_STM32_07

11.从下载的文件中寻找到“delay”、“sys”、“usart”三个文件夹,然后将其中的.c文件添加到工程目录

新建STM32工程并配置——基于寄存器_寄存器_08

12.配置输出的选项,如下图所示:

新建STM32工程并配置——基于寄存器_STM32_09

然后配置hex文件的输出的路径。

新建STM32工程并配置——基于寄存器_新建工程_10

13.然后配置好.c文件后,还需要配置.h头文件。先输入宏定义标识符,根据所用 STM32F1 型号的容量,来输入相关宏

定义,对于 STM32F103 系列芯片,设置原则如下:

芯片的FLASH

宏定义标识符

16KB≤FLASH≤32KB

STM32F10X_LD

64KB≤FLASH≤128KB

STM32F10X_MD

256KB≤FLASH≤512KB

STM32F10X_HD

C8T6选择“STM32F10X_MD“,然后添加头文件的路径。

新建STM32工程并配置——基于寄存器_STM32_11

14.编译发现仍存在问题,这是由于main.c文件中并没有任何代码,然后在main.c编写代码;

新建STM32工程并配置——基于寄存器_启动文件_12

然后就编译成功了,不过由于编码类型不同,所以直接复制的汉字会乱码。

举报

相关推荐

0 条评论