发现一个问题,用PWM0输出PWM波形发现频率不对,直接用客户给的例程发现也不对。
CLKSWR = 0x51; //选择内部高频RC为系统时钟,内部高频RC 2分频,Fosc=16MHz
CLKDIV = 0x01; //Fosc 1分频得到Fcpu,Fcpu=16MHz
/*************************************PWM初始化****************************************/
P7M0 = 0xC2; //P01设置为推挽输出
P0M2 = 0xC2; //P02设置为推挽输出
PWM0_MAP = 0x02; //PWM0通道映射P01口
PWM01_MAP = 0x70; //PWM01通道映射P02口
PWM0C = 0x03; //时钟8分频,使能自动重载
PWMM = 0X01;
PWM0EN = 0x13; //使能PWM1以及PWM01 边沿对齐 PWM0高有效,PWM01高有效 独立模式
//独立模式下,PWM0和PWM01共用一个周期寄存器
//PWM0的占空比调节使用 PWM0组的占空比寄存器
//PWM01的占空比调节使用 PWM0组的死区寄存器
//周期计算 = 0x03ff / (Fosc / PWM分频系数) (Fosc见系统时钟配置的部分)
// = 0x03ff / (16000000 / 8)
// = 1023 /2000000
// = 511.5us 约1.955kHz
PWM0PH = 0x03; //周期高8位设置为0x03
PWM0PL = 0xFF; //周期低8位设置为0xFF
//占空比计算= 0x0155 / (Fosc / PWM分频系数) (Fosc见系统时钟配置的部分)
// = 0x0155 / (16000000 / 8)
// = 341 / 2000000
// = 170.5us 占空比为 170.5/511.5 = 33.3%
PWM0DH = 0x01; //PWM0高8位占空比0x01
PWM0DL = 0x55; //PWM0低8位占空比0x55
PWM0DTH = 0x01; //PWM01高8位占空比0x01
PWM0DTL = 0x55; //PWM01低8位占空比0x55 |