PWM:Pulse Width Modulation,脉冲宽度调制。是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单来说就是对脉冲宽度的控制。

在《STM32中文参考手册》里可以看到

占空比:占空比是指在一个脉冲循环内,通电时间相对于总时间所占的比例。占空比(Duty Ratio)在电信领域中有如下含义:例如:脉冲宽度1μs,信号周期4μs的脉冲序列占空比为0.25。(百度百科)

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

PWM初始化代码示例:

void TIM3_PWM_Init(u16 arr,u16 psc)
{  GPIO_InitTypeDef GPIO_InitStructure;TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;TIM_OCInitTypeDef  TIM_OCInitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);//定时器3通道2重映射GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);TIM_TimeBaseStructure.TIM_Period = arr;TIM_TimeBaseStructure.TIM_Prescaler =psc;TIM_TimeBaseStructure.TIM_ClockDivision = 0;TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;TIM_OC2Init(TIM3, &TIM_OCInitStructure);//重要的一步,勿忘//使能TIM3在CCR2上的预装载寄存器TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);TIM_Cmd(TIM3, ENABLE);
}

PWM模式1和2的概念可在《STM32中文参考手册》找到

从中可以看出,模式1和2的区别是一个脉冲内,先输出的是有效电平还是无效电平

在标准库里提供了一个调整占空比的函数TIM_SetCompare2(TIM3, pwmvalue);

STM32F1笔记(十)PWM相关推荐

  1. STM32复习笔记(十八) —— 高级定时器(输出比较)

    STM32复习笔记(十八) -- 高级定时器(输出比较) 1.配置步骤 1)选择计数器时钟 (内部,外部,预分频器) 2)将相应的数据写入TIMx_ARR and TIMx_CCRx寄存器中 3)可设 ...

  2. 机器学习笔记十四:随机森林

    在上一篇机器学习笔记十三:Ensemble思想(上)中,简要的提了一下集成学习的原理和两种主要的集成学习形式.  而在这部分要讲的随机森林,就算是其中属于bagging思路的一种学习方法.为了篇幅,b ...

  3. python中计算排队等待时间_codewars(python)练习笔记十:计算超市排队时长

    codewars(python)练习笔记十:计算超市排队时长 题目 There is a queue for the self-checkout tills at the supermarket. Y ...

  4. IOS之学习笔记十五(协议和委托的使用)

    1.协议和委托的使用 1).协议可以看下我的这篇博客 IOS之学习笔记十四(协议的定义和实现) https://blog.csdn.net/u011068702/article/details/809 ...

  5. 吴恩达《机器学习》学习笔记十四——应用机器学习的建议实现一个机器学习模型的改进

    吴恩达<机器学习>学习笔记十四--应用机器学习的建议实现一个机器学习模型的改进 一.任务介绍 二.代码实现 1.准备数据 2.代价函数 3.梯度计算 4.带有正则化的代价函数和梯度计算 5 ...

  6. 吴恩达《机器学习》学习笔记十二——机器学习系统

    吴恩达<机器学习>学习笔记十二--机器学习系统 一.设计机器学习系统的思想 1.快速实现+绘制学习曲线--寻找重点优化的方向 2.误差分析 3.数值估计 二.偏斜类问题(类别不均衡) 三. ...

  7. 吴恩达《机器学习》学习笔记十——神经网络相关(2)

    吴恩达<机器学习>学习笔记十--神经网络相关(2) 一. 代价函数 二. 反向传播算法 三. 理解反向传播算法 四. 梯度检测 五. 随机初始化 1.全部初始化为0的问题 2.随机初始化的 ...

  8. 主成分分析碎石图_ISLR读书笔记十九:主成分分析(PCA)

    本文使用 Zhihu On VSCode 创作并发布 前面写的一些统计学习方法都是属于监督学习(supervised learning),这篇主成分分析(principal components an ...

  9. Mr.J-- jQuery学习笔记(十九)--自定义动画实现图标特效

    之前有写过自定义动画Mr.J-- jQuery学习笔记(十八)--自定义动画 这次实现一个小demo 图标特效 页面渲染 <!DOCTYPE html> <html lang=&qu ...

  10. Mr.J-- jQuery学习笔记(十六)--展开和收起动画折叠菜单的实现

    之前写过动画的隐藏与显示:Mr.J-- jQuery学习笔记(十四)--动画显示隐藏 动画隐藏与显示的一个小demo--对联广告:Mr.J-- jQuery学习笔记(十五)--实现页面的对联广告 与动 ...

最新文章

  1. 线程池中使用条件变量和信号量的性能比较
  2. C++ size_t 与 size_type区别
  3. vue单页面跳页没有数据了_详解刷新页面vuex数据不消失和不跳转页面的解决
  4. oop的三大特性和传统dom如何渲染
  5. 如果没有网上购物,商铺价格会不会更高?
  6. 高度有用的Java ChronoUnit枚举
  7. 使用jstat的JVM统计信息
  8. java list 数据分离_Java(Android)数据结构汇总(一)-- List(下)
  9. 聊聊 归一化和标准化
  10. 追踪电子邮件行踪的“眼”
  11. python爬虫搜索文献_【Python爬虫】爬取多关键字搜索的百度图片
  12. git添加远程库遇到的问题
  13. 《HBase权威指南》读书笔记4
  14. 知识蒸馏 | 知识蒸馏的算法原理与其他拓展介绍
  15. Video Understanding(2)——Temporal Action Detection时序动作检测
  16. 基于堡垒主机概念的运维审计系统
  17. unity无光照着色器(顶点片元着色器)使用TAA抗锯齿后角色移动时模糊(虚影)解决方案
  18. openssl库android版的编译
  19. UiBot If(如果条件成立)
  20. Cadence Allegro通孔PAD制作图文教程及视频演示

热门文章

  1. mysql 触发器 本表_MySQL触发器处理本表数据
  2. java perl5compiler,Java中正则表达式使用方法详解(四)
  3. java else if和switch_如何优雅地优化代码中的的if else和switch
  4. 2019年12月份最热门 Github 开源项目整理
  5. comcerter无法识别串口_基于FPGA 的MXN维字符识别的实现
  6. jquery 操作css 选择器
  7. 谈一谈Http Request 与 Http Response
  8. es6 语法 (Decorator)
  9. Java属性中指定Json的属性名称(序列化和反序列化)
  10. Shadow DOM及自定义标签