小弟刚学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 ;开启计数器 |