#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
#define uint unsigned int
#define uchar unsigned char
#define DJ_MID_CAMERA 4500 //45 //右极限1200;左极限7000;
#define DJ_MID_RUDDER 4500 //67 //左拐极限4900;右拐极限4100;
#define DJ_camera PWMDTY45 //60000
#define DJ_rudder PWMDTY67 //60000
#define MOTOR_go PWMDTY01 //6000 前进
#define MOTOR_back PWMDTY23 //6000 倒后
#define H1 PT1AD0_PT1AD07 //片选
#define H2 PT1AD0_PT1AD06
#define H3 PT1AD0_PT1AD05
#define H4 PT1AD0_PT1AD04
#define DA PT1AD0_PT1AD03 //数据输出
#define SC PT1AD0_PT1AD02 //移位时钟
#define ST PT1AD0_PT1AD01 //锁存信号
#define PITTIME0 50000//设定为300MS定时
#define PITTIME1 2400 //设定为12MS定时
uint counter=0,PITcounter=0,overflow_times=0,remain_num=0,speed=0;
uchar table[]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//表:共阳数码管 0-9
//PLL超频到48MHZ//
/////////////////////////////////////////
void PLL_Init(void){ //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)即 锁相环时钟=2*16*(2+1)/(1+1)=48MHz
REFDV=0x01; //总线时钟=48/2=24MHz
SYNR=0x02;
while(!(CRGFLG&0x08)); //wait until pll_lock=0;锁相环频率为锁定;
CLKSEL=0x80; //置位PLLSEL=1;选定锁相环时钟;
}
///PWM初始化/////
void PWM_Init(void){
PWME=0x00;
PWMCTL=0xF0; ///级联01,23,45,67
PWMPRCLK=0x22; /// A时钟、B时钟,1/4分频 A=B=24M/4=6M SA=SB=3M
PWMSCLA=0x01; //时钟SA=时钟A/2/1=3M 时钟SA =时钟A/(2*PWMSCLA)
PWMSCLB=0x01; //时钟SB=时钟B/2/1=3M 时钟SB =时钟B/(2*PWMSCLB)
PWMCLK=0xF0; ////时钟A控制01,B控23,SA控制45,SB控制67
PWMPOL=0xFF; ///对外输出波形先是高电平然后再变为低电平
PWMCAE=0x00; ///左对齐输出
PWMPER23=600; ///01前进 6MHz/600=10KHz
PWMDTY23=0;
PWMPER01=600; ///23后退 6MHz/600=10KHz
PWMDTY01=0;
PWMPER45=60000; //45摄像头舵机 频率为3MHz/60000=50Hz 周期为20ms
PWMDTY45=DJ_MID_CAMERA; ///摄像头舵机初值归中
PWMPER67=60000; //67方向舵机 频率为3MHz/60000= 50Hz 周期为20ms
PWMDTY67=DJ_MID_RUDDER; ///方向舵机初值归中
PWME=0xFF; //启动PWM
}