实验2 新建Stm32点灯项目

实验2  新建Stm32点灯项目

一、 实验准备

硬件:RFID 实验箱,电脑等。

软件:Keil4

工具:

1.JLINK 驱动安装(必备)
2.STM32芯片开发环境(必备)
3.串口助手sscom32(必备)
4.实验对应的源代码(必备)

二、 实验目的

1   熟悉 Keil4 开发环境的使用

2   掌握 STM32 工程建立

3   了解 STM32 官方库

4   了解 STM32  通用 I/O 端口的使用

三、 实验原理

1   GIPO 功能描述

每个 GPI/O 端口有两个 32 位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个 32 位数据寄存器(GPIOx_IDR,GPIOx_ODR),一个 32 位置位/复位寄存器 (GPIOx_BSRR),一个

  • 位复位寄存器(GPIOx_BRR)和一个 32 位锁定寄存器 (GPIOx_LCKR)。 GPIO 端口的每个位可以有软件分别配置成多种模式。
  • 输入浮空
  • 输入上拉
  • 输入下拉
  • 模拟输入
  • 开漏输出
  • 推挽输出
  • 推挽复用
  • 开漏服用

每个端口位可以自由编程。具体的寄存器的配置及使用请查看文件:STM32 中文参考手册_v10.pdf

2   LED 灯硬件原理图

实验2 新建Stm32点灯项目_第1张图片


图1.1 LED 原理图

用 MC74HC573ADWR2 芯片,相关参数请查阅相关文件。LE 需要拉高使能芯片工作。LED1~8 分别对应了 PE5~PE2,与 PC3~PC0,将相应的引脚拉高点亮 LED 灯。

3  STM32 库

TM32F10x 标准外设库是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函数库还包括每一个外设的驱动描述和应用实例。每一个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。每个器件开发都由一个通用 API 驱动,API 对该驱动程序的结构,函数和参数名称都进行了标准化。所有的驱动源码都符合 ANSI-C。ST 公司已经把驱动源代码文档化。

此后的例程中我们将会频繁的使用到 STM32 库中的 API 进行开发。

4  SM32 引脚初始化

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOE

| RCC_APB2Periph_GPIOC , ENABLE);  初始化端口的时钟频率。

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 设置为输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  设置速率

GPIO_Init(GPIOE, &GPIO_InitStructure);

初始化端口

具体请参考例程源码。

四、 实验步骤

4.1   打开 KEIL4 开发环境并新建工程,如图 1.2 所示。

首先需要在电脑的某个路径下创建工程的根文件夹(如 E:\源代码\LED),笔者创建了 LED 文件夹用于工程的根目录。

打开 KEIL4 环境,点击 Project -> New uVision project,如图 1.2 示。

实验2 新建Stm32点灯项目_第2张图片

  • 图1.2  点击后弹出如图 1.3 所示的提示框。

 

实验2 新建Stm32点灯项目_第3张图片

  • 图1.3

   在这里选择之前创建的工程的根文件夹,笔者这里是/源代码/LED 文件夹。输入工程的名称(自定),点击保存后弹出如图 1.4 所示的内容。

 

实验2 新建Stm32点灯项目_第4张图片

  • 图1.4

在这里就需要选择单片机的类型,本实验箱的单片机是 STM32F103VE 单片机。首选选择

STMicroelectronics 后会打开设备的列表。

接下来找到 STM32F103VE 并选择,点击 OK。

实验2 新建Stm32点灯项目_第5张图片

  • 图1.5

实验2 新建Stm32点灯项目_第6张图片

  • 图1.6

这里会提示是否需要添加启动源文件,选择否。到这里工程已经初步建好。工程的构造如图 1.7 所示,是最初始的状态,之后我们需要添加一些目录及源文件。

实验2 新建Stm32点灯项目_第7张图片

  • 图1.7

 

4.2   构造工程目录及源文件

 

点击图 1.8 中标记的按钮,进入工程目录构造的对话框。

 

  • 图1.8

这里笔者将初始的 Source Group 删除了,并且构建了 5 个目录。user 目录内可以放置

主函数等源文件。startup 放置 STM32 库中提供的个启动文件,他是使用汇编语言编写的。 FWLIB 放置 STM32 库中的外设的驱动文件。HARDWARE 内可以放置一些硬件的驱动程序

 

  • LED 灯或 LCD 屏幕驱动等。CMSIS 放置 STM32 提供的系统 API 源文件。(注:这样的目录结构不是固定的,只是一个例子,使用者可以根据自己的习惯来建立工程目录)。

实验2 新建Stm32点灯项目_第8张图片

  • 图1.9

构建完成后如图 1.10 所示。

实验2 新建Stm32点灯项目_第9张图片

  • 图1.10
  • KEIL4 中构建的目录并不会在实际的工程目录下创建文件夹,它只是为了在编写代

时阅读方便而创建的。那么我们需要在实际的路径下创建目录,名称最好与工程中一致,以免发生混淆如图 1.11 所示。

实验2 新建Stm32点灯项目_第10张图片

 

  • 图1.11

 

4.3   拷贝 STM32 库文件

  • 首先解压库文件,路径/光盘/附件/STM32 库/ STM32 官方库 3.5 版本.rar
  • 将\stm32f10x_stdperiph_lib35\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\De viceSupport\ST\STM32F10x\startup\arm\startup_stm32f10x_hd.s 文件拷贝到工程目录下的 startup 文件夹。
  • 将\stm32f10x_stdperiph_lib35\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\De viceSupport\ST\下的 stm32f10x.h、system_stm32f10x.c、system_stm32f10x.h 三个文件拷贝到工程目录下的 CMSIS 文件夹下。
  • 将\stm32f10x_stdperiph_lib35\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdP eriph_Examples\ADC\3ADCs_DMA 下的 stm32f10x_conf.h 拷贝到工程目录下的 CMSIS文件夹下。
  • 将\stm32f10x_stdperiph_lib35\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_Std Periph_Driver 下的 inc 与 src 文件夹拷贝到工程目录下的 FWLIB 文件夹下。

到这里基本的文件已经拷贝到工程目录下了。

 

4.4   将文件添加到 KEIL4 工程中

上一步的工作仅仅把相关的源文件拷贝到了工程目录下,我们还需要在 KEIL4 中将他们添加到工程中来。

 

首先我们添加 startup_stm32f10x_hd.s 到 startup 目录下。在 project 窗口下右键 startup 点 1.12 标记的选项。

实验2 新建Stm32点灯项目_第11张图片

图 1.12

实验2 新建Stm32点灯项目_第12张图片

 图 1.13

 

实验2 新建Stm32点灯项目_第13张图片

图 1.14

  1. 添加 system_stm32f10x.c 文件到工程的 CMSIS 下

实验2 新建Stm32点灯项目_第14张图片

图 1.15

 

 2.添加 stm32f10x_gpio.c 及 stm32f10x_rcc.c 到 FWLIB 目录下

 

实验2 新建Stm32点灯项目_第15张图片

 

  • 图1.16

 

  3.   到这里本此实验所需的库文件已经添加完毕,源文件具体的功能在这里不详述后续实验都会使用到,读者也可以参考相关资料来熟悉 STM32 的库。(注:.h 头文件不用添加,编译时自动关联),结构如图所示

实验2 新建Stm32点灯项目_第16张图片

  • 图1.17

 

4.5   编写 LED 灯闪烁程序

  1. 新建文件,点击图 1.18 所示的选项,新建文件如图 1.19。
  • 图1.18

 

实验2 新建Stm32点灯项目_第17张图片

图 1.19

 

 2. 保存源文件

 

点击图 1.20 所示选项,保存文件

 

图 1.20

实验2 新建Stm32点灯项目_第18张图片

 

图 1.21

 

这里笔者将他命名为 main.c,保存在工程的 user 文件夹下。

 

3. 添加文件到工程的 user 目录下

 

将上一步新建的文件添加工程中。

实验2 新建Stm32点灯项目_第19张图片

图 1.22

 

实验2 新建Stm32点灯项目_第20张图片

  • 图1.23

 

目录结构如图 1.23 所示。

 

4. 编写源码

 

本例程不将重点放在编码之上,说以建议使用者直接在我们提供的工程(/光盘/源代码/LED/user)中将 main.c 的源码拷贝到自己创建的工程中。

 

实验2 新建Stm32点灯项目_第21张图片

图 1.24

到这里,代码方面的工作都已经完成。

 

4.6   配置工程选项

 

  1. 点击图 1.25 示的选项,进入工程配置界面。
    • 1.25

 

点击 Output 选项卡,勾选 Create HEX File。

 

实验2 新建Stm32点灯项目_第22张图片

图 1.26

 

点击 C/C++选项卡,在 Define 框中输入两个宏定义,如图 1.27 所示。

实验2 新建Stm32点灯项目_第23张图片

图 1.27

 

点击 Include Paths 右侧的路径选择按钮,添加头文件的路径,将需要引用的头文件所在的路径都添加进来,如图 1.28 所示。

实验2 新建Stm32点灯项目_第24张图片

  • 图1.28

实验2 新建Stm32点灯项目_第25张图片

  • 图1.29

 

选择 Utilities 选项卡,选择 Cotex-M/R J-LINK/J-Trace(J-Link 仿真器)。

 

实验2 新建Stm32点灯项目_第26张图片

图 1.30

 

点击 Settings,设置固件下载的一些选项。

实验2 新建Stm32点灯项目_第27张图片

图 1.31

实验2 新建Stm32点灯项目_第28张图片

 图1.32

点击 Add 添加 Programming Algorithm

实验2 新建Stm32点灯项目_第29张图片

 图1.33

 

选择图 1.34 所示的选项并点击 Add。

实验2 新建Stm32点灯项目_第30张图片

图 1.32

实验2 新建Stm32点灯项目_第31张图片

  • 图1.35

 

点击 Ok,工程的配置已经完成了。

 

4.7   编译

  • 图1.36

点击图 1.36 所示的编译选项,编译工程,若没有错误编译成功后在 KEIL4 底部输出如图 1.37 所示的内容。

实验2 新建Stm32点灯项目_第32张图片

  • 图1.37

4.8   下载固件

  1. 接上 J-Link 仿真器,20pin 的接口接在 lcd 屏幕下发的 JTAG 口,另一端接在电脑。
  1. 点击图 1.38 所示的选项,下载固件到 STM32 单片机。

 

 

你可能感兴趣的:(stm32)