垂柳工作室 发表于 2024-6-30 23:53:36

PWM寄存器配置的疑问(OC1FE必须在通道打开时才能写)

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=110,PWM模式1;
                                                //OC1PE =1;开起输出比较预装载使能
                                                //CC1FE =0,输出快速比较使能,CC1正常操作;
                                                //CC1S=00,捕获/比较方向为输出
         //PWMA_CCER1 = 0X00,即CC1E=0;PWMA_CCMR1 = 0X68,即OC1PE =1



这里感觉有矛盾。
        PWMA_CCER1 = 0x04;                        //开启输出比较通道
       
        PWMA_BKR = 0X80;                        //使能主输出
       
        PWMA_CR1 |= 0X01;                        //启动计数器
}


xxkj2010 发表于 2024-7-1 08:13:25

自己检验一下,就知道行不行。
页: [1]
查看完整版本: PWM寄存器配置的疑问(OC1FE必须在通道打开时才能写)