[cpp] view plaincopy
#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);
}
|