hjbkhqhj 发表于 2025-7-16 12:19:49

32G12K64 PWMA_CCR1有些值不能使用吗 | 没事了

测试过程中发现PWMA_CCR1给某些值会导致它进中断的次数从一秒五千次降到几秒一次,有大佬是看看啥情况吗?
分频系数是0,ARR是2211,仅改变中断里PWMA_CCR1的值就会有这种现象,1523卡,1530就没事。

void PWM_Init(void)
{
      PWM_PERIOD=2211;//5khz
      
      Pre_V=19;
      
      SINE_RES=(u32)(5000/Pre_V);
      
      PWM1_count=0;
      PWM3_count=SINE_RES/3;
      PWM4_count=SINE_RES/3*2;
      
      PWMA_PSCRH=0x00; //配置预分频系数
      PWMA_PSCRL=0x00;
      
      PWMA_CCER1=0X00;      //写CCMRx前必须先清零CCxE关闭通道
      PWMA_CCER2=0X00;      
      
      PWMA_CCMR1=0X60;//通道模式配置PWM模式1

      PWMA_CCMR3=0X60;
      PWMA_CCMR4=0X60;

               
      PWMA_CCER1=0X05;//配置通道输出使能和极性
      PWMA_CCER2=0X55;
      
      PWMA_ARRH=(char)(PWM_PERIOD>>8);//设置周期时间
      PWMA_ARRL=(char)(PWM_PERIOD);
      
      PWMA_ENO=0Xf3;         //使能PWM输出
      PWMA_PS=0X00;                //高级PWM通道输出
      
      PWMA_CCR1H=(char)(PWM_PERIOD>>8);//设置占空比时间
      PWMA_CCR1L=(char)(PWM_PERIOD);
      
      PWMA_CCR3H=(char)(PWM_PERIOD/3>>8);//设置占空比时间
      PWMA_CCR3L=(char)(PWM_PERIOD/3);
      
      PWMA_CCR4H=(char)(PWM_PERIOD/3*2>>8);//设置占空比时间
      PWMA_CCR4L=(char)(PWM_PERIOD/3*2);
      
      PWMA_IER=0X1B;
      
      PWMA_DTR=0X18;//设置死区时间
      
      PWMA_BKR=0X80;//使能主输出
      PWMA_CR1|=0X01;//开始计时
}
u32 ppp=0;

void PWMA_ISR() interrupt 26
{                        
               
      if(PWMA_SR1&0X01)
      {
                PWMA_SR1&=~0X01;
      }
      else if(PWMA_SR1&0X02)
      {
                EAXSFR();
                PWMA_SR1&=~0X02;
                ppp++;
                if(ppp>=5000){
                        ppp=0;
                }
                PWM_DUTY=1523;
                PWMA_CCR1H=(char)(PWM_DUTY>>8);//设置占空比时间
                PWMA_CCR1L=(char)(PWM_DUTY);
      }
      else if(PWMA_SR1&0X08)
      {
                PWMA_SR1&=~0X08;
      
      }
      else if(PWMA_SR1&0X10)      
      {
                PWMA_SR1&=~0X10;                              
               
      }
      else
      {
                        PWMA_SR1=0;
      }
}


hjbkhqhj 发表于 2025-7-16 12:46:56

应该是我开了三路PWM,中断触发间隔的问题,把三个ccr值调整下暂时没事了

梁工 发表于 2025-7-16 16:16:12

CCR1可以是任意值。
页: [1]
查看完整版本: 32G12K64 PWMA_CCR1有些值不能使用吗 | 没事了