1、RFID的GPIO基础实验 本科生实验报告 实验课程 RFID 学院名称 信息科学与技术学院 专业名称 物联网工程 学生姓名 曹林鑫 学生学号 20141060301
2、指导教师 方勇 实验地点 6B608 实验成绩 二〇一六 年十二 月 二〇一六年十二月 GPIO 基础 实验 1. 实验目的 1.了解程序的整体框架。 2.了解 STM32 的 GPIO 接口。 3.使用 GPIO 接口进行简单操作,控制蜂鸣器。 4.了解基本的电路结构和芯片引脚。 2. 实验设备 1.
3、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,
4、//下拉输入 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。Y
5、a6BbS3。 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。FlB5
6、QcK。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; //使
7、蜂鸣器相关的 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 文件
8、 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_M
9、ode = 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
10、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
11、 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有了深一步的理解,同时也锻炼了自己的动手能力和查阅资料的能力。 学生(签名): 年 月 日 指导 教师 评语 成绩评定: 指导教师(签名): 年 月 日
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818