实验一小车方向控制
【实验目的】
●熟悉Keil开发环境的使用;●熟悉STM32F107v实验板;●学习通过GPIO的置位复位寄存器来控制相应的GPIO口的电平;
【实验设备】
●硬件:基于STM32F107v单片机的智能小车,PC机;●软件KEILuVisio
4集成开发环境,Wi
dows98NT2000XP;
【实验内容】
熟练使用C语言对IO口进行正确配置;使用C语言实现对IO口进行读写访问;实现对小车方向的控制;
【实验原理】
1GPIO特性每个通用输入输出端口有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每个IO端口位可以自由的编程,尽管IO端口寄存器必须以32位字的方式访问(不允许以半字或者字节的方式访问)。GPIOx_BSRR和GPIOx_BRR寄存器的目的就是用来允许对GPIO寄存器进行原子的读修改操作。在这种方式下,当IRQ(中断请求)发生在读和修改操作之间时就不会带来风险。107中新增加了G、F这两个口的GPIO,即GPIO由原来103的80个增加到112个。2,电机驱动模块
f图一,电机驱动模块
如图所示,通过对XABCD的两个端口X1,X2的输入电平控制,可以控制电机的运转方向,同时也就实现了小车的方向控制。
3,电路连接图
左前
电机
LED显示屏
右前
小车
STM32F107v左后
右后
图二,小车电机方位图
fSTM32F107v
PA1PA2PA3
PD11PD12PA4
PC2PC3PC1
PD10PD9PC0
驱动模块
A2A1ENA
a1a2
B2B1ENB
b1b2
C2C1ENC
c1c2
D2D1END
d1d2
小车
右后
左后
右前
左前
图三,系统电路连接图
【实验步骤】
1,编写实验程序,并编译成功;2,连接仿真器,打开目标板电源,将编译成功程序烧入目标板;3,实验结果为;当运行方向控制函数(ForwardBackward…)时,LED显示屏上会闪烁显示相应方向信息,同时小车向相应方向运行。
【部分参考代码】
…配置所用的IO口voidGPIO_Co
figuratio
void
GPIO_I
itStructureGPIO_Pi
GPIO_Pi
_1GPIO_Pi
_2GPIO_Pi
_3GPIO_Pi
_4GPIO_I
itStructureGPIO_ModeGPIO_Mode_Out_PPGPIO_I
itStructureGPIO_SpeedGPIO_Speed_50MHzGPIO_I
itGPIOAGPIO_I
itStructure
GPIO_I
itStructureGPIO_Pi
GPIO_Pi
_0GPIO_Pi
_1GPIO_Pi
_2GPIO_Pi
_3GPIO_r