MSPM0L1306 控制 TB6612 驱动 JBGB37-520 电机代码示例
#include <msp430.h>
#define PWM_PERIOD 1000
void initPWM() { TA0CCR0 = PWM_PERIOD; // 设置PWM周期 TA0CCTL1 = OUTMOD_7; // 设置PWM模式为Reset/Set模式 TA0CCTL2 = OUTMOD_7; TA0CCTL3 = OUTMOD_7; TA0CCTL4 = OUTMOD_7; TA0CTL = TASSEL_2 + MC_1; // 选择SMCLK作为时钟源,设置为Up模式
P1DIR |= BIT2 + BIT3 + BIT4 + BIT5; // 设置P1.2、P1.3、P1.4、P1.5为输出
P1SEL |= BIT2 + BIT3 + BIT4 + BIT5; // 设置P1.2、P1.3、P1.4、P1.5为TA0.1、TA0.2、TA0.3、TA0.4引脚
}
void setMotorSpeed(int motor, int speed) { switch (motor) { case 1: TA0CCR1 = speed; break; case 2: TA0CCR2 = speed; break; case 3: TA0CCR3 = speed; break; case 4: TA0CCR4 = speed; break; } }
void setup() { WDTCTL = WDTPW + WDTHOLD; // 停用看门狗定时器 BCSCTL1 = CALBC1_16MHZ; // 设置DCO频率为16MHz DCOCTL = CALDCO_16MHZ; P1DIR |= BIT0 + BIT1; // 设置P1.0和P1.1为输出 P1OUT &= ~(BIT0 + BIT1); // 将P1.0和P1.1设置为低电平
initPWM(); // 初始化PWM
}
int main(void) { setup();
while (1)
{
// 设置电机1正转,速度为500
setMotorSpeed(1, 500);
// 设置电机2正转,速度为500
setMotorSpeed(2, 500);
// 设置电机3正转,速度为500
setMotorSpeed(3, 500);
// 设置电机4正转,速度为500
setMotorSpeed(4, 500);
__delay_cycles(1000000); // 延时1秒
// 设置电机1反转,速度为500
setMotorSpeed(1, -500);
// 设置电机2反转,速度为500
setMotorSpeed(2, -500);
// 设置电机3反转,速度为500
setMotorSpeed(3, -500);
// 设置电机4反转,速度为500
setMotorSpeed(4, -500);
__delay_cycles(1000000); // 延时1秒
}
}
原文地址: https://www.cveoy.top/t/topic/pIs2 著作权归作者所有。请勿转载和采集!