1)TIM_TimeBaseInitTypeDef
时基初始化结构体,它包括了四个成员函数:TIM_ClockDivision、TIM_CounterMode、TIM_Period、TIM_Prescaler。比较重要的是TIM_Period成员,它控制的是定时周期。比如说将TIM_Period设置成999,则计数器会数1000个(TIM_Period+1)节拍为一个定时器的周期。这个和后面需要配置的TIM_Pulse共同控制着定时器输出波形的占空比。
      TIM_ClockDivision在参考手册中的定义是“Specifies the clock division”——指定时钟的分频。可见其是用来对时钟分频的;
      而TIM_Prescaler的定义是“Specifies the prescaler value used to divide the TIM clock”,用来指定TIM时钟的分频值。也就是说它是进一步来分频TIM clock的。
      TIM_CounterMode是计数器模式,分为向上、向下、中间计数三种。
 
ii)TIM_Pulse
      之前提到的定时器暂停。我更喜欢称他为定时器跳变,当计数器CNT中的值小于它的值时,输出为有效电平,即为之前配置的高电平,当达到跳变值时输出跳变(下跳)。它与TIM_Period共同决定了PWM波的占空比。占空比=( TIM_Pulse / ( TIM_Period + 1 ) ) * 100%。比如我要产生一个50%的=PWM,只需要将TIM_Period设置成999,TIM_Pulse设置成500即可。在前半个周期计数器值达不到TIM_Pulse ,故一直输出高电平,当达到TIM_Pulse 时刻输出值下跳为低电平,然后再次计数半个周期。当这个周期走完时,ARR恰好溢出(其内装入的值为TIM_Period ),然后计数器清零,再次计数,重复上述过程,即产生了PWM波。
 
TIM_Period是总计数,TIM_Pulse是脉冲电平翻转时刻,即计数到该值时脉冲翻转。

最新文章

  1. SQL Server 2008安装过程中的一些问题和心得
  2. live555源码研究(一)------live555MediaServer的启动过程和基本类图
  3. 关于Windows Azure的常见问题-一般问题FAQ
  4. Dom 简介
  5. qml demo分析(threading-线程任务)
  6. Scss 与 Sass 是什么,他们的区别在哪里?
  7. scrum第二次冲刺
  8. HDU - 5833: Zhu and 772002 (高斯消元-自由元)
  9. Vue 项目 Vue + restfulframework
  10. platform模块
  11. Json 简记
  12. android应用私有存储文件的写入与读取-openFileInput 和 openFileOutput
  13. poj-2369-置换
  14. Qt中多线程问题
  15. node-webkit学习(3)Native UI API概览
  16. memcached(一):linux下memcached安装以及启动
  17. 利用MVC5+EF6搭建博客系统
  18. sencha touch 入门系列 (六)sencha touch运行及代码解析(下)
  19. 转:详解PV、UV、VV、IP及其关系与计算
  20. Spring Boot 使用IntelliJ IDEA创建一个web开发实例(二)

热门文章

  1. ubuntu 18.* 重启网卡
  2. javaEE(14)_文件上传下载
  3. [LUOGU] P1551 亲戚
  4. django第六天(模板相关,过滤器和标记)
  5. (转)iOS 常用宏定义
  6. C++中四种强制类型转换方式
  7. CentOS 7.0:搭建SVN服务器
  8. DRF filter
  9. unittest的discover方法使用
  10. WordPress 编辑器没有可视化