MSP430F5529 驱动直流电机控制车速 C语言代码详解
///'#include ///'msp430f5529.h///'/n///'#define CPU_F ((double)1000000)///'/n///'#define delay_us(x)__delay_cycles((long)(CPU_F*(double)x/1000000.0))///'/n///'#define delay_ms(x)__delay_cycles((long)(CPU_F*(double)x/1000.0))///'/n/n///'unsigned int DC_motor=100;///'/n///'unsigned int i=100;///'/n/n///'void Duoji_init()///'/n///'{///'/n///'//tP2DIR |= BIT0; // P2.0 output///'/n///'//tP2SEL |= BIT0; // P2.0 options select///'/n///'//tTA1CCR0 = 20000; // PWM Period = 20ms///'/n///'//tTA1CCTL1 = OUTMOD_7; // CCR1 reset/set///'/n///'//tTA1CCR1 = 1500; // CCR1 PWM duty cycle///'/n///'//tTA1CTL = TASSEL_2 + MC_1 + TACLR ; // SMCLK, up mode, clear TAR.///'/n///'}/n/n///'void DC_Motor_init()///'/n///'{///'/n///'//tP2DIR |= BIT4 + BIT5; // P2.4,P2.5 output.///'/n///'//tP2SEL |= BIT4 + BIT5; // P2.4,P2.5 options select///'/n///'//tTA2CCR0 = 200; // PWM Period = 0.2ms///'/n///'//tTA2CCTL1 = OUTMOD_7; // CCR1 reset/set///'/n///'//tTA2CCR1 = 0; // CCR1 PWM duty cycle///'/n///'//tTA2CCTL2 = OUTMOD_7; // CCR2 reset/set///'/n///'//tTA2CCR2 = 0; // CCR2 PWM duty cycle///'/n///'//tTA2CTL = TASSEL_2 + MC_1 + TACLR ; // SMCLK, up mode, clear TAR.///'/n///'}/n/n///'void main(void)///'/n///'{///'/n///'//tWDTCTL = WDTPW + WDTHOLD; // Stop WDT///'/n///'//tdelay_ms(1000);///'/n///'//tDuoji_init(); /////'/n///'//tDC_Motor_init();///'/n/n///'//tTA0CCTL0 = CCIE; // CCR0 interrupt enabled///'/n///'//tTA0CCR0 = 5000; // ?///'/n///'//tTA0CTL = TASSEL_2 + MC_1 + TACLR; // SMCLK, upmode, clear TAR///'/n/n///'//tTA2CCR1 = DC_motor;///'/n///'//tTA2CCR2 = DC_motor;///'/n/n/n///'//t__bis_SR_register(LPM0_bits + GIE); // Enter LPM0, enable interrupts///'/n///'//t__no_operation(); // For debugger///'/n///'}/n/n///'#pragma vector=TIMER0_A0_VECTOR // Timer0 A0 interrupt service routine///'/n///'__interrupt void TIMER0_A0_ISR(void)///'/n///'{///'/n///'//tswitch(P6IN&0x1f)///'/n///'//t {///'/n///'//t case 0x0f: //you da///'/n///'//t//t TA1CCR1 = 1500+4i;///'/n///'//t//t break;///'/n///'//t case 0x17: //you xiao///'/n///'//t//t TA1CCR1 = 1500+2i;///'/n///'//t//t break;///'/n///'//t case 0x1b: //zhi///'/n///'//t//t TA1CCR1 = 1500;///'/n///'//t//t break;///'/n///'//t case 0x1d: //zuo xiao///'/n///'//t//t TA1CCR1 = 1500-2i;///'/n///'//t//t break;///'/n///'//t case 0x1e:///'/n///'//t//t TA1CCR1 = 1500-4i; //zuo da///'/n///'//t//t break;///'/n///'//t // case 0:///'/n///'//t // TA1CCR1 = 1500; //zuo da///'/n///'//t // TA2CCR1 = 0;///'/n///'//t // TA2CCR2 = 0;///'/n///'//t // break;///'/n///'//t default:///'/n///'//t//t break;///'/n///'//t }///'/n///'}/n/n要改变车速,可以修改DC_motor变量的值。在main函数中,可以通过修改TA2CCR1和TA2CCR2的值来改变直流电机的PWM占空比,从而改变车速。///
原文地址: https://www.cveoy.top/t/topic/px17 著作权归作者所有。请勿转载和采集!