- /*************************************PWM0初始化****************************************/
- void PWM_init(void)
- {
- P2M1 = P2M1&0xF0|0x08; //P22设置为推挽输出
- P1M0 = P1M0&0xF0|0x08; //P10设置为推挽输出
-
- PWM0_MAP = 0x07; //PWM0通道映射P07口
- PWM01_MAP = 0x10; //PWM01通道映射P10口
- PWM0C = 0x01; //PWM0、PWM01高有效,时钟8分频
-
- //独立模式下,PWM0和PWM01共用一个周期寄存器
- //周期计算 = 0x03E8 / (Fosc / PWM分频系数) = 0x03E8 / (16000000 / 8) = 500us / 2kHz
-
- PWM0PH = 0x03;
- PWM0PL = 0xE8;
-
- //占空比计算= 0x0155 / (Fosc / PWM分频系数)
- // = 0x01F4 / (16000000 / 8) = 500 / 2000000 = 250us 占空比为250/500 = 50%
-
- PWM0DH = 0x01; //PWM0高4位
- PWM0DL = 0xF4; //PWM0低8位
- PWM0DTH = 0x01; //PWM01高4位
- PWM0DTL = 0xF4; //PWM01低8位
- PWM0EN = 0x0F; //使能PWM0,工作于独立模式
- }
|