飞思卡尔单片机DZ60---边沿对齐PWM

#include <hidef.h> /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */


/*************************************************************/
/*                  初始化总线时钟PEE模式                    */
/*              外部晶振频率为4MHz,总线频率16MHz            */
/*************************************************************/
void INIT_MCG(void) 
{
  MCGC2=0x36;        
  while(!MCGSC_OSCINIT);     
  MCGC1=0xb8;
  while(MCGSC_IREFST);
  while(MCGSC_CLKST!=0b10);
  MCGC2_LP = 1;
  MCGC1 = 0x90;
  MCGC3 = 0x48;     
  MCGC2_LP = 0;
  while(!MCGSC_PLLST);
  while(!MCGSC_LOCK);
  MCGC1 = 0x10;
  while(MCGSC_CLKST!=0b11);
} 

/*************************************************************/
/*                      初始化TPM1ch0                        */
/*************************************************************/
void INIT_TPM1CH0(void) 
{
  TPM1SC = 0X0F;//TPM1时钟源为系统总线,中断溢出禁止,16M 128分频,脉冲周期8us
  TPM1MOD  =  62500 + + TPM1CNT; //工作模式为边缘对齐PWM输出,高有效,禁止中断?
  TPM1C0SC = 0X28;   //工作模式为边缘对齐PWM输出,高有效,禁止中断;
  TPM1C0V = 12500;   //有效部分占20%,占空比为20%?  12500/62500= 0.2
 
  
}


/*************************************************************/
/*                      初始化TPM1ch1                        */
/*************************************************************/
void INIT_TPM1ch1(void)
{
  TPM1C1SC = 0X24;   //工作模式为边缘对齐PWM输出,低有效,禁止中断
  TPM1C1V = 50000;   //有效部分占80%,占空比为20%
}



/*************************************************************/
/*                          主函数                           */
/*************************************************************/
void main(void) {
  DisableInterrupts; 
  SOPT1=0;    //关闭看门狗
  INIT_MCG();
  INIT_TPM1CH0();
  INIT_TPM1ch1();
  EnableInterrupts; 

  for(;;) {
  }
}











你可能感兴趣的:(飞思卡尔单片机DZ60---边沿对齐PWM)