#include "stm32f10x.h"
#define MOTOR_A1_PIN GPIO_Pin_2 //电机A1引脚
#define MOTOR_A2_PIN GPIO_Pin_3 //电机A2引脚
#define MOTOR_B1_PIN GPIO_Pin_4 //电机B1引脚
#define MOTOR_B2_PIN GPIO_Pin_5 //电机B2引脚
#define KEY_PIN GPIO_Pin_0 //按键引脚
void GPIO_Configuration(void);
void Delay(__IO uint32_t nCount);
int main(void)
{
GPIO_Configuration();
while(1)
{
if(GPIO_ReadInputDataBit(GPIOA,KEY_PIN) == 0) //按键按下
{
GPIO_SetBits(GPIOB, MOTOR_A1_PIN); //电机A正转
GPIO_ResetBits(GPIOB, MOTOR_A2_PIN);
GPIO_SetBits(GPIOB, MOTOR_B1_PIN); //电机B正转
GPIO_ResetBits(GPIOB, MOTOR_B2_PIN);
Delay(0xFFFFF); //延时一段时间,使智能车前进
}
else //按键未按下
{
GPIO_ResetBits(GPIOB, MOTOR_A1_PIN); //电机A停止
GPIO_ResetBits(GPIOB, MOTOR_A2_PIN);
GPIO_ResetBits(GPIOB, MOTOR_B1_PIN); //电机B停止
GPIO_ResetBits(GPIOB, MOTOR_B2_PIN);
}
}
}
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE); //使能GPIOA和GPIOB时钟
//按键引脚配置
GPIO_InitStructure.GPIO_Pin = KEY_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入
GPIO_Init(GPIOA, &GPIO_InitStructure);
//电机引脚配置
GPIO_InitStructure.GPIO_Pin = MOTOR_A1_PIN | MOTOR_A2_PIN | MOTOR_B1_PIN | MOTOR_B2_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
void Delay(__IO uint32_t nCount)
{
for(; nCount != 0; nCount--);
}
/*
这个代码实现了一个简单的按键控制智能车前进的功能。当按键按下时,电机A和电机B同时正转,使智能车前进;当按键未按下时,电机A和电机B停止,智能车停止前进。
在代码中,我们使用了两个GPIO口控制电机的正反转,其中MOTOR_A1_PIN和MOTOR_B1_PIN控制电机正转,MOTOR_A2_PIN和MOTOR_B2_PIN控制电机反转。在按键引脚(KEY_PIN)被按下时,我们设置了电机正转的引脚,使智能车前进,同时使用了一个简单的延时函数Delay来控制智能车前进的时间。当按键未被按下时,我们关闭了所有电机引脚,使智能车停止前进。
*/ |