您的当前位置:首页正文

相差半个周期的PWM波

2023-10-30 来源:V品旅游网
#include /* common defines and macros */

#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(;;) { ; } }

因篇幅问题不能全部显示,请点此查看更多更全内容

Top