zoukankan      html  css  js  c++  java
  • STM32 基于定时器的PWM发生器

    脉冲宽度调制(PWM),是英文“Pulse Width Modulation” 的缩写,简称脉宽调制,是利用
    微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽
    度的控制

    STM32 的定时器除了 TIM6 7。其他的定时器都可以用来产生 PWM 输出。其中高级定
    时器 TIM1 TIM8 可以同时产生多达 7 路的 PWM 输出。而通用定时器也能同时产生多达 4
    路的 PWM 输出。

     

    要想输出想要的PWM波形,我们首先要了解定时器的时钟源,TIMxCLK为 定时器1-8提供时钟时钟,默认情况下以72Mhz,保证波形精度。

     我们也可在外设中对时钟进行分频:

    定时器时钟经过 PSC 预分频器之后,即 CK_CNT,用来驱动计数器计数。PSC 是一个
    16 位的预分频器,可以对定时器时钟 TIMxCLK 进行 1~65536 之间的任何一个数进行分频。
    具体计算方式为:CK_CNT=TIMxCLK/(PSC+1)。

    首先开启对应时钟,再初始化管脚为AF_PP模式

    初始化定时器:

    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;//定义初始化结构体
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //使能定时器3时钟 默认72Mhz
    //初始化TIM3
    TIM_TimeBaseStructure.TIM_Period = arr; //自动重装载寄存器的值

    //ARR : 决定PWM周期
    //T=(TIM_Period+1)*(TIM_Prescaler+1)/TIMxCLK
    TIM_TimeBaseStructure.TIM_Prescaler =psc; //TIMX预分频的值 
    TIM_TimeBaseStructure.TIM_ClockDivision = 0; //时钟分割
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数

    TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据以上功能对定时器进行初始化

    设置具体输出模式:
    TIM_OCInitTypeDef  TIM_OCInitStructure;//定义结构体
    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;//选择定时器模式,TIM脉冲宽度调制模式2,1,2模式差不多 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//比较输出使能,决定最终的输出比较信号OCx 是否通过外部引脚输出。
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//输出比较极性高,决定输出有效电平极性高低
    TIM_OCInitStructure.TIM_Pulse = CCR;//设置有效电平的输出时间
    //T_high=T*(CCR/Period) TIM_OC2Init(TIM3, &TIM_OCInitStructure);//根据结构体信息进行初始化
    TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);  //使能定时器TIM2在CCR2上的预装载值


     TIM_Cmd(TIM2, ENABLE);// 使能计数器



     

  • 相关阅读:
    Power of Cryptography
    Radar Installation
    Emag eht htiw Em Pleh
    Help Me with the Game
    89. Gray Code
    87. Scramble String
    86. Partition List
    85. Maximal Rectangle
    84. Largest Rectangle in Histogram
    82. Remove Duplicates from Sorted List II
  • 原文地址:https://www.cnblogs.com/geek-wireless/p/8869931.html
Copyright © 2011-2022 走看看