您的位置:首页 > 其它

STM8S105系列单片机的PWM输出配置

2017-08-25 13:24 489 查看
STM8S105xx的定时器资源:

(1)2个16位通用定时器(TIM2、TIM3),带有2+3个CAPCOM通道(IC、OC或PWM);

(2)高级控制定时器(TIM1):16位,4个CAPCOM通道(捕获/比较通道),3个互补输出,死区插入和灵活的同步;

(3)带有8位预分频器的8位基本定时器(TIM4);

(4)自动唤醒定时器;

(5)2个看门狗定时器:窗口看门狗和独立看门狗。

使用高级控制定时器和普通通用定时器的PWM输出功能在初始化配置上有差异,下面做简单分析:

TIM1——16位高级控制定时器

带有16位预分频的16位递增、递减和双向自动重装载计数器

TIM2、TIM3——16位通用定时器

16位向上计数和自动装载计数器

15位预分频器,分频系数可调整为1~32768之间的2次幂数值

TIM4——8位基本定时器

8位自动装载可调整的预分频器,比例可选为1~128之间的2次幂





配置TIM1_CH1的PWM输出功能:

void Time1_Init()

{

      CLK->CKDIVR=0x00; 

      /*
     * 这里设置TIM2的计数频率为 16M/1600=10000Hz
     */

      TIM1_TimeBaseInit(1599,TIM1_COUNTERMODE_UP,2000,0); //分频1600,向上计数,TIM1_ARR=1000,重复计数器为0

    /*OC1初始化:PWM1模式

                               输出使能

                               互补输出不使能

                               CCR1=1000,占空比为50%

                               输出有效极性为高

                               互补输出有效极性为高(无作用)

                               空闲时输出高

                               空闲时互补输出高(无作用)

     */

      TIM1_OC1Init(TIM1_OCMODE_PWM1,

      TIM1_OUTPUTSTATE_ENABLE,

      TIM1_OUTPUTNSTATE_DISABLE,

      1000,

      TIM1_OCPOLARITY_HIGH,

      TIM1_OCNPOLARITY_HIGH,

      TIM1_OCIDLESTATE_SET,

      TIM1_OCNIDLESTATE_SET);

     

      TIM1_OC1PreloadConfig(ENABLE);  

      TIM1_CtrlPWMOutputs(ENABLE);  //PWM输出使能

      TIM1_Cmd(ENABLE);     //定时器开始计数



配置TIM2_CH1的PWM输出功能:
void TIMER2_PWMInit(unsigned short timebase,unsigned short t)

{

      TIM2_DeInit();  

      /*

       * TIM2 Frequency = TIM2 counter clock/(ARR + 1) 

       * 这里设置TIM2的计数频率为 16M/32/(timebase+1)=1K

       */

      TIM2_TimeBaseInit(TIM2_PRESCALER_32, timebase);

    

      /* 

       * PWM1 Mode configuration: Channel1

       * TIM2 Channel1 duty cycle = [TIM2_CCR1/(TIM2_ARR + 1)] * 100 = 50%

       * TIM2 Channel2 duty cycle = [TIM2_CCR2/(TIM2_ARR + 1)] * 100 = 50%

       */ 

    

      /* 测试通道1 */

      TIM2_OC1Init(TIM2_OCMODE_PWM1, TIM2_OUTPUTSTATE_ENABLE, t, TIM2_OCPOLARITY_HIGH);

      TIM2_OC1PreloadConfig(ENABLE);

     

      TIM2_Cmd(ENABLE);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: