金牌会员
- 积分
- 1680
- 威望
- 974
- 贡献
- 374
- 兑换币
- 121
- 注册时间
- 2012-3-22
- 在线时间
- 166 小时
- 毕业学校
- 沈阳化工大学
|
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
void SCI0_Init(void);
void delay(void);
void SET_PLL(void);
void PWM_Init(void);
void SendChar(unsigned char text);
unsigned char loop_index;
void SCI0_Init(void)
{
SCI0BD=312.5;
SCI0CR1=0x00;
SCI0CR2=0x0c;
}
/*****************锁相环程序*****************/
void SET_PLL(void)
{ //设置锁相环时钟频率为48M
SYNR=2;
REFDV=1; //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)
asm NOP;
asm NOP;
asm NOP;
while((CRGFLG&0X08)==0);//等待锁相环频率锁定
CLKSEL=0X80; //选定锁相环时钟
}
void SendChar(unsigned char text)
{ while (!(SCI0SR1&0x80));
SCI0DRH=0;
SCI0DRL =text;
}
void delay(void)
{
unsigned int loop_i,loop_j;
for(loop_i=0;loop_i<500;loop_i++)
{
for(loop_j=0;loop_j<500;loop_j++)
{
;
}
}
}
/*****************PWM初始化程序***************/
void PWM_Init(void)
{
PWME=0X00;//关闭所有PWM输出
PWMPRCLK=0X22;//24M/4=6M
PWMSCLA=0X06; //6M/(2*6)=0.5M
PWMSCLB=0X03; //6M/(2*3)=1M
PWMCTL=0X20; //通道2和通道2合并
PWMCLK=0X3C; //通道23,4,5选择clocksA
PWMPOL=0X3C; //PWM先输出高电平
PWMCAE=0X00; //左对齐
PWMPER23=10000;//周期为10ms
PWMDTY23=1500;//输出角度为0度
PWMPER4 = 100; //5KHz
PWMPER5 = 100; //5KHz
PWMDTY4 =30;//初始速度设置为0
PWMDTY5 =0;
PWME=0X3C;//开启PWM23,PWM4,PWM5
}
void main(void)
{
//unsigned char loop_index;
SCI0_Init();
PWM_Init();
for(loop_index=0;loop_index<100;loop_index++)
{
while(!SCI0SR1_TDRE)//等待发送缓冲区空
SCI0DRL=loop_index;
SendChar(SCI0DRL);
PWMDTY4 =15;
delay();
}
while(1)
{
}
}
|
|