- [cpp] view plaincopy
- #include <hidef.h> /* for EnableInterrupts macro */
- #include "derivative.h" /* include peripheral declarations */
-
- //中央对齐 PWM实验,TPM1通道0和1对应的管脚为PTD3,PTD4分别接LED3,LED4
- //实验现象LED3,LED4闪烁的周期都为0.5秒,闪烁的时长不同。
-
- /*************************************************************/
- /* 初始化总线时钟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);
- }
-
-
- void INIT_TPM1CH0_TPM1CH1(void)
- {
- //初始化
- //第一步:写TPM1状态与控制寄存器。
- TPM1SC = 0X2F;//禁止中断,CPWMS=1选择中间对齐的PWM模式,选择系统时钟, 128分频,脉冲周期为0.8us
- TPM1CNT = 0;
-
- //第二步:设置TPM1计数器TPM1CNT,周期设置为0.5s,周期 = 2 * TPM1MOD,则 TPM1MOD = 62500/2 = 31250.
- TPM1MOD = 31250-1; //设置脉冲周期为0.5s
-
- //第三步:设置定时器通道对应的状态与控制寄存器TPMCnSC(n为0.1.。。。)
- TPM1C0SC = 0X08;//高电平为有效电平
- TPM1C1SC = 0X04;//低电平为有效电平
-
- //第四步 设置通道辅助寄存器.占空比 由 通道富足寄存器决定。
- TPM1C0V = 6250;//通道0占空比20%,31250*0.2.
- TPM1C1V = 25000;//通道1占空比80%,31250*0.2.
-
- }
-
-
-
- void main(void) {
-
- DisableInterrupts;
- SOPT1 = 0;
- INIT_MCG();
- EnableInterrupts;
-
-
- INIT_TPM1CH0_TPM1CH1();
- while(1);
-
- }
|