| 小弟刚学STM8不久,在写PWM互补输出遇到一个问题,就是PWM正相输出没有问题,反相不能输出PWM,它只是保持一个固定电平,反复看了手册上TIM1定时器PWM和互补还有刹车寄存器的说明,还是没有解决,请问各位大侠具体有哪些非硬件原因导致此问题的出现。还有就是TIM1_EGR寄存器中有个COMG中断,这个中断的硬件产生小弟不是很明白。以下是TIM1寄存器设置,外设时钟已开启,其他先省略 
 
 
 ;以下是TIM1初始化,初始化为PWM边沿对齐模式,所有寄存器都初始化
 MOV    TIM1_CNTRH ,  #$00;计数器清零
 MOV    TIM1_CNTRL ,  #$00
 
 MOV    TIM1_PSCRH ,  #$00;8分频
 MOV    TIM1_PSCRL ,  #$07
 
 MOV    TIM1_ARRH  ,  #$27;自动重装载寄存器初值设定
 MOV    TIM1_ARRL  ,  #$0F;
 
 MOV    TIM1_CCR1H ,  #$07;CH1比较值
 MOV    TIM1_CCR1L ,  #$D0
 
 MOV    TIM1_CCR2H ,  #$00;CH2初始值位0
 MOV    TIM1_CCR2L ,  #$00
 
 MOV    TIM1_CCR3H ,  #$00;CH3初始值位0
 MOV    TIM1_CCR3L ,  #$00
 
 MOV    TIM1_CCR4H ,  #$00;CH4初始值位0
 MOV    TIM1_CCR4L ,  #$00
 
 MOV    TIM1_RCR    ,  #$FF;重复计数寄存器置位
 
 MOV    TIM1_SR1    ,  #$00;所有中断标志位清零
 MOV    TIM1_SR2    ,  #$00;所有中断标志位清零
 
 MOV    TIM1_SMCR ,  #$00;从模式控制寄存器保持复位值
 MOV    TIM1_ETR    ,  #$00;外部时钟触发禁止
 
 MOV    TIM1_CCMR1 ,  #$68;CH1开启预装载,使用PWM1输出
 MOV    TIM1_CCMR2 ,  #$00;CH2关闭
 MOV    TIM1_CCMR3 ,  #$00;CH3关闭
 MOV    TIM1_CCMR4 ,  #$00;CH4关闭
 
 MOV    TIM1_CCER1 ,  #$05;CH1开启互补通道,高电平有效
 MOV    TIM1_CCER2 ,  #$00;其余通道关闭
 
 MOV    TIM1_BKR    ,  #$80;主输出使能,无自动输出使能,无刹车和锁定
 
 MOV    TIM1_DTR    ,  #$00;死区时间为复位值
 
 MOV    TIM1_OISR   ,  #$00;输出空闲状态寄存器初始化为复位
 
 MOV    TIM1_EGR    ,  #$00;初始化为零
 
 MOV    TIM1_IER    ,  #$00;禁止所有中断服务的执行
 MOV    TIM1_CR2   ,  #$01;更新互补通道输出有关的寄存器
 
 MOV    TIM1_CR1   ,  #$80;自动预装载允许,边沿对齐模式,向上计数
 ;未禁止更新
 BSET   TIM1_CR1   ,  #0  ;开启计数器
 |