- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
定时器实验
一、 实验要求
编程序利用 STM32 的通用定时器TIM2 和 TIM3 产生六路 PWM 输出。
二、 实验原理
实验主要考察对 STM32F10X 系列单片机定时器的使用。
STM32F103 系列的单片机一共有 11 个定时器,其中:
2 个高级定时器
4 个普通定时器
2 个基本定时器
2 个看门狗定时器
1 个系统嘀嗒定时器
出去看门狗定时器和系统滴答定时器的八个定时器列表;
八个定时器分成 3 个组
TIM1 和 TIM8 是高级定时器
TIM2-TIM5 是通用定时器
TIM6 和 TIM7 是基本的定时器
这 8 个定时器都是 16位的,它们的计数器的类型除了基本定时器 TIM6 和 TIM7 都支持向上,
向下,向上/向下这3 种计数模式。
本次试验主要用到通用定时器 TIM2 和 TIM3。
通用定时器 (TIM2~TIM5)的主要功能:
除了基本的定时器的功能外,还具有测量输入信号的脉冲长度 ( 输入捕获) 或者产生输出波
形( 输出比较和 PWM)。
通用定时器的时钟来源;
a:内部时钟(CK_INT)
b:外部时钟模式 1:外部输入脚(TIx)
c:外部时钟模式 2:外部触发输入(ETR)
d:内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器
通用定时期内部时钟的产生:
通用定时器(TIM2-5)的时钟不是直接来自APB1,而是通过APB1 的预分频器以后才到达定
时器模块。
当 APB1 的预分频器系数为 1 时,这个倍频器就不起作用了,定时器的时钟频率等于 APB1
的频率;
当 APB1 的预分频系数为其它数值(即预分频系数为 2、4、8 或 16)时,这个倍频器起作用,
定时器的时钟频率等于 APB1 时钟频率的两倍。
PWM 输出模式 ;
STM32 的PWM 输出有两种模式:
模式 1 和模式 2,由 TIMx_CCMRx 寄存器中的 OCxM 位确定的(“110”为模式 1,“111”为模
式 2)。区别如下:
110:PWM 模式 1,在向上计数时,一旦 TIMx_CNT
在向下计数时,一旦 TIMx_CNT>TIMx_CCR1 时通道 1 为无效电平(OC1REF=0),否则为有效电
平 (OC1REF=1)。
111:PWM 模式 2-在向上计数时,一旦 TIMx_CNTTIMx_CCR1 时通道 1 为有效电平,否则为无
效电平。
由以上可知:模式 1 和模式 2 正好互补,互为相反,所以在运用起来差别也并不太大。而从
计数模式上来看,PWM 也和 TIMx 在作定时器时一样,也有向上计数模式、向下计数模式和
中心对齐模式
通用定时器 PWM 工作原理:
以PWM 模式 1 为例,定时器 2 向上计数,有效电平是高电平,定时器 2 的第 1 个 PWM 通道为
例:定时器 2 的第 1个 PWM 通道对应是 PA0 这引脚。
当定时器 2 的计数器(TIM2_CNT)刚开始计数的时候是小于捕获/比较寄存器(TIM2_CCR1)
的值,此时 PA0 输出高电平,随着计数器(TIM2_CNT)值慢慢的增加;
当计数器 (TIM2_CNT)大于捕获/比较寄存器 (TIM2_CCR1)的值时,这时 PA0 电平就会翻转,
输出低电平,计数器(TIM2_CNT)的值继续增加;
当 TIM2_CNT=TIM2_ARR 的值时,TIM2_CNT 重新回到 0 继续计数,PA0 电平翻转,输出高电平,
此时一个完整的PWM 信号就诞生了。
三、 程序分析
定时器配置函数为 TIM_PWM_Init() (详细见)。
配置函数首先使能 TIM2 和 TIM3 时钟:
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2|RCC_APB1Periph_TIM3, ENABLE);
然后自动装载计数值,计数从 0 开始:
= 999;
再对计时器进行预分频系数设置(这里不分频):
= 0;
并将计数器设置为向上计数:
= TIM_CounterMode_Up;
最后写入计时器配置寄存器,完成配置:
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
配置为 PWM 模式 1:
= TIM_OCMode_PWM1;
设置跳变值:
= CCRx_Val;
文档评论(0)