资源描述
RFID的GPIO基础实验
本科生实验报告
实验课程 RFID
学院名称 信息科学与技术学院
专业名称 物联网工程
学生姓名 曹林鑫
学生学号 20141060301
指导教师 方勇
实验地点 6B608
实验成绩
二〇一六 年十二 月 二〇一六年十二月
GPIO 基础 实验
1. 实验目的
1.了解程序的整体框架。
2.了解 STM32 的 GPIO 接口。
3.使用 GPIO 接口进行简单操作,控制蜂鸣器。
4.了解基本的电路结构和芯片引脚。
2. 实验设备
1. RFID 创新套件实验箱
2. J-Link 一个
3. 实验原理
STM32 的 IO 口可以由软件配置成 8 种模式:浮空输入、带上拉输入、 带下拉输入、模拟输入、 开漏输出、 推挽输出、 复用功能的推挽输出、 复用功能的开漏输出,其中模式 7 和模式 8 需根据具体的复用功能决定。对应到 STM32 库文件中的定义如下:BI7N5gX。wQEE3F0。JCJieGz。
typedef enum
{
GPIO_Mode_AIN = 0x0, //模拟输入
GPIO_Mode_IN_FLOATING = 0x04, //悬空输入
GPIO_Mode_IPD = 0x28, //下拉输入
GPIO_Mode_IPU = 0x48, //上拉输入
GPIO_Mode_Out_OD = 0x14, //开漏输出
GPIO_Mode_Out_PP = 0x10, //推挽输出
GPIO_Mode_AF_OD = 0x1C, //开漏复用
GPIO_Mode_AF_PP = 0x18 //推挽复用
} GPIOMode_Typedef;
STM32 的 GPIO 端口在作为输出时,可以软件配置端口最大支持的时钟速率,有以下几种:时钟速率 10MHz、时钟速率 2MHz、时钟速率 50MHz,对应到 STM32 库中定义如下:v26VNy1。fVkTjah。Ya6BbS3。
typedef enum
{
GPIO_Speed_10MHz = 1,
GPIO_Speed_2MHz,
GPIO_Speed_50MHz
} GPIOSpeed_TypeDef;
为了降低 STM32 处理器的功耗,可以依据实际的要求,选择合适的时钟速率,GPIO 口
支持的最大速率越低,它产生的功耗也越低。
蜂鸣器控制管脚为 PE4。蜂鸣器的电路原理图如下。
在对 STM32 的 GPIO 管脚有一定了解后,我们看一个完整的 GPIO 端口初始化的例子。GPIO_InitTypeDef GPIO_InitStructure;MuRswaT。FlB5QcK。1b9ra4L。
//配置使用的 GPIO 时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);SFrUKTn。oUjFaTw。fm4SjPb。
//配置用到的管脚
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
//配置 GPIO 口输出模式
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
//配置 GPIO 口速率
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
//使蜂鸣器相关的 GPIO 口初始化
GPIO_Init(GPIOE, &GPIO_InitStructure);
//关闭蜂鸣器,使对应的 GPIO 口输出为 0。
GPIO_ResetBits(GPIOE, GPIO_Pin_4);
4. 实验步骤
1. 在 STM32 实验平台上插上 J-Link 烧录线,接通 RFID 创新套件实验箱电源。
2. 打开实验箱开关以及 STM32 实验平台的开关。
3.在J-Flash中打开光盘\RFID创新套件\03 实验教程\02 STM32基础实验目录下的GPIO基础ufXzaMf。eEuhvSd。DKECBIR。
实验.hex 文件。
4. 将程序烧录到芯片中。
5. 可以听到蜂鸣器响起。
5. 程序解析
void BEEP_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
//配置使用的 GPIO 时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);KZmIXab。58XcfKp。DnvKPjZ。
//配置用到的管脚
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
//配置 GPIO 口输出模式
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
//配置 GPIO 口速率
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
//使蜂鸣器相关的 GPIO 口初始化
GPIO_Init(GPIOE, &GPIO_InitStructure);
//关闭蜂鸣器,使对应的 GPIO 口输出为 0。
GPIO_ResetBits(GPIOE, GPIO_Pin_4);
}
/**************************************************************************sDiy4vP。kLpWUmn。LWpLP2P。
* Function Name : main
* Description : Main program.
* Input : None
* Output : None
* Return : None
**************************************************************************/wacheQn。D7sLoxd。TcIpkmh。
void main(void)
{
//STM32 串口初始化函数
UART_Config();
//配置蜂鸣器的 GPIO 管脚 PE4
BEEP_Config();
show_menu();
//关闭液晶显示屏的背光
turnoff_lcd();
//关闭蜂鸣器
GPIO_SetBits(GPIOE, GPIO_Pin_4);
while (1);
}
6.实验结果
1、程序烧录
2、实验效果蜂鸣器响
7.实验总结
学生实验 心得
通过这次的实验在一定程度上,了解了GPIO原理,进一步熟悉了STM32开发板基本组成电路,并且能够通过使用手册和自己所掌握的编程基础,对该芯片进行编程从而达到实验要求。在实验过程中也遇到过一些问题,比如一开始没有GPIO_Mode_IN_FLOATING = 0x04, //悬空输入,使得程序能够烧录,却不能够得到实验效果。在这一点上,查阅有关资料才得以解决。重要的是通过这次实验不仅对stm32有了深一步的理解,同时也锻炼了自己的动手能力和查阅资料的能力。
学生(签名):
年 月 日
指导
教师
评语
成绩评定:
指导教师(签名):
年 月 日
展开阅读全文