智能车制作
标题:
求大神帮我看看这段控制电机的代码
[打印本页]
作者:
E龙
时间:
2014-12-13 21:37
标题:
求大神帮我看看这段控制电机的代码
[attach]72534[/attach][attach]72535[/attach][attach]72533[/attach]
这是板子原理图的部分截图。代码在下面:
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
#define BUS_CLOCK 32000000 //总线频率
#define OSC_CLOCK 16000000 //晶振频率
unsigned char k;
/*************************************************************/
/* 初始化锁相环 */
/*************************************************************/
void INIT_PLL(void)
{
CLKSEL &= 0x7f; //set OSCCLK as sysclk
PLLCTL &= 0x8F; //Disable PLL circuit
CRGINT &= 0xDF;
#if(BUS_CLOCK == 40000000)
SYNR = 0x44;
#elif(BUS_CLOCK == 32000000)
SYNR = 0x43;
#elif(BUS_CLOCK == 24000000)
SYNR = 0x42;
#endif
REFDV = 0x81; //PLLCLK=2×OSCCLK×(SYNR+1)/(REFDV+1)=64MHz ,fbus=32M
PLLCTL =PLLCTL|0x70; //Enable PLL circuit
asm NOP;
asm NOP;
while(!(CRGFLG&0x08)); //PLLCLK is Locked already
CLKSEL |= 0x80; //set PLLCLK as sysclk
}
/*************************************************************/
/* 初始化PWM */
/*************************************************************/
void init_pwm(void)
{
PWMPOL_PPOL0= 1; //通道的极性为高电平有效
PWMPOL_PPOL1= 1; //通道的极性为高电平有效
PWMPOL_PPOL2= 1; //通道的极性为高电平有效
PWMPOL_PPOL3= 1; //通道的极性为高电平有效
PWMPRCLK = 0x22; //A时钟和B时钟的分频系数为4,频率为8MHz
PWMSCLA=0x04; //SA时钟频率为1MHz
PWMSCLB=0x04; //SB时钟频率为1MHz
PWMCLK = 0x0f; //0,1,2,3用SA时钟
PWMCAE = 0x00; //脉冲模式为左对齐模式
PWMPER0 = 100; //通道0的周期为10KHz
PWMPER1 = 100; //通道1的周期为10KHz
PWMPER2 = 100; //通道2的周期为10KHz
PWMPER3 = 100; //通道3的周期为10KHz
PWMDTY0 = 0; //通道0的占空比设置
PWMDTY1 = 0; //通道1的占空比设置
PWMDTY2 = 0; //通道2的占空比设置
PWMDTY3 = 0; //通道3的占空比设置
PWME_PWME0=1; //使能PWM信号
PWME_PWME1=1;
PWME_PWME2=1;
PWME_PWME3=1;
}
/*************************************************************/
/* 延时函数 */
/*************************************************************/
void delay(void)
{
unsigned long i;
for(i=0;i<20000;i++);
}
/*************************************************************/
/* 主函数 */
/*************************************************************/
void main(void)
{
DisableInterrupts;
INIT_PLL();
init_pwm();
EnableInterrupts;
for(;;)
{
for(k=0;k<100;k++) //正转逐渐加速
{
PWMDTY0=k;
PWMDTY1=0;
PWMDTY2=k;
PWMDTY3=0;
delay();
}
for(k=100;k>0;k--) //正转逐渐减速
{
PWMDTY0=k;
PWMDTY1=0;
PWMDTY2=k;
PWMDTY3=0;
delay();
}
for(k=0;k<100;k++) //反转逐渐加速
{
PWMDTY0=0;
PWMDTY1=k;
PWMDTY2=0;
PWMDTY3=k;
delay();
}
for(k=100;k>0;k--) //反转逐渐减速
{
PWMDTY0=0;
PWMDTY1=k;
PWMDTY2=0;
PWMDTY3=k;
delay();
}
}
}
帮我看看代码怎么改,才能控制两个电机转,能转就行~~~小白求大神~~~~
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2