happy2058 发表于 2023-12-8 09:58:50

请教前辈,STC单片机芯片PWM硬件设置

本帖最后由 happy2058 于 2023-12-8 10:56 编辑

芯片8H3K32S2系统24M 1T
//********************************************************PWMA 互补*****************************************
#define PWM_PSC                         (12-1)      //12分频,0.5us
#define PWM_PERIOD               2                        //周期1us
#define PWM_DUTY                         1                     //占空0.5us      
      
      
void PWMA_Config()                              //
{
      PWMA_PS =0x40;                                 //P2.6P2.7 管脚
      
      PWMA_PSCRH = (u16)(PWM_PSC >> 8);
      PWMA_PSCRL = (u16)(PWM_PSC);               
      
      PWMA_CCER2 = 0x00; // 写 CCMRx 前必须先清零 CCERx 关闭通道
      PWMA_CCMR4 = 0x60; // 设置 CC2 为 PWMA 输出模式,PWM模式1
      PWMA_CCER2 = 0x50; // 使能 CC4P4n


      
      PWMA_CCR4H = (u16)(PWM_DUTY >> 8);//设置占空比
      PWMA_CCR4L = (u16)(PWM_DUTY);
      
      PWMA_ARRH = (u16)(PWM_PERIOD >> 8); // 设置PWM周期
      PWMA_ARRL = (u16)(PWM_PERIOD);
      
      //PWMA_IER
      //PWMA_DTR = 1;
      PWMA_ENO = 0xc0; // 使能 PWM4p4n 端口输出
      PWMA_BKR = 0x80; // 使能主输出
      PWMA_CR1 = 0x01; // 启动PWM定时器
}      

为什么周期变大了,不管我怎么设置,周期不等于PWMA_ARR


下图是12分频,PWMA_CCR 1usPWMA_ARR 5us 占空比0.2



下图是6分频,PWMA_CCR 1usPWMA_ARR 5us 占空比0.2




周期要比设置的ARR要大,大了接近一个正脉宽。是硬件清耗吗?产生事件消耗?我把其它功能已经全部关闭。只留了一下PWMA。

页: [1]
查看完整版本: 请教前辈,STC单片机芯片PWM硬件设置