citron 发表于 2024-5-28 08:29:12

STC32G12K128 PWM用作定时器,会宕机

STC32G12K128


#define        MAIN_Fosc        33177600L
#define        PSCRA        1
#define PWMA_T1 MAIN_Fosc/PSCRA/1000//1KHZ, 1ms
void         PWM_Timer(void)
{
        PWMA_PSCRH=(PSCRA-1)>>8;//设置预分频器
        PWMA_PSCRL=(PSCRA-1);       
        PWMA_ARRH=0xff;//先高后低, 预装载寄存器(0xffff)
        PWMA_ARRL=0xff;
       
        PWMA_CCER1=0x00;//
        PWMA_CCMR1=0x00;//通道1比较方向为输出




      PWMA_CCR1H=PWMA_T1>>8;
        PWMA_CCR1L=PWMA_T1;

      PWMA_IER=0x02;//使能通道1比较中断(更新中断不开放)
        PWMA_CR1|=0x81;//使能ARR预装载,边沿对齐向上计数,发生更新事件时计数器不停止,开始计时
}


void         isr_PWMA() interrupt 26 //pwmaPWM_Timer
{

      UCHAR        sr;
        UINT           TEMP;
      
         sr=PWMA_SR1;
         if(sr&0x02){//通道1
             PWMA_SR1&=~0x02;



             if(!b_EnPwmTimer){return;}            //这里如果PWMA_CCR1H,PWMA_CCR1L   不赋一个新值直接返回(原值也不行),会宕机
             TEMP=(PWMA_CCR1H<<8)+PWMA_CCR1L+NewGap ;//NewGap 为定时器新的间隔
             PWMA_CCR1H=TEMP>>8;
             PWMA_CCR1L=TEMP;


         }

}
      
      
      

AI-32位8051 发表于 2024-5-28 09:49:43

本帖最后由 STCAI-32位8051 于 2024-5-28 09:51 编辑

数据手册里有范例程序可参考:


另下面这个帖子也可参考内容:


【新提醒】关于STC32高级PWM的定时功能使用 - BLDC/144MHz-PWM-硬件移相/45路PWM+3路CCP/7组不同周期的PWM/DAC 国芯技术交流网站 - STC全球32位8051爱好者互助交流社区https://www.stcaimcu.com/forum.p ... e=1&extra=#pid24997



citron 发表于 2024-5-28 10:18:34

STCAI-32位8051 发表于 2024-5-28 09:49
数据手册里有范例程序可参考:




看清楚,我问的是为什么不赋新值会宕机?以前的有pca的芯片,利用pca做定时器,不赋新值也不会宕机

Lkck8210 发表于 2024-5-28 11:53:04

citron 发表于 2024-5-28 10:18
看清楚,我问的是为什么不赋新值会宕机?以前的有pca的芯片,利用pca做定时器,不赋新值也不会宕机 ...

会不会是没有清COMIF?


页: [1]
查看完整版本: STC32G12K128 PWM用作定时器,会宕机