i_zw 发表于 2024-9-1 20:16:18

使用8H8K64U的PWM生成方波后,请问停止控制如何保持每次停止都在低电平

本帖最后由 i_zw 于 2024-9-1 20:28 编辑

通过PWM产生了需要的频率1.14M Hz。

void PWM_init()
{
          P_SW2 |= 0x80;
          PWMA_PS=0x10;                               //select PWMA3Pin P:P24,N:P25 -useP24
    PWMA_CCER2 = 0x00;                        // before update CCMRx ,reset CCERx to close PWMA/B channel, clear
    PWMA_CCMR3 = 0x60;                        //set PWMA channel,mode 1
    PWMA_CCER2 = 0x01;                        //config PWMA channel enable OUT,PWMA3P ,
    PWMA_CCR3 = 14;//PWM_DUTY;                     // occupation count
    PWMA_ARR = 28;//PWM_PERIOD;                      // period count
    PWMA_ENO = 0x10;                            //ennabe OUT.PWMA3P
    PWMA_BKR = 0x80;                            //enable main OUT
    PWMA_CR1 = 0x01;                            //start counter      
}
只是又遇到一个问题,用PWM产生的方波频率,在定时timer中通过PWMA_CR1 =0x00和0x01 启动和停止后,不确定是停止在高电平还是低电平,请问这个有方法控制吗




定时启停代码

        if(longtime<500)
        {
                longtime++;
        }else
        {
                longtime=0;
                if(PWMA_CR1&0x01==0x01)
                        PWMA_CR1=0x00;
                else
                        PWMA_CR1=0x01;
                P24=0;      //没有作用,应该是PWMA_CR1赋值后,PWM 没有立即停止
        }


乘风飞扬 发表于 2024-9-2 12:19:05

通过设置 PWMA_ENO 进行开关,PWMA_ENO设置关闭后就可以使用IO口方式设置高低电平了。

i_zw 发表于 2024-9-2 22:06:54

乘风飞扬 发表于 2024-9-2 12:19
通过设置 PWMA_ENO 进行开关,PWMA_ENO设置关闭后就可以使用IO口方式设置高低电平了。 ...

谢谢,我试一下{:biggrin:}

i_zw 发表于 2024-9-2 22:07:24

wnagming 发表于 2024-9-1 21:40
可以试试设置PWMA_CR1之前,将占空比设置为0或最大

谢谢
页: [1]
查看完整版本: 使用8H8K64U的PWM生成方波后,请问停止控制如何保持每次停止都在低电平