PWM感觉没学会,今天又拿冲哥代码对照STC芯片手册研究。发现有一个疑问,手册上写OC1FE必须在通道打开时才能写,冲哥代码是否直接写了。
下面红字部分是我写,其他的是冲哥的代码。
void PWMA_Init(void) //PWMA的初始化
{
//1.时钟源选择 这里不改,默认22.1184mhz
//2.时基单元选择
PWMA_PSCRH = 0; //1分频
PWMA_PSCRL = 0;
PWMA_ARRH = (u8)(PWM_ARR>>8);
PWMA_ARRL = (u8)(PWM_ARR);
PWMA_CCR1H = (u8)(PWM_CCR>>8);
PWMA_CCR1L = (u8)(PWM_CCR);
//3.输入输出的引脚配置
PWMA_ENO = 0X00; //使能PWM1n通道输出
PWMA_ENO |= 0X02;
PWMA_PS =0x00; //选择PWM1从P60引脚输出
PWMA_PS |= (2<<0);
//4.输入输出模式设置
//PWMA_CCER1:捕获/比较使能寄存器
PWMA_CCER1 = 0X00; //CC2NP=0;CC2NE=0;CC2P=0;CC2E=0;CC1NP=0;CC1NE=0;CC1P=0;CC1E=0;
PWMA_CCMR1 = 0X68; //0110 1000 pwm模式1 配置置位输出
//OC1CE=0不受外部ETRF输入影响;
//OC1M[2:0]=110,PWM模式1;
//OC1PE =1;开起输出比较预装载使能
//CC1FE =0,输出快速比较使能,CC1正常操作;
//CC1S[1:0]=00,捕获/比较方向为输出
//PWMA_CCER1 = 0X00,即CC1E=0;PWMA_CCMR1 = 0X68,即OC1PE =1
这里感觉有矛盾。
PWMA_CCER1 = 0x04; //开启输出比较通道
PWMA_BKR = 0X80; //使能主输出
PWMA_CR1 |= 0X01; //启动计数器
}
|