找回密码
 立即注册
查看: 102|回复: 1

为什么我这个函数单独输出一组相位差180PWM的可以,多路输出占空比提高的话会出现毛刺

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-07-18 11:53:04
已绑定手机

2

主题

0

回帖

22

积分

新手上路

积分
22
发表于 2025-7-18 11:59:08 | 显示全部楼层 |阅读模式
为什么我这个函数单独输出一组相位差180PWM的可以,多路输出占空比提高的话会出现毛刺

//系统频率是11.0592   因为10分频        ,所以是1105920
#define        freq_45hz        11059200/10/45-1  //目的50HZ实测45hz   1105920/50
#define        freq_90hz        11059200/10/90-1  //目的25HZ实测23hz        1105920/25
#define        freq_m3                16506  //目的25HZ实测61hz        1105920/64
#define        freq_m4                11284  //目的89HZ实测89hz        1105920/98
#define        freq_m5                36867  //目的50HZ实测27hz        1105920/30
#define        freq_m0                0
#define        freq_m6                33512
//========================================================================
// 函数: PWM15bit_init
// 描述: 用户初始化程序.
// 参数: None.
// 返回: None.
// 版本: V1.0, 2020-09-28
//========================================================================
void        PWM15bit_init(void)
{
//        GPIO_InitTypeDef        GPIO_InitStructure;                                //结构定义
        PWM15_InitTypeDef                PWM15_InitStructure;

//        GPIO_InitStructure.Pin  = GPIO_Pin_All;                        //指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7, 或操作
//        GPIO_InitStructure.Mode = GPIO_PullUp;                        //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
//        GPIO_Inilize(GPIO_P2,&GPIO_InitStructure);        //初始化

        PWM15_InitStructure.PWM_Enable    = ENABLE;                //PWM使能,  ENABLE, DISABLE
        PWM15_InitStructure.PWM_Period    = freq_45hz;                //PWM周期,  0~0x7fff
        PWM15_InitStructure.PWM_Clock_Sel = PWMn_CLK_SYS;                //时钟源选择,  PWMn_CLK_SYS, PWMn_CLK_TM2
        PWM15_InitStructure.PWM_Clock_PS  = 9;                                //系统时钟分频参数(PS+1分频),  0~15
        PWM15_InitStructure.PWM_CInt      = DISABLE;        //计数器归零中断使能,  ENABLE, DISABLE
        PWM15_InitStructure.PWM_Counter   = ENABLE;                //计数器使能,  ENABLE, DISABLE
        PWM15_Init(PWM0,&PWM15_InitStructure);
    PWM15_Init(PWM1,&PWM15_InitStructure);
    PWM15_Init(PWM2,&PWM15_InitStructure);
    PWM15_Init(PWM3,&PWM15_InitStructure);

//        PWM15Duty(PWM00,0x000,0x200);                //PWM_ID, 输出低电平位置, 输出高电平位置
//        PWM15Duty(PWM01,0x000,0x400);                //PWM_ID, 输出低电平位置, 输出高电平位置
//        PWM15Duty(PWM24,0x000,0x080);                //PWM_ID, 输出低电平位置, 输出高电平位置
//        PWM15Duty(PWM03,0x200,0xc00);                //PWM_ID, 输出低电平位置, 输出高电平位置

        PWMChannelCtrl(PWM12,ENABLE,0,DISABLE,DISABLE,DISABLE);        //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断
        PWMChannelCtrl(PWM13,ENABLE,0,DISABLE,DISABLE,DISABLE);        //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断

        PWMChannelCtrl(PWM02,ENABLE,0,DISABLE,DISABLE,DISABLE);        //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断
        PWMChannelCtrl(PWM03,ENABLE,0,DISABLE,DISABLE,DISABLE);        //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断

        PWMChannelCtrl(PWM00,ENABLE,0,DISABLE,DISABLE,DISABLE);        //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断
        PWMChannelCtrl(PWM01,ENABLE,0,DISABLE,DISABLE,DISABLE);        //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断

        PWMChannelCtrl(PWM26,ENABLE,0,DISABLE,DISABLE,DISABLE);        //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断
        PWMChannelCtrl(PWM27,ENABLE,0,DISABLE,DISABLE,DISABLE);        //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断

        PWMChannelCtrl(PWM24,ENABLE,0,DISABLE,DISABLE,DISABLE);        //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断
        PWMChannelCtrl(PWM25,ENABLE,0,DISABLE,DISABLE,DISABLE);        //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断

        PWMChannelCtrl(PWM22,ENABLE,0,DISABLE,DISABLE,DISABLE);        //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断
        PWMChannelCtrl(PWM23,ENABLE,0,DISABLE,DISABLE,DISABLE);        //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断

        PWMChannelCtrl(PWM20,ENABLE,0,DISABLE,DISABLE,DISABLE);        //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断
        PWMChannelCtrl(PWM21,ENABLE,0,DISABLE,DISABLE,DISABLE);        //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断

        PWMChannelCtrl(PWM36,ENABLE,0,DISABLE,DISABLE,DISABLE);        //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断
        PWMChannelCtrl(PWM37,ENABLE,0,DISABLE,DISABLE,DISABLE);        //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断

        PWMChannelCtrl(PWM11,ENABLE,0,DISABLE,DISABLE,DISABLE);        //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断
        PWMChannelCtrl(PWM10,ENABLE,0,DISABLE,DISABLE,DISABLE);        //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断


        PWMLevelSet(PWM12,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
        PWMLevelSet(PWM13,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平

        PWMLevelSet(PWM02,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
        PWMLevelSet(PWM03,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平

    PWMLevelSet(PWM00,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
        PWMLevelSet(PWM01,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平

    PWMLevelSet(PWM26,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
        PWMLevelSet(PWM27,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平

    PWMLevelSet(PWM24,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
        PWMLevelSet(PWM25,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平

    PWMLevelSet(PWM22,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
        PWMLevelSet(PWM23,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平

    PWMLevelSet(PWM20,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
        PWMLevelSet(PWM21,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平

    PWMLevelSet(PWM36,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
        PWMLevelSet(PWM37,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平   

    PWMLevelSet(PWM11,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
        PWMLevelSet(PWM10,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
}


void EMS_Out(void)
{
    if((ui_page == 3) && Start){
//        P_SW2 |=  0x80;
//        PWM0C = freq_45hz;
//        PWM1C = freq_45hz;
//        PWM2C = freq_45hz;
//        PWM3C = freq_45hz;
//        P_SW2 &=  ~0x80;      
        if(EMS_Energy1){
                PWM15Duty(PWM12,(freq_45hz>>1)+2+((EMS_Energy1-1) <<1),freq_45hz>>1);
                PWMLevelSet(PWM12,DISABLE,DISABLE);        //PWM_ID正常输出
                PWM15Duty(PWM13,2+((EMS_Energy1-1)<<1),0);
                PWMLevelSet(PWM13,DISABLE,DISABLE);        //PWM_ID正常输出                       
        }
        else {
                                PWMLevelSet(PWM12,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
                                PWMLevelSet(PWM13,ENABLE,DISABLE);   
        }        
//        if(EMS_Energy1){
//            if((mode == 1) || (mode == 2)){
//                PWM15Duty(PWM12,(freq_45hz>>1)+2+((EMS_Energy1-1) * 12/6),freq_45hz>>1);
//                PWMLevelSet(PWM12,DISABLE,DISABLE);        //PWM_ID正常输出
//                PWM15Duty(PWM13,2+((EMS_Energy1-1) * 12/6),0);
//                PWMLevelSet(PWM13,DISABLE,DISABLE);        //PWM_ID正常输出         
//            }
//            else if(mode == 3){
//                if(EMS_Modecount < 100){
//                    PWM15Duty(PWM12,(freq_45hz>>1)+2+((EMS_Energy1-1) * 12/6),freq_45hz>>1);
//                    PWMLevelSet(PWM12,DISABLE,DISABLE);        //PWM_ID正常输出
//                    PWM15Duty(PWM13,2+((EMS_Energy1-1) * 12/6),0);
//                    PWMLevelSet(PWM13,DISABLE,DISABLE);        //PWM_ID正常输出      
//                }
//                else {
//                    PWMLevelSet(PWM12,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
//                    PWMLevelSet(PWM13,ENABLE,DISABLE);         
//                }
//            }
//            else if(mode == 4){
//                if(EMS_Modecount < 25){
//                    PWM15Duty(PWM12,(freq_45hz>>1)+2+((EMS_Energy1-1) * 12/6),freq_45hz>>1);
//                    PWMLevelSet(PWM12,DISABLE,DISABLE);        //PWM_ID正常输出
//                    PWM15Duty(PWM13,2+((EMS_Energy1-1) * 12/6),0);
//                    PWMLevelSet(PWM13,DISABLE,DISABLE);        //PWM_ID正常输出      
//                }
//                else {
//                    PWMLevelSet(PWM12,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
//                    PWMLevelSet(PWM13,ENABLE,DISABLE);         
//                }      
//            }
//               
//        }
//        else {
//                                PWMLevelSet(PWM12,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
//                                PWMLevelSet(PWM13,ENABLE,DISABLE);   
//        }


        if(EMS_Energy2){
            if((mode == 1) || (mode == 2)){
                    PWM15Duty(PWM02,(freq_45hz>>1)+2+((EMS_Energy2-1)<<1),freq_45hz>>1);
                    PWMLevelSet(PWM02,DISABLE,DISABLE);        //PWM_ID正常输出
                    PWM15Duty(PWM03,2+((EMS_Energy2-1)<<1),0);
                    PWMLevelSet(PWM03,DISABLE,DISABLE);        //PWM_ID正常输出         
            }
            else if(mode == 3){
                if(EMS_Modecount < 100){
                    PWM15Duty(PWM02,(freq_45hz>>1)+2+((EMS_Energy2-1)<<1),freq_45hz>>1);
                    PWMLevelSet(PWM02,DISABLE,DISABLE);        //PWM_ID正常输出
                    PWM15Duty(PWM03,2+((EMS_Energy2-1)<<1),0);
                    PWMLevelSet(PWM03,DISABLE,DISABLE);        //PWM_ID正常输出      
                }
                else {
                    PWMLevelSet(PWM02,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
                    PWMLevelSet(PWM03,ENABLE,DISABLE);         
                }
            }
            else if(mode == 4){
                if(EMS_Modecount < 25){
                    PWM15Duty(PWM02,(freq_45hz>>1)+2+((EMS_Energy2-1)<<1),freq_45hz>>1);
                    PWMLevelSet(PWM02,DISABLE,DISABLE);        //PWM_ID正常输出
                    PWM15Duty(PWM03,2+((EMS_Energy2-1)<<1),0);
                    PWMLevelSet(PWM03,DISABLE,DISABLE);        //PWM_ID正常输出      
                }
                else {
                    PWMLevelSet(PWM02,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
                    PWMLevelSet(PWM03,ENABLE,DISABLE);         
                }      
            }

        }
        else {
                                PWMLevelSet(PWM02,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
                                PWMLevelSet(PWM03,ENABLE,DISABLE);   
        }        


        if(EMS_Energy3){
            if((mode == 1) || (mode == 2)){
                PWM15Duty(PWM00,(freq_45hz>>1)+2+((EMS_Energy3-1)<<1),freq_45hz>>1);
                PWMLevelSet(PWM00,DISABLE,DISABLE);        //PWM_ID正常输出
                PWM15Duty(PWM01,2+((EMS_Energy3-1)<<1),0);
                PWMLevelSet(PWM01,DISABLE,DISABLE);        //PWM_ID正常输出         
            }
            else if(mode == 3){
                if(EMS_Modecount < 100){
                    PWM15Duty(PWM00,(freq_45hz>>1)+2+((EMS_Energy3-1)<<1),freq_45hz>>1);
                    PWMLevelSet(PWM00,DISABLE,DISABLE);        //PWM_ID正常输出
                    PWM15Duty(PWM01,2+((EMS_Energy3-1)<<1),0);
                    PWMLevelSet(PWM01,DISABLE,DISABLE);        //PWM_ID正常输出        
                }
                else {
                    PWMLevelSet(PWM00,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
                    PWMLevelSet(PWM01,ENABLE,DISABLE);         
                }
            }
            else if(mode == 4){
                if(EMS_Modecount < 25){
                    PWM15Duty(PWM00,(freq_45hz>>1)+2+((EMS_Energy3-1)<<1),freq_45hz>>1);
                    PWMLevelSet(PWM00,DISABLE,DISABLE);        //PWM_ID正常输出
                    PWM15Duty(PWM01,2+((EMS_Energy3-1)<<1),0);
                    PWMLevelSet(PWM01,DISABLE,DISABLE);        //PWM_ID正常输出         
                }
                else {
                    PWMLevelSet(PWM00,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
                    PWMLevelSet(PWM01,ENABLE,DISABLE);         
                }      
            }

        }
        else {
                                PWMLevelSet(PWM00,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
                                PWMLevelSet(PWM01,ENABLE,DISABLE);   
        }


        if(EMS_Energy4){
            if((mode == 1) || (mode == 2)){
                PWM15Duty(PWM26,(freq_45hz>>1)+2+((EMS_Energy4-1)<<1),freq_45hz>>1);
                PWMLevelSet(PWM26,DISABLE,DISABLE);        //PWM_ID正常输出
                PWM15Duty(PWM27,2+((EMS_Energy4-1) * 12/6),0);
                PWMLevelSet(PWM27,DISABLE,DISABLE);        //PWM_ID正常输出         
            }
            else if(mode == 3){
                if(EMS_Modecount < 100){
                    PWM15Duty(PWM26,(freq_45hz>>1)+2+((EMS_Energy4-1)<<1),freq_45hz>>1);
                    PWMLevelSet(PWM26,DISABLE,DISABLE);        //PWM_ID正常输出
                    PWM15Duty(PWM27,2+((EMS_Energy4-1)<<1),0);
                    PWMLevelSet(PWM27,DISABLE,DISABLE);        //PWM_ID正常输出      
                }
                else {
                    PWMLevelSet(PWM26,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
                    PWMLevelSet(PWM27,ENABLE,DISABLE);         
                }
            }
            else if(mode == 4){
                if(EMS_Modecount < 25){
                    PWM15Duty(PWM26,(freq_45hz>>1)+2+((EMS_Energy4-1)<<1),freq_45hz>>1);
                    PWMLevelSet(PWM26,DISABLE,DISABLE);        //PWM_ID正常输出
                    PWM15Duty(PWM27,2+((EMS_Energy4-1)<<1),0);
                    PWMLevelSet(PWM27,DISABLE,DISABLE);        //PWM_ID正常输出      
                }
                else {
                    PWMLevelSet(PWM26,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
                    PWMLevelSet(PWM27,ENABLE,DISABLE);         
                }      
            }

        }
        else {
                                PWMLevelSet(PWM26,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
                                PWMLevelSet(PWM27,ENABLE,DISABLE);   
        }        


        if(EMS_Energy5){
            if((mode == 1) || (mode == 2)){
                PWM15Duty(PWM24,(freq_45hz>>1)+2+((EMS_Energy5-1)<<1),freq_45hz>>1);
                PWMLevelSet(PWM24,DISABLE,DISABLE);        //PWM_ID正常输出
                PWM15Duty(PWM25,2+((EMS_Energy5-1)<<1),0);
                PWMLevelSet(PWM25,DISABLE,DISABLE);        //PWM_ID正常输出         
            }
            else if(mode == 3){
                if(EMS_Modecount < 100){
                    PWM15Duty(PWM24,(freq_45hz>>1)+2+((EMS_Energy5-1)<<1),freq_45hz>>1);
                    PWMLevelSet(PWM24,DISABLE,DISABLE);        //PWM_ID正常输出
                    PWM15Duty(PWM25,2+((EMS_Energy5-1)<<1),0);
                    PWMLevelSet(PWM25,DISABLE,DISABLE);        //PWM_ID正常输出      
                }
                else {
                    PWMLevelSet(PWM24,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
                    PWMLevelSet(PWM25,ENABLE,DISABLE);         
                }
            }
            else if(mode == 4){
                if(EMS_Modecount < 25){
                    PWM15Duty(PWM24,(freq_45hz>>1)+2+((EMS_Energy5-1)<<1),freq_45hz>>1);
                    PWMLevelSet(PWM24,DISABLE,DISABLE);        //PWM_ID正常输出
                    PWM15Duty(PWM25,2+((EMS_Energy5-1)<<1),0);
                    PWMLevelSet(PWM25,DISABLE,DISABLE);        //PWM_ID正常输出      
                }
                else {
                    PWMLevelSet(PWM24,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
                    PWMLevelSet(PWM25,ENABLE,DISABLE);         
                }      
            }

        }
        else {
                                PWMLevelSet(PWM24,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
                                PWMLevelSet(PWM25,ENABLE,DISABLE);   
        }


        if(EMS_Energy6){
            if((mode == 1) || (mode == 2)){
                PWM15Duty(PWM22,(freq_45hz>>1)+2+((EMS_Energy6-1)<<1),freq_45hz>>1);
                PWMLevelSet(PWM22,DISABLE,DISABLE);        //PWM_ID正常输出
                PWM15Duty(PWM23,2+((EMS_Energy6-1)<<1),0);
                PWMLevelSet(PWM23,DISABLE,DISABLE);        //PWM_ID正常输出         
            }
            else if(mode == 3){
                if(EMS_Modecount < 100){
                    PWM15Duty(PWM22,(freq_45hz>>1)+2+((EMS_Energy6-1)<<1),freq_45hz>>1);
                    PWMLevelSet(PWM22,DISABLE,DISABLE);        //PWM_ID正常输出
                    PWM15Duty(PWM23,2+((EMS_Energy6-1)<<1),0);
                    PWMLevelSet(PWM23,DISABLE,DISABLE);        //PWM_ID正常输出      
                }
                else {
                    PWMLevelSet(PWM22,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
                    PWMLevelSet(PWM23,ENABLE,DISABLE);         
                }
            }
            else if(mode == 4){
                if(EMS_Modecount < 25){
                    PWM15Duty(PWM22,(freq_45hz>>1)+2+((EMS_Energy6-1)<<1),freq_45hz>>1);
                    PWMLevelSet(PWM22,DISABLE,DISABLE);        //PWM_ID正常输出
                    PWM15Duty(PWM23,2+((EMS_Energy6-1)<<1),0);
                    PWMLevelSet(PWM23,DISABLE,DISABLE);        //PWM_ID正常输出      
                }
                else {
                    PWMLevelSet(PWM22,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
                    PWMLevelSet(PWM23,ENABLE,DISABLE);         
                }      
            }

        }
        else {
                                PWMLevelSet(PWM22,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
                                PWMLevelSet(PWM23,ENABLE,DISABLE);   
        }

        if(EMS_Energy7){
            if((mode == 1) || (mode == 2)){
                PWM15Duty(PWM20,(freq_45hz>>1)+2+((EMS_Energy7-1)<<1),freq_45hz>>1);
                PWMLevelSet(PWM20,DISABLE,DISABLE);        //PWM_ID正常输出
                PWM15Duty(PWM21,2+((EMS_Energy7-1)<<1),0);
                PWMLevelSet(PWM21,DISABLE,DISABLE);        //PWM_ID正常输出         
            }
            else if(mode == 3){
                if(EMS_Modecount < 100){
                    PWM15Duty(PWM20,(freq_45hz>>1)+2+((EMS_Energy7-1)<<1),freq_45hz>>1);
                    PWMLevelSet(PWM20,DISABLE,DISABLE);        //PWM_ID正常输出
                    PWM15Duty(PWM21,2+((EMS_Energy7-1)<<1),0);
                    PWMLevelSet(PWM21,DISABLE,DISABLE);        //PWM_ID正常输出      
                }
                else {
                    PWMLevelSet(PWM20,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
                    PWMLevelSet(PWM21,ENABLE,DISABLE);         
                }
            }
            else if(mode == 4){
                if(EMS_Modecount < 25){
                    PWM15Duty(PWM20,(freq_45hz>>1)+2+((EMS_Energy7-1)<<1),freq_45hz>>1);
                    PWMLevelSet(PWM20,DISABLE,DISABLE);        //PWM_ID正常输出
                    PWM15Duty(PWM21,2+((EMS_Energy7-1)<<1),0);
                    PWMLevelSet(PWM21,DISABLE,DISABLE);        //PWM_ID正常输出      
                }
                else {
                    PWMLevelSet(PWM20,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
                    PWMLevelSet(PWM21,ENABLE,DISABLE);         
                }      
            }

        }
        else {
                                PWMLevelSet(PWM20,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
                                PWMLevelSet(PWM21,ENABLE,DISABLE);   
        }
//        if(EMS_Energy8){
//            if((mode == 1) || (mode == 2)){
//                PWM15Duty(PWM36,(freq_45hz>>1)+2+((EMS_Energy8-1) * 12/6),freq_45hz>>1);
//                PWMLevelSet(PWM36,DISABLE,DISABLE);        //PWM_ID正常输出
//                PWM15Duty(PWM37,2+((EMS_Energy8-1) * 12/6),0);
//                PWMLevelSet(PWM37,DISABLE,DISABLE);        //PWM_ID正常输出         
//            }
//            else if(mode == 3){
//                if(EMS_Modecount < 100){
//                    PWM15Duty(PWM36,(freq_45hz>>1)+2+((EMS_Energy8-1) * 12/6),freq_45hz>>1);
//                    PWMLevelSet(PWM36,DISABLE,DISABLE);        //PWM_ID正常输出
//                    PWM15Duty(PWM37,2+((EMS_Energy8-1) * 12/6),0);
//                    PWMLevelSet(PWM37,DISABLE,DISABLE);        //PWM_ID正常输出      
//                }
//                else {
//                    PWMLevelSet(PWM36,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
//                    PWMLevelSet(PWM37,ENABLE,DISABLE);         
//                }
//            }
//            else if(mode == 4){
//                if(EMS_Modecount < 25){
//                    PWM15Duty(PWM36,(freq_45hz>>1)+2+((EMS_Energy8-1) * 12/6),freq_45hz>>1);
//                    PWMLevelSet(PWM36,DISABLE,DISABLE);        //PWM_ID正常输出
//                    PWM15Duty(PWM37,2+((EMS_Energy8-1) * 12/6),0);
//                    PWMLevelSet(PWM37,DISABLE,DISABLE);        //PWM_ID正常输出      
//                }
//                else {
//                    PWMLevelSet(PWM36,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
//                    PWMLevelSet(PWM37,ENABLE,DISABLE);         
//                }      
//            }
//               
//        }
//        else {
//                                PWMLevelSet(PWM36,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
//                                PWMLevelSet(PWM37,ENABLE,DISABLE);   
//        }
        if(EMS_Energy8){
                PWM15Duty(PWM36,(freq_45hz>>1)+2+((EMS_Energy8-1)<<1),freq_45hz>>1);
                PWMLevelSet(PWM36,DISABLE,DISABLE);        //PWM_ID正常输出
                PWM15Duty(PWM37,2+((EMS_Energy8-1)<<1),0);
                PWMLevelSet(PWM37,DISABLE,DISABLE);        //PWM_ID正常输出               
        }
        else {
                                PWMLevelSet(PWM36,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
                                PWMLevelSet(PWM37,ENABLE,DISABLE);   
        }


    }
    else{
        PWMLevelSet(PWM12,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
        PWMLevelSet(PWM13,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平

        PWMLevelSet(PWM02,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
        PWMLevelSet(PWM03,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平

        PWMLevelSet(PWM00,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
        PWMLevelSet(PWM01,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平

        PWMLevelSet(PWM26,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
        PWMLevelSet(PWM27,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平

        PWMLevelSet(PWM24,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
        PWMLevelSet(PWM25,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平

        PWMLevelSet(PWM22,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
        PWMLevelSet(PWM23,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平

        PWMLevelSet(PWM20,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
        PWMLevelSet(PWM21,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平

        PWMLevelSet(PWM36,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平
        PWMLevelSet(PWM37,ENABLE,DISABLE);        //PWM_ID, 强制输出低电平      
    }
}

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:532
  • 最近打卡:2025-07-31 14:15:17
已绑定手机
已实名认证

116

主题

2499

回帖

6450

积分

版主

积分
6450
发表于 2025-7-18 18:04:54 | 显示全部楼层
有可能是操作PWMLevelSet这个函数导致的,可以尝试一下,将这些操作统一放在最后,先操作完成Duty再进行改变强制输出状态
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-8-1 01:28 , Processed in 0.114729 second(s), 54 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表