找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3494|回復(fù): 2
收起左側(cè)

STM32 pwm調(diào)速小車 代碼看附件

[復(fù)制鏈接]
ID:144730 發(fā)表于 2019-5-4 14:24 | 顯示全部樓層 |閱讀模式
/************************************************************************
                 STM32  pwm調(diào)速小車
                                                                 
PB5,PB6 接直流電機(jī)驅(qū)動(dòng)器IN1 IN2,用于小車前進(jìn)后退及調(diào)速
PB7,PB8 接直流電機(jī)驅(qū)動(dòng)器IN3 IN4,用于小車轉(zhuǎn)向,為加入轉(zhuǎn)向速度調(diào)節(jié)
PA0(高電平有效)接無線輸入D0引腳 小車前進(jìn)
PA1(高電平有效)接無線輸入D1引腳 小車后進(jìn)
PA2(高電平有效)接無線輸入D2引腳 小車左轉(zhuǎn)進(jìn)
PA3(高電平有效)接無線輸入D3引腳 小車右轉(zhuǎn)進(jì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í)函數(shù)初始化          
        KEY_Init();          //初始化與按鍵連接的硬件接口

       
         
   while(1)
        {

     key=KEY_Scan(0);        //得到鍵值
                   if(key)
                {                                                  
                        switch(key)
                        {       
      case KEYA_PRES://前進(jìn)
                               
                                        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
QQ截圖20190504141529.png

Smart car 四建遙控- pwm.zip

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

完整代碼

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:524764 發(fā)表于 2019-5-5 09:42 | 顯示全部樓層
學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

ID:144730 發(fā)表于 2019-5-10 11:55 | 顯示全部樓層
在硬件上已測(cè)試,兩個(gè)電機(jī)接在一個(gè)輸出端上。供電沒有問題
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表