標(biāo)題: STM32 pwm調(diào)速小車 代碼看附件 [打印本頁]

作者: 2479408246    時間: 2019-5-4 14:24
標(biāo)題: STM32 pwm調(diào)速小車 代碼看附件
/************************************************************************
                 STM32  pwm調(diào)速小車
                                                                 
PB5,PB6 接直流電機驅(qū)動器IN1 IN2,用于小車前進后退及調(diào)速
PB7,PB8 接直流電機驅(qū)動器IN3 IN4,用于小車轉(zhuǎn)向,為加入轉(zhuǎn)向速度調(diào)節(jié)
PA0(高電平有效)接無線輸入D0引腳 小車前進
PA1(高電平有效)接無線輸入D1引腳 小車后進
PA2(高電平有效)接無線輸入D2引腳 小車左轉(zhuǎn)進
PA3(高電平有效)接無線輸入D3引腳 小車右轉(zhuǎn)進
PA4(高電平有效)接按鈕開關(guān) 用于小車調(diào)速

************************************************************************/
#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();                     //延時函數(shù)初始化          
        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輸出函數(shù)
                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輸出函數(shù)
                TIM_SetCompare1(TIM4,pwmval4);                                       
                                        break;
                        case KEYC_PRES:        //左轉(zhuǎn)
                               
                            INA3_1
                                  INA4_0
                                        TIM_SetCompare2(TIM3,pwmval);        //pwm輸出函數(shù)
                                        TIM_SetCompare1(TIM4,pwmval4);
                                        break;
                        case KEYD_PRES:        //右轉(zhuǎn)
                               
                            INA4_1
                                  INA3_0
                           TIM_SetCompare2(TIM3,pwmval);        //pwm輸出函數(shù)
               TIM_SetCompare1(TIM4,pwmval4);
                                        break;
                                case KEYE_PRES://調(diào)速
                                          numval++;
                                    numval4++;
                                        if(numval>6)        numval=1;        //值不能設(shè)為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輸出函數(shù)
             TIM_SetCompare1(TIM4,0);       
                         INA4_0;  INA3_0;
                 }
               
}
}



QQ截圖20190504141503.png (89.94 KB, 下載次數(shù): 55)

QQ截圖20190504141503.png

QQ截圖20190504141529.png (100.41 KB, 下載次數(shù): 56)

QQ截圖20190504141529.png

Smart car 四建遙控- pwm.zip

311.15 KB, 下載次數(shù): 35, 下載積分: 黑幣 -5

完整代碼


作者: PO999999    時間: 2019-5-5 09:42
學(xué)習(xí)一下
作者: 2479408246    時間: 2019-5-10 11:55
在硬件上已測試,兩個電機接在一個輸出端上。供電沒有問題




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1