stm8s定时器输出比较模式

时间:2022-12-17 19:12:05

stm8s定时器输出比较一般用来做pwm输出。因此通过pwm输出来讲解输出比较。手册中说“脉冲宽度调制(PWM)模式可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CCRi寄存器确定占空比的信号”。由这句话得出:1、ARR的值,即定时周期=pwm周期 2、占空比=CCR/ARR。此处的x表示1,2,3,即TIM1,TIM2,TIM3。i表示通道号,具体看芯片引脚图。

下面以TIM2的CH1为例,输出4000Hz,占空比50%的pwm:

    TIM2_PSCR = 0x01; //配置TIM2为2分频->4MHz
    TIM2_ARRH = 0x03; //4M/(0x03E7+1) ->4000Hz
    TIM2_ARRL = 0xE7; 
    TIM2_CCMR1_CC1S = 0;//CC1通道被配置为输出
    TIM2_CCMR1_OC1M = 6;//PWM模式1,TIM1_CNT<TIM1_CCR1时通道1为有效电平,否则为无效电平 
    TIM2_CCER1_CC1P = 0;//OC1高电平有效
    TIM2_CCR1H = 0x01;//0x1F3+1->占空比50%
    TIM2_CCR1L = 0xF3;   
    TIM2_CCER1_CC1E = 1;//开CC1通道

    TIM2_CR1_CEN = 1;//使能计数器 

说明:OC1M不同的值有不同的含义,可以看手册,自己实验一下。要关pwm输出就可以改OC1M的值,改CCR的值,关通道,关定时器,关定时器时钟。

注意:如果是高级定时器TIM1还要把TIM1_BKR的MOE置1

输出比较也就是CNTR的值和CCR的值相同时会发生pwm跳变。如果开启比较中断,此时会进入中断,可以用来计数脉冲数,或者当作定时中断来用