stm32f103定时器
2024-08-30 10:09:34
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是脉冲电平翻转时刻,即计数到该值时脉冲翻转。
最新文章
- SQL Server 2008安装过程中的一些问题和心得
- live555源码研究(一)------live555MediaServer的启动过程和基本类图
- 关于Windows Azure的常见问题-一般问题FAQ
- Dom 简介
- qml demo分析(threading-线程任务)
- Scss 与 Sass 是什么,他们的区别在哪里?
- scrum第二次冲刺
- HDU - 5833: Zhu and 772002 (高斯消元-自由元)
- Vue 项目 Vue + restfulframework
- platform模块
- Json 简记
- android应用私有存储文件的写入与读取-openFileInput 和 openFileOutput
- poj-2369-置换
- Qt中多线程问题
- node-webkit学习(3)Native UI API概览
- memcached(一):linux下memcached安装以及启动
- 利用MVC5+EF6搭建博客系统
- sencha touch 入门系列 (六)sencha touch运行及代码解析(下)
- 转:详解PV、UV、VV、IP及其关系与计算
- Spring Boot 使用IntelliJ IDEA创建一个web开发实例(二)