4. 定时器(TIM)(定时器计数)
1、TIM简介
•TIM(Timer)定时器
•定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断
•16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s(1/(72/2^16*2^16)) [2^16=65536]的定时
•不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能
•根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型
2、定时器类型
类型 |
编号 |
总线 |
功能 |
高级定时器 |
TIM1、TIM8 |
APB2 |
拥有通用定时器全部功能,并额外具有重复计数器、死区生成、互补输出、刹车输入等功能 |
通用定时器 |
TIM2、TIM3、TIM4、TIM5 |
APB1 |
拥有基本定时器全部功能,并额外具有内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等功能 |
基本定时器 |
TIM6、TIM7 |
APB1 |
拥有定时中断、主模式触发DAC的功能 |
高级定时器主要应用:三相无刷电机驱动设计。
STM32F103C8T6定时器资源:TIM1、TIM2、TIM3、TIM4
3、基本定时器结构图
实际分频系数=预分频器的值+1
UI(更新中段)触发中断 U↓(更新事件)不触发中断,但触发内部其他电路工作
硬件自己操作不需要中断,把更新事件通过主模式映射到TRGO,然后通过TRGO直接触发DAC
4、通用定时器结构图
5、高级定时器
6、定时器中断基本结构
运行控制:控制寄存器的一些位,启动停止、向上或向下计数等。主要控制时基单元
内外时钟源选择:时基单元左边的图块。
7、预分频器时序图
•计数器计数频率:CK_CNT = CK_PSC / (PSC + 1)
预分频缓存器(影子寄存器)作用:当突然改变分频值,必须等到更新事件之后,预分频寄存器的值才会被传到缓冲寄存器里面,才能生效。
8、计数器时序
•计数器溢出频率:CK_CNT_OV = CK_CNT / (ARR + 1) = CK_PSC / (PSC + 1) / (ARR + 1)
其中当更新中断标志为1,申请中断,然后响应后,手动清0;
溢出时间取频率倒数。
9、计数器无预装时序
10、计数器有预装时序
11、RCC时钟树
以72MHZ为界限,左边都是时钟产生的电路,右边是时钟分配的电路
其中外部比内部RC振荡器稳定
定时器中断(内部时钟)
12、主函数
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "OLED.h"
#include "Timer.h"uint16_t Num;
int main(void)
{OLED_Init();Timer_Init();while (1){OLED_ShowNum(1, 1, Num, 5);OLED_ShowNum(2,1,TIM_GetCounter(TIM2),5);}
}void TIM2_IRQHandler ()
{if (TIM_GetITStatus(TIM2,TIM_IT_Update)==SET )//获取中断标志位{Num++;TIM_ClearITPendingBit(TIM2,TIM_IT_Update);//清楚TIM2中断标志位}
}
Timer.c
#include "stm32f10x.h" // Device headervoid Timer_Init(void)
{RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//开启APB1时钟函数TIM_InternalClockConfig(TIM2);//选择时基单元的时钟TIM_TimeBaseInitTypeDef TIM_TimeBaseStructInit;TIM_TimeBaseStructInit.TIM_ClockDivision=TIM_CKD_DIV1 ;//选择1分频,主要作用,滤波处理TIM_TimeBaseStructInit.TIM_CounterMode=TIM_CounterMode_Up;//向上计数TIM_TimeBaseStructInit.TIM_Period = 1000 -1;//周期,ARR自动重装器的值(同PSC取值范围0~65535)TIM_TimeBaseStructInit.TIM_Prescaler= 7200 -1;//PSC预分频器的值TIM_TimeBaseStructInit.TIM_RepetitionCounter=0;//重复计数器的值(高级定时器才有用)TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructInit);//初始化时基单元TIM_ClearFlag(TIM2,TIM_IT_Update);//清除标志位,防止一上电就进入中断TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);//开启更新中断到NVICNVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//优先级分组NVIC_InitTypeDef NVIC_Initstructure;NVIC_Initstructure.NVIC_IRQChannel= TIM2_IRQn ;//中断通道NVIC_Initstructure.NVIC_IRQChannelCmd= ENABLE;NVIC_Initstructure.NVIC_IRQChannelPreemptionPriority= 2;NVIC_Initstructure.NVIC_IRQChannelSubPriority= 1; NVIC_Init(&NVIC_Initstructure);//启动定时器TIM_Cmd(TIM2,ENABLE);}//中断函数//void TIM2_IRQHandler ()
//{
// if (TIM_GetITStatus(TIM2,TIM_IT_Update)==SET )//获取中断标志位
// {
// TIM_ClearITPendingBit(TIM2,TIM_IT_Update);//清楚TIM2中断标志位
// }
//}
13、Proteus仿真
4. 定时器(TIM)(定时器计数)相关推荐
- STM32F4 定时器TIM(1)定时器控制输出【使用库函数】
高级时钟控制定时器TIM1&TIM8简介: STM32F4的高级控制定时器包含一个自动重装载计数器,计数器的输入是一个被预分频的系统时钟. 这个定时器有多种用途,包括车辆输入信号长度(输入捕获 ...
- STM32学习笔记(四)丨TIM定时器及其应用(定时中断、内外时钟源选择)
本篇文章包含的内容 一.TIM 定时器 1.1 TIM 定时器简介 1.2 TIM 定时器类型及其工作原理简介 1.2.1 基本定时器工作原理及其结构 1.2.2 通用定时器工作原理及其结构 1.2. ...
- STM32单片机:定时器TIM输出PWM波
学习32单片机过程中使用的工具:MDK Keil5 + 正点原子精英版(STM32F103ZET6)+ STM32CubeMX + HAL开发 一.PWM的产生原理 关于PWM的产生原理网上有很多教程 ...
- STM32学习笔记(六)丨TIM定时器及其应用(输入捕获丨测量PWM波形的频率和占空比)
本篇文章包含的内容 一.输入捕获 1.1 输入捕获简介 1.2 输入捕获通道的工作原理 1.3 输入捕获的主从触发模式 1.4 输入捕获和PWMI结构 二.频率的测量方法 2.1 测频法 2.2 测周 ...
- 嵌入式接口之TIM定时器与NVIC的STM32模板库函数的一些解释
文章目录 前言 定时基本方法 STM32的时钟 STM的定时器TIM 通用定时器的结构 时基单元 例子讲解 TIM_TimeBaseInit TIM_TimeBaseInitTypeDef TIM_C ...
- 【STM32】定时器TIM触发ADC采样,DMA搬运到内存(超详细讲解)
TIM+ADC+DMA原理 一般情况下,当我们需要进行采样的时候,需要用到ADC.例如:需要对某个信号进行定时采样(也就是隔一段时间,比如说2ms). 本文提供的解决方案是:使用ADC的定时器触发AD ...
- stm32初学之定时器TIM的基本定时功能以及介绍
文章目录 前言 一.定时器基本介绍以及定时器原理图 1.定时器基本介绍 2.定时器原理图 3.定时器配置 二.定时器计算 前言 提示:以下是本篇文章正文内容,下面案例可供参考 一.定时器基本介绍以及定 ...
- STM32定时器配置(TIM1、TIM2、TIM3、TIM4、TIM5、TIM8)高级定时器+普通定时器,定时计数模式下总结
STM32定时器配置(TIM1.TIM2.TIM3.TIM4.TIM5.TIM8)高级定时器+普通定时器,定时计数模式下总结 文章结构: --> 一.定时器基本介绍 --> 二.普通定时器 ...
- 4.基于STM32CubeMX使用TIM定时器
1.基础定时器 基础定时器相关函数 HAL_TIM_Base_Init(TIM_HandleTypeDef *htim); 定时器初始化,设置各种参数和连续定时模式 HAL_TIM_Base_MspI ...
- 【STM32】TIM定时器
介绍: 定时器由可编程预分频器驱动的16位自动装载计数器构成. 定时器最基本功能:定时 定时发送 USART 数据 定时采集 AD 数据等 定时器与 GPIO 结合 测量输入信号脉冲宽度 产生输出波形 ...
最新文章
- 赠书 | 2021年中国数字政府发展指数排名出炉!你的家乡名列第几?
- Spartan-6的I/O时钟缓冲器
- 牛客网【每日一题】4月17日题目精讲 华华给月月准备礼物
- 求100以内质数或者更多
- jq php异步上传图片,php+jquery Ajax异步上传图片(ajaxSubmit)实例_PHP教程
- STC单片机 命名规则,最小系统 图示
- CSS:淘宝商品展示样式
- Java 封装、继承、多态的理解
- 锂电池一级保护 二级保护
- 怎么制作GIF高清动态表情包
- 愚人节将至,怎么恶搞最过瘾
- 0x0000050蓝屏srvsys_蓝屏代码0x00000050的原因及解决方法
- vba传值调用_VBA传递参数步骤
- 财报季 | 涂鸦智能Q2营收翻倍,股价却再创新低,高瓴资本开始亏钱
- 凉了7年的快播,登上排行榜第一
- keil 的bug日记
- 零差云控(zeroerr)erob80 I型开箱
- 哇嘎显示等待无服务器,vagaa不能用了【处理技巧】
- Win7 下安装 VC6 和SP5
- windows XP 注册表