实验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),一个
每个端口位可以自由编程。具体的寄存器的配置及使用请查看文件:STM32 中文参考手册_v10.pdf
2 LED 灯硬件原理图
图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 示。
在这里选择之前创建的工程的根文件夹,笔者这里是/源代码/LED 文件夹。输入工程的名称(自定),点击保存后弹出如图 1.4 所示的内容。
在这里就需要选择单片机的类型,本实验箱的单片机是 STM32F103VE 单片机。首选选择
STMicroelectronics 后会打开设备的列表。
接下来找到 STM32F103VE 并选择,点击 OK。
这里会提示是否需要添加启动源文件,选择否。到这里工程已经初步建好。工程的构造如图 1.7 所示,是最初始的状态,之后我们需要添加一些目录及源文件。
4.2 构造工程目录及源文件
点击图 1.8 中标记的按钮,进入工程目录构造的对话框。
这里笔者将初始的 Source Group 删除了,并且构建了 5 个目录。user 目录内可以放置
主函数等源文件。startup 放置 STM32 库中提供的个启动文件,他是使用汇编语言编写的。 FWLIB 放置 STM32 库中的外设的驱动文件。HARDWARE 内可以放置一些硬件的驱动程序
构建完成后如图 1.10 所示。
时阅读方便而创建的。那么我们需要在实际的路径下创建目录,名称最好与工程中一致,以免发生混淆如图 1.11 所示。
4.3 拷贝 STM32 库文件
到这里基本的文件已经拷贝到工程目录下了。
4.4 将文件添加到 KEIL4 工程中
上一步的工作仅仅把相关的源文件拷贝到了工程目录下,我们还需要在 KEIL4 中将他们添加到工程中来。
首先我们添加 startup_stm32f10x_hd.s 到 startup 目录下。在 project 窗口下右键 startup 点 1.12 标记的选项。
图 1.12
图 1.13
图 1.14
图 1.15
2.添加 stm32f10x_gpio.c 及 stm32f10x_rcc.c 到 FWLIB 目录下
3. 到这里本此实验所需的库文件已经添加完毕,源文件具体的功能在这里不详述后续实验都会使用到,读者也可以参考相关资料来熟悉 STM32 的库。(注:.h 头文件不用添加,编译时自动关联),结构如图所示
4.5 编写 LED 灯闪烁程序
图 1.19
2. 保存源文件
点击图 1.20 所示选项,保存文件
图 1.20
图 1.21
这里笔者将他命名为 main.c,保存在工程的 user 文件夹下。
3. 添加文件到工程的 user 目录下
将上一步新建的文件添加工程中。
图 1.22
目录结构如图 1.23 所示。
4. 编写源码
本例程不将重点放在编码之上,说以建议使用者直接在我们提供的工程(/光盘/源代码/LED/user)中将 main.c 的源码拷贝到自己创建的工程中。
图 1.24
到这里,代码方面的工作都已经完成。
4.6 配置工程选项
点击 Output 选项卡,勾选 Create HEX File。
图 1.26
点击 C/C++选项卡,在 Define 框中输入两个宏定义,如图 1.27 所示。
图 1.27
点击 Include Paths 右侧的路径选择按钮,添加头文件的路径,将需要引用的头文件所在的路径都添加进来,如图 1.28 所示。
选择 Utilities 选项卡,选择 Cotex-M/R J-LINK/J-Trace(J-Link 仿真器)。
图 1.30
点击 Settings,设置固件下载的一些选项。
图 1.31
图1.32
点击 Add 添加 Programming Algorithm
图1.33
选择图 1.34 所示的选项并点击 Add。
图 1.32
点击 Ok,工程的配置已经完成了。
4.7 编译
点击图 1.36 所示的编译选项,编译工程,若没有错误编译成功后在 KEIL4 底部输出如图 1.37 所示的内容。
4.8 下载固件