|
/************************************************************************
STM32 pwm調速小車
PB5,PB6 接直流電機驅動器IN1 IN2,用于小車前進后退及調速
PB7,PB8 接直流電機驅動器IN3 IN4,用于小車轉向,為加入轉向速度調節
PA0(高電平有效)接無線輸入D0引腳 小車前進
PA1(高電平有效)接無線輸入D1引腳 小車后進
PA2(高電平有效)接無線輸入D2引腳 小車左轉進
PA3(高電平有效)接無線輸入D3引腳 小車右轉進
PA4(高電平有效)接按鈕開關 用于小車調速
************************************************************************/
#include "stm32f10x.h"
#include "smartcar.h"
#include "usart_2.h"
#include "pwm.h"
#include "delay.h"
#include "KEY.h"
int main(void)
{
u16 numval= 1;
//u16 numval3=0;
u16 numval4=1;
u16 pwmval= 0;
u16 pwmval4=0;
vu8 key=0;
smartcar_Init();//智能小車GPIO初始化
TIM3_PWM_Init(899,0); //不分頻。PWM頻率=72000000/900=80Khz
TIM4_PWM_Init(899,0); //不分頻。PWM頻率=72000000/900=80Khz
delay_init(); //延時函數初始化
KEY_Init(); //初始化與按鍵連接的硬件接口
while(1)
{
key=KEY_Scan(0); //得到鍵值
if(key)
{
switch(key)
{
case KEYA_PRES://前進
switch(numval)
{
case 1: pwmval=350; pwmval4=0;break;
case 2: pwmval=450; pwmval4=0;break;
case 3: pwmval=550; pwmval4=0;break;
case 4: pwmval=650; pwmval4=0;break;
case 5: pwmval=750; pwmval4=0;break;
case 6: pwmval=899; pwmval4=0;break;
}
INA3_0; INA4_0;
TIM_SetCompare2(TIM3,pwmval); //pwm輸出函數
TIM_SetCompare1(TIM4,pwmval4);
break;
case KEYB_PRES://后退
switch(numval4)
{
case 1: pwmval4=350;pwmval=0;break;
case 2: pwmval4=450;pwmval=0;break;
case 3: pwmval4=550;pwmval=0;break;
case 4: pwmval4=650;pwmval=0;break;
case 5: pwmval4=750;pwmval=0;break;
case 6: pwmval4=899;pwmval=0;break;
}
INA3_0; INA4_0;
TIM_SetCompare2(TIM3,pwmval); //pwm輸出函數
TIM_SetCompare1(TIM4,pwmval4);
break;
case KEYC_PRES: //左轉
INA3_1
INA4_0
TIM_SetCompare2(TIM3,pwmval); //pwm輸出函數
TIM_SetCompare1(TIM4,pwmval4);
break;
case KEYD_PRES: //右轉
INA4_1
INA3_0
TIM_SetCompare2(TIM3,pwmval); //pwm輸出函數
TIM_SetCompare1(TIM4,pwmval4);
break;
case KEYE_PRES://調速
numval++;
numval4++;
if(numval>6) numval=1; //值不能設為0,否則高速無法換向
if(numval4>6) numval4=1;
break;
case KEYF_PRES://停止
pwmval =0;
pwmval4=0;
INA4_0
INA3_0
break;
}
}
if(KEYA==0&&KEYB==0&&KEYC==0&&KEYD==0&&KEYE==0&&KEYF==0)
{
TIM_SetCompare2(TIM3,0); //pwm輸出函數
TIM_SetCompare1(TIM4,0);
INA4_0; INA3_0;
}
}
}
|
評分
-
查看全部評分
|