|
#include "stm32f10x.h"
#define MOTOR_A1_PIN GPIO_Pin_2 //電機(jī)A1引腳
#define MOTOR_A2_PIN GPIO_Pin_3 //電機(jī)A2引腳
#define MOTOR_B1_PIN GPIO_Pin_4 //電機(jī)B1引腳
#define MOTOR_B2_PIN GPIO_Pin_5 //電機(jī)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); //電機(jī)A正轉(zhuǎn)
GPIO_ResetBits(GPIOB, MOTOR_A2_PIN);
GPIO_SetBits(GPIOB, MOTOR_B1_PIN); //電機(jī)B正轉(zhuǎn)
GPIO_ResetBits(GPIOB, MOTOR_B2_PIN);
Delay(0xFFFFF); //延時(shí)一段時(shí)間,使智能車前進(jìn)
}
else //按鍵未按下
{
GPIO_ResetBits(GPIOB, MOTOR_A1_PIN); //電機(jī)A停止
GPIO_ResetBits(GPIOB, MOTOR_A2_PIN);
GPIO_ResetBits(GPIOB, MOTOR_B1_PIN); //電機(jī)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時(shí)鐘
//按鍵引腳配置
GPIO_InitStructure.GPIO_Pin = KEY_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉輸入
GPIO_Init(GPIOA, &GPIO_InitStructure);
//電機(jī)引腳配置
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--);
}
/*
這個(gè)代碼實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的按鍵控制智能車前進(jìn)的功能。當(dāng)按鍵按下時(shí),電機(jī)A和電機(jī)B同時(shí)正轉(zhuǎn),使智能車前進(jìn);當(dāng)按鍵未按下時(shí),電機(jī)A和電機(jī)B停止,智能車停止前進(jìn)。
在代碼中,我們使用了兩個(gè)GPIO口控制電機(jī)的正反轉(zhuǎn),其中MOTOR_A1_PIN和MOTOR_B1_PIN控制電機(jī)正轉(zhuǎn),MOTOR_A2_PIN和MOTOR_B2_PIN控制電機(jī)反轉(zhuǎn)。在按鍵引腳(KEY_PIN)被按下時(shí),我們?cè)O(shè)置了電機(jī)正轉(zhuǎn)的引腳,使智能車前進(jìn),同時(shí)使用了一個(gè)簡(jiǎn)單的延時(shí)函數(shù)Delay來(lái)控制智能車前進(jìn)的時(shí)間。當(dāng)按鍵未被按下時(shí),我們關(guān)閉了所有電機(jī)引腳,使智能車停止前進(jìn)。
*/ |
|