飞思卡尔单片机DZ60---输入捕捉

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



//TPM1通道0(与PTD2连接第三个LED灯? 产生周期为0.5s占空比为50%的PWM波
//利用TPM2通道0(与PTD0连接第一个LED灯)对这个PWM波的上升沿进行捕捉


/*************************************************************/
/*                  初始化总线时钟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);
} 


//TPM1的通道0与PTD2(连接第三个LED灯)
void INIT_TPM1_CH0(void)
{
  
  TPM1SC  = 0X0F;// 总线时钟128分频。
  TPM1MOD = 62500 + TPM1CNT;//周期为0.5s
  
  TPM1C0SC = 0X28;//边沿脉冲
  TPM1C0V  = 32500;//设置有效脉冲宽度为32500?50%
  
  

}


//TPM2的通道0对上升沿进行捕捉
void INIT_TPM2_CH0(void) 
{
   TPM2SC  = 0X0F;// 总线时钟128分频
   TPM2C0V = 0X44;//开中断,输入捕捉,上升沿

}





void main(void) {

  
  DisableInterrupts;
  SOPT1 = 0;
  EnableInterrupts;
  
  INIT_TPM1_CH0();
  INIT_TPM2_CH0();
  
  while(1);
  
}

你可能感兴趣的:(飞思卡尔单片机DZ60---输入捕捉)