GPIO輸出智能小车实验指导手册.docxVIP

  • 2
  • 0
  • 约 17页
  • 2016-12-06 发布于重庆
  • 举报
GPIO輸出智能小车实验指导手册

实验一 小车方向控制【实验目的】熟悉Keil开发环境的使用;熟悉STM32F107v实验板;学习通过GPIO的置位/复位寄存器来控制相应的GPIO口的电平;【实验设备】●硬件:基于STM32F107v单片机的智能小车,PC机;● 软件: KEIL uVision4 集成开发环境,Windows 98/NT/2000/XP;【实验内容】熟练使用C语言对I/O口进行正确配置;使用C语言实现对I/O口进行读写访问;实现对小车方向的控制;【实验原理】 1, GPIO特性 每个通用输入/输出端口有2个32位的配置寄存器(GPIOx_CRL, GPIOx_CRH),2个32位的上数据寄存器(GPIOx_IDR,GPIOx_ODR),一个32位的置位/复位寄存器 (GPIOx_BSRR),一个16位的复位寄存器(GPIOx_BRR)和一个32位的锁定寄存器(GPIOx_LCKR)。 通用输入/输出的每个端口位可以由软件单独的配置成以下几种模式: 输入浮动(GPIO_Mode_IN_FLOATING)输入上拉(GPIO_Mode_IPU) 输入下拉(GPIO_Mode_IPD) 模拟输入(GPIO_Mode_AIN) 输出开漏(GPIO_Mode_Out_OD) 输出推拉模式(GPIO_Mode_Out_PP) 备用功能推拉(GPIO_Mode_AF_PP) 备用功能开漏(GPIO_Mode_AF_OD) 每个I/O 端口位可以自由的编程,尽管I/O端口寄存器必须以32位字的方式访问(不允许以半字或者字节的方式访问)。GPIOx_BSRR 和 GPIOx_BRR 寄存器的目的就是用来允许对GPIO寄存器进行原子的读/修改操作。在这种方式下,当IRQ(中断请求)发生在读和修改操作之间时就不会带来风险。107中新增加了G、F这两个口的GPIO,即GPIO由原来103的80个增加到112个。2,电机驱动模块图一,电机驱动模块如图所示,通过对X(A,B,C,D)的两个端口X1,X2的输入电平控制,可以控制电机的运转方向,同时也就实现了小车的方向控制。3,电路连接图 图二,小车电机方位图图三,系统电路连接图【实验步骤】1,编写实验程序,并编译成功;2,连接仿真器,打开目标板电源,将编译成功程序烧入目标板;3,实验结果为;当运行方向控制函数(Forward(),Backward()…)时,LED显示屏上会闪烁显示相应方向信息,同时小车向相应方向运行。【部分参考代码】…配置所用的I/O口void GPIO_Configuration(void){ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOD, GPIO_InitStructure);}前进控制void Forward(void){ LCD_DisplayStringLine(Line4, FORWARD);/*使能驱动模块*/ GPIO_SetBits(GPIOC, GPIO_Pin_0); GPIO_SetBits(GPIOC, GPIO_Pin_1); GPIO_SetBits(GPIOA, GPIO_Pin_3); GPIO_SetBits(GPIOA, GPIO_Pin_4);/*小车前进时,I/O口电平配置*/ GPIO_ResetBits(GPIOC, GPIO_Pin_3); GPIO_SetBits(GPIOC, GPI

文档评论(0)

1亿VIP精品文档

相关文档