- 1、本文档共59页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于ARM的单片机应用及实践课件第六章汇编
第六章 STM32 定时器的使用
本章内容
STM32F的定时器简介
通用定时器时基单元
通用定时器特殊工作模式
定时器编程及实训
第六章 STM32 定时器的使用
STM32中一共有11个定时器:
2个高级控制定时器
4个普通定时器
2个基本定时器
2个看门狗定时器
1个系统嘀嗒定时器。
TIM1,TIM8是能够产生三对PWM互补输出的高级定时器,常用于电动机的控制。它们的时钟由APB2的输出产生。
TIM2~TIM5是通用定时器:
输入捕获
输出比较
PWM
脉冲计数
TIM6和TIM7是基本定时器:
主要用于产生DAC触发信号,其时钟由APB1输出产生
第六章 STM32 定时器的使用
系统时基定时器SysTick:
24位递减计数器
自动重加载
常用于产生延时us级、ms级
定时器的工作频率计算公式为
CK_CNT=定时器时钟/(TIMx_PSC+1)
其中CK_CNT表示定时器工作频率
TIMx_PSC表示分频系数
第六章 STM32 定时器的使用
typedef struct
{
vu32 CTRL; //SysTick控制和状态寄存器
vu32 LOAD; //SysTick重装载值寄存器
vu32 VAL; //SysTick当前值寄存器
vuc32 CALIB; //SysTick校准值寄存器
} SysTick_TypeDef;
第六章 STM32 定时器的使用
库函数:
SysTick_CLKSourceConfig函数
SysTick_Setreload函数
SysTick_CounterCmd函数
SysTick_ITConfig函数
SysTick_GetCounter函数
SysTick_GetFlagStatus函数
第六章 STM32 定时器的使用
STM32的通用定时器TIM,是一个通过可编程预分频器驱动的16位自动装载计数器构成。
通用TIMx定时器特性包括:
具备16位向上,向下,向上/向下自动装载计数器。
具备16位可编程预分频器。
具备4个独立通道。
使用外部信号控制定时器和定时器互连的同步电路。
可以通过事件产生中断,中断类型丰富。
具备DMA功能。
第六章 STM32 定时器的使用
第六章 STM32 定时器的使用
第六章 STM32 定时器的使用
从上图中可以看出,定时器的时钟不是直接来自APB1或APB2,而是来自于输入为APB1或APB2的一个倍频器,图中的浅蓝色部分。
这个倍频器的作用:当APB1的预分频系数为1时,倍频器不起作用,定时器的时钟频率等于APB1的频率;
当APB1的预分频系数为其它数值(即预分频系数为2、4、8或16)时,这个倍频器起作用,定时器的时钟频率等于APB1的频率两倍。
下面举一个例子说明。假定AHB=36MHz,因为APB1允许的最大频率为36MHz,所以APB1的预分频系数可以取任意数值;当预分频系数=1时,APB1=36MHz,TIM2~7的时钟频率=36MHz(倍频器不起作用);
当预分频系数=2时,APB1=18MHz,在倍频器的作用下,TIM2~7的时钟频率=36MHz。
既然需要TIM2~7的时钟频率=36MHz,为什么不直接取APB1的预分频系数=1?
第六章 STM32 定时器的使用
答案是:APB1不但要为TIM2~7提供时钟,而且还要为其它外设提供时钟;设置这个倍频器可以在保证其它外设使用较低时钟频率时,TIM2~7仍能得到较高的时钟频率。
第六章 STM32 定时器的使用
例如普通定时器的时钟为72MHz,分频比为7199,那么我们想要得到一个1秒钟的定时,定时计数器的值需要设定为
TIMx_ARR =10000
因/ 7200 =10KHz
时钟周期T=1/10KHz=100us
100us × 10000 =1S
结论 :分频比7199 定时计数器的值10000。
第六章 STM32 定时器的使用
第六章 STM32 定时器的使用
通用定时器配置步骤
14
1)TIM3时钟使能
这里我们通过APB1ENR的第1位来设置TIM3的时钟,因为Stm32_Clock_Init函数里面把APB1的分频设置为2了,所以我们的TIM3时钟就是APB1时钟的2倍,等于系统时钟(72M)。
2)设置TIM3_ARR和TIM3_PSC的值
通过这两个寄存器,设置自动重装的值及分频系数。这两个参数加上时钟频率就决定了定时器的溢出时间。
3)设置TIM3_DIER允许更新中断
因为我们要使用TIM3的更新中断,所以设置DIER的UIE位
文档评论(0)