(待分)05STM32F4通用定时器详细讲解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
系列共有个定时器,功能很强大。个定时器分别为:
个高级定时器:和
个通用定时器:和
个基本定时器:和
本篇欲以通用定时器为例,详细介绍定时器的各个方面,并对其功能做彻底的探讨。
是一个位的定时器,有四个独立通道,分别对应着
主要功能是:输入捕获——测量脉冲长度。
输出波形——输出和单脉冲输出。
有个时钟源:
:内部时钟(),来自的
:外部时钟模式:外部输入与
:外部时钟模式:外部触发输入,仅适用于、、,,对应着引脚
:内部触发输入:一个定时器触发另一个定时器。
时钟源可以通过相关位进行设置。这里我们使用内部时钟。
(最高)
定时器挂在高速外设时钟或低速外设时钟上,时钟不超过内部高速时钟,故当不为时,定时器时钟为其倍,当为时,为了不超过,定时器时钟等于。
例如:我们一般配置系统时钟为,内部高速时钟,欲分频为,(因为最高时钟为),那么挂在总线上的时钟为。
《中文参考手册》的页列出与通用定时器相关的寄存器一共个,
以下列出与相关的寄存器及重要寄存器的简单介绍。
控制寄存器()
作用:使能自动重载
定时器的计数器递增或递减计数。
事件更新。
计数器使能
控制寄存器()
从模式控制寄存器()
中断使能寄存器()
作用::使能事件更新中断
:使能捕获比较中断
状态寄存器()
:事件更新中断标志
:捕获比较中断标志
事件生成寄存器()
捕获比较模式寄存器()
:输出比较模式
:输出比较预装载使能,即使能后可以随时改变捕获比较寄存器()的值
:捕获比较选择
捕获比较模式寄存器()
捕获比较使能寄存器()
:上升沿触发下降沿触发
:捕获比较输出使能
计数器()
预分频器()
计数器时钟频率等于([] )。
自动重载寄存器()
当自动重载值为空时,计数器不工作
难道说每次事件都必须装载重载值?
捕获比较寄存器()
输出时:是捕获比较寄存器的预装载值,由的位使能。
输入时:为上一个输入捕获事件()发生时的计数器值。
捕获比较寄存器()
捕获比较寄存器()
捕获比较寄存器()
用来做定时中断
与之相关的时基单元寄存器有
计数器()
预分频器()
自动重载寄存器()
原理:
这里以向上计数为例,即计数器向上计数,当达到所设定的值时,归零重新计数,若使能了更新中断,则在归零时,进入中断。
进入中断的时间为()个计时器周期
而计时器单元时钟是由定时器时钟分频得到,每()个定时器周期计数一次。定时器时钟上文已经讲了,由于挂在总线上
故进入中断的周期为()* ()秒
频率为[()* ()]
利用官方库函数实现每进入中断,改变灯的电平,程序如下
打开时钟,挂在上,所以命令开启时钟。
(); 使能时钟
时钟的配置。
; 自动重装载值
; 定时器分频
; 向上计数模式
;
()初始化
使能中断
(); 允许定时器更新中断。
打开。
(); 使能定时器
配置中断。
中断服务函数编写。
故可见的初始化函数都离不开以下几步
打开设备时钟。
配置参数。
打开设备。
设备需配置后再打开。如果需要配置中断,那么则需要编写中断服务函数。
完整程序如下
( )
{
;
;
(); 使能时钟
; 定时器分频
; 向上计数
; 自动装载值
;
()初始化
(); 允许定时器更新中断
(); 使能定时器
; 定时器中断
; 抢占优先级
; 子优先级
;
();
}
中断服务函数
()
{
(()) 溢出中断
{
( ); 灯电平翻转
}
(); 清除中断标志位
}
然后()函数中();即可
可以计算进入中断的频率为即灯每亮一次,周期为。