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);// 使能计数器



     

  • 相关阅读:
    postman 调试接口报“401 身份认证信息未提供”错误
    UserWarning: XXX is writable by group/others and vulnerable to attack when used with get_resource_filename.
    以root权限执行python时候脚本时候报错“ExtractionError: Can't extract file(s) to egg cache”
    django接口调试示例说明
    查看linux系统版本、内存、CPU、存储容量
    一次批量杀死多个进程
    bash:pybot未找到命令
    Swoft-Api项目部署九:前、后置中间件
    Swoft-Api项目部署八:主从数据库配置
    Swoft-Api项目部署七:验证器
  • 原文地址:https://www.cnblogs.com/geek-wireless/p/8869931.html
Copyright © 2011-2022 走看看