|
当时的一些备注:
第一次审核不过,我觉得有这些知识的一看就懂啊。下面是BTS7970电机驱动程序,桥式驱动(不用解释吧,正转反转,停止都可以)。程序后面都有注释了,而且是汉语,应该能看懂的哈。下面简单说下原理:
PWM是反逻辑,因为在单片机与电机驱动间加了反向驱动隔离,保护单片机。所以占空比越小,方向后是越大,速度越快。
注意:PWM频率最大25KHZ,用在智能车上1KHZ就足够了。(就这么多,智能车上电机驱动模块程序!)
#include <hidef.h> /* common defines and macros */#include "derivative.h" /* derivative-specific definitions *//************************************************//*锁相环倍频*//************************************************/void pll_xs(void){ SYNR=0x44; REFDV=0x81;//总线频率40M while(!CRGFLG_LOCK); while(CLKSEL_PLLSEL!=1) CLKSEL_PLLSEL=1;}/***********************************************//*PWM初始化!*//************************************************/void PWM_int(void) { PWMPOL|=0xaa;//PWM Polarity开始输出高电平,1、3、5、7 positive. PWMCLK|=0xaa;//Clock Select, Sn,B:7632.A:0145 PWMPRCLK=0x22;//CLOCKA和CLOCKB是4分频是10M PWMCTL=0xf0; PWMSCLA=5;//1M PWMSCLB=5;//1M PWMCAE=0x00; PWMDTY01=900; PWMPER01=1000; PWME=0xaa; //PWM Enable,1、3、5、7 enable.}/************************************************/void main(void) { pll_xs();//倍频 DDRB=0xff; PORTB|=0xff; PORTB&=0xfe;//PB0和PB1用来控制电机转向的 EnableInterrupts; PWM_int(); for(;;) { _FEED_COP(); /* feeds the dog */ } /* loop forever */ /* please make sure that you never leave main */} |
|