#include \"derivative.h\" /* derivative-specific definitions */
void PLL_Init(void) //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1) { //锁相环时钟=2*16*(2+1)/(1+1)=48MHz REFDV=1; //总线时钟=48/2=24MHz SYNR=2;
while(!(CRGFLG&0x08));
CLKSEL=0x80; //选定锁相环时钟 }
//-----PWM 初始化程序------// void PWM2_Init(void) {
PWME_PWME2=0x00; // Disable PWM 禁止
PWMPRCLK=0x13; // 0011 0011 A=B=24M/8=3M 时钟预分频寄存器设置 PWMSCLA=150; // SA=A/2/150=10k 时钟设置 PWMSCLB=6; // SB=B/2/15 =100k 时钟设置
PWMCLK_PCLK2=1; // PWM3-----SB 时钟源的选择 PWMPOL_PPOL2=1; // Duty=High Time 极性设置 PWMCAE_CAE2=0; // Left-aligned 对齐方式设置 PWMCTL=0x00; // no concatenation 控制寄存器设置
PWMPER2=200; // Frequency=SB/100=1K 周期寄存器设置 PWMDTY2=80; // Duty cycle = 50% 占空比寄存器设置
PWME_PWME2=1; // Enable PWM 使能 }
void PWM3_Init(void) {
PWME_PWME3=0x00; // Disable PWM 禁止
PWMPRCLK=0x13; // 0011 0011 A=B=24M/8=3M 时钟预分频寄存器设置 PWMSCLA=150; // SA=A/2/150=10k 时钟设置 PWMSCLB=6; // SB=B/2/15 =100k 时钟设置
PWMCLK_PCLK3=1; // PWM3-----SB 时钟源的选择 PWMPOL_PPOL3=1; // Duty=High Time 极性设置 PWMCAE_CAE3=0; // Left-aligned 对齐方式设置 PWMCTL=0x00; // no concatenation 控制寄存器设置
PWMPER3=200; // Frequency=SB/100=1K 周期寄存器设置 PWMDTY3=80; // Duty cycle = 50% 占空比寄存器设置
PWME_PWME3=1; // Enable PWM 使能 }
void PIT_init(void) {
PITCFLMT = 0x00;
PITCE_PCE0 = 1; //使能定时器通道0 PITMUX =0x00; PITMTLD0 = 0x1D; PITLD0 = 0x004F; PITINTE =0x01; PITCFLMT = 0x80; }
#pragma CODE_SEG __NEAR_SEG NON_BANKED interrupt VectorNumber_Vpit0 void PIT_ISR(void) {
PITTF_PTF0 = 1;//清中断标志 PWM3_Init(); }
#pragma CODE_SEG DEFAULT
void main(void) {
PLL_Init(); PWM2_Init(); EnableInterrupts; PIT_init();
for(;;) { ; } }
因篇幅问题不能全部显示,请点此查看更多更全内容