05 - STM32F4通用定时器详细讲解
更新时间:2024-04-03 13:48:01 阅读量: 综合文库 文档下载
- 05网推荐度:
- 相关推荐
STM32F4系列共有14个定时器,功能很强大。14个定时器分别为: 2个高级定时器:Timer1和Timer8
10个通用定时器:Timer2~timer5 和 timer9~timer14 2个基本定时器: timer6和timer7
本篇欲以通用定时器timer3为例,详细介绍定时器的各个方面,并对其PWM功能做彻底的探讨。
Timer3是一个16位的定时器,有四个独立通道,分别对应着PA6 PA7 PB0 PB1 主要功能是:1输入捕获——测量脉冲长度。
2 输出波形——PWM输出和单脉冲输出。
Timer3有4个时钟源: 1:内部时钟(CK_INT),来自RCC的TIMxCLK 2:外部时钟模式1:外部输入TI1FP1与TI2FP2
3:外部时钟模式2:外部触发输入TIMx_ETR,仅适用于TIM2、TIM3、TIM4,TIM3,对应
着PD2引脚
4:内部触发输入:一个定时器触发另一个定时器。
时钟源可以通过TIMx_SMCR相关位进行设置。这里我们使用内部时钟。
SYSCLK(最高168MHz) AHB_Prescaler
HCLK /1,2,..512 APBx_Prescaler
APB1orAPB2 /1,2,4.. APB1orAPB2 定时器时钟 1 APBx_precaler=1 2 APBx_precaler!=1
定时器挂在高速外设时钟APB1或低速外设时钟APB2上,时钟不超过内部高速时钟HCLK,故当APBx_Prescaler不为1时,定时器时钟为其2倍,当为1时,为了不超过HCLK,定时器时钟等于HCLK。
例如:我们一般配置系统时钟SYSCLK为168MHz,内部高速时钟 AHB=168Mhz,APB1欲分频为4,(因为APB1最高时钟为42Mhz),那么挂在APB1总线上的timer3时钟为84Mhz。 《STM32F4xx中文参考手册》的424~443页列出与通用定时器相关的寄存器一共20个, 以下列出与Timer3相关的寄存器及重要寄存器的简单介绍。
1 TIM3 控制寄存器 1 (TIM3_CR1)
作用:1使能自动重载TIM3_ARR
2定时器的计数器递增或递减计数。 3 事件更新。 4 计数器使能
2 TIM3 控制寄存器 2 (TIM3_CR2)
3 TIM3 从模式控制寄存器 (TIM3_SMCR) 4 TIM3 DMA/中断使能寄存器 (TIM3_DIER) 作用:1:使能事件更新中断 2:使能捕获/比较中断 5 TIM3 状态寄存器 (TIM3_SR)
1:事件更新中断标志 2:捕获/比较中断标志 6 TIM3 事件生成寄存器 (TIM3_EGR)
7 TIM3 捕获/比较模式寄存器 1 (TIM3_CCMR1) 1:输出比较模式 2:输出比较预装载使能,即使能后可以随时改变TIM3 捕获/比较寄存器 1
(TIM3_CCR1)的值
3:捕获/比较选择
8 TIM3 捕获/比较模式寄存器 2 (TIM3_CCMR2) 9 TIM3 捕获/比较使能寄存器 (TIM3_CCER) 1:上升沿触发or下降沿触发 2:捕获/比较输出使能 10 TIM3 计数器 (TIM3_CNT) 11 TIM3 预分频器 (TIM3_PSC)
计数器时钟频率 CK_CNT 等于 fCK_PSC / (PSC[15:0] + 1)。 12 TIM3 自动重载寄存器 (TIM3_ARR) 当自动重载值为空时,计数器不工作 难道说每次事件都必须装载重载值? 13 TIM3 捕获/比较寄存器 1 (TIM3_CCR1)
输出时:CCR1是捕获/比较寄存器的预装载值,由TIM3_CCMR的OC1PE位使能。 输入时:CCR1为上一个输入捕获事件(IC1)发生时的计数器值。
14 TIM3 捕获/比较寄存器 2 (TIM3_CCR2) 15 TIM3 捕获/比较寄存器 3 (TIM3_CCR3) 16 TIM3 捕获/比较寄存器 4 (TIM3_CCR4)
1 Timer3用来做定时中断
与之相关的时基单元寄存器有 10 TIM3 计数器 (TIM3_CNT) 11 TIM3 预分频器 (TIM3_PSC)
12 TIM3 自动重载寄存器 (TIM3_ARR)
原理:
这里以向上计数为例,即计数器TIM3_CNT向上计数,当达到TIM3_ARR所设定的值时,归零重新计数,若使能了更新中断,则在TIM3_CNT归零时,进入中断。 进入中断的时间为 (TIM3_ARR+1)个计时器周期
而计时器单元时钟是由定时器时钟分频得到,每 (CK_PSC+1)个定时器周期计数一次。 定时器时钟上文已经讲了,由于Timer3挂在APB1总线上
故Timer3进入中断的周期为(CK_PSC+1)* (TIM3_ARR+1)/84000000秒 频率为84000000/[(CK_PSC+1)* (TIM3_ARR+1)] Hz
利用官方库函数实现每500ms进入中断,改变LED灯的电平,程序如下
1 打开时钟,Timer3挂在APB1上,所以命令开启时钟。
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); ///使能TIM3时钟 2 时钟Timer3的配置。
TIM_TimeBaseInitStructure.TIM_Period = arr; //自动重装载值 TIM_TimeBaseInitStructure.TIM_Prescaler=psc; //定时器分频
TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式 TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);//初始化TIM3 3 使能中断
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); //允许定时器3更新中断。 4 打开Timer3。
TIM_Cmd(TIM3,ENABLE); //使能定时器3 5 配置中断。
6 中断服务函数编写。
故可见STM32的初始化函数都离不开以下几步 1 打开设备时钟。 2 配置参数。 3 打开设备。
设备需配置后再打开。如果需要配置中断,那么则需要编写中断服务函数。
完整程序如下
void TIM3_Int_Init(u16 arr,u16 psc) { TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); //使能TIM3时钟
TIM_TimeBaseInitStructure.TIM_Prescaler=psc; //定时器分频 TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数 TIM_TimeBaseInitStructure.TIM_Period = arr; //自动装载值 TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1; TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);//初始化TIM3 }
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); //允许定时器3更新中断 TIM_Cmd(TIM3,ENABLE); //使能定时器
NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn; //定时器中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x01; //抢占优先级1 NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x03; //子优先级3 NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; NVIC_Init(&NVIC_InitStructure);
/Timer3中断服务函数
void TIM3_IRQHandler(void) {
if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET)/ /溢出中断 { GPIO_ToggleBits(GPIO_LED ,DS1_PIN); //LED灯电平翻转 } TIM_ClearITPendingBit(TIM3,TIM_IT_Update); //清除中断标志位 }
然后main()函数中TIM3_Int_Init(5000-1,8400-1);即可
可以计算进入中断的频率为2Hz即LED灯每500ms亮一次,LED周期为1Hz。
正在阅读:
师范附小李华丽《一面五星红旗》的教学设计06-08
【精选】七年级英语下册Unit5Amazingthings检测题一新版牛津版08-25
陪伴作文600字优秀7篇03-28
四年级音乐试题及答案03-21
创元科技股份有限公司独立董事年报工作制度06-01
百城万店无假货活动开展情况汇报材料02-20
第1讲 认清台海形势、牢记根本职能03-16
长安大学2010-2011 学年第 二 学期 期末试题(原题)10-03
广州有机肥项目商业计划书04-28
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 定时器
- 讲解
- 通用
- STM32F4
- 详细
- 05
- 讲师班介绍 - 图文
- 股权质押合同 - 1
- 一二年级看图说话看图写话教案
- 2011 - 2012学年第二学期第二次模拟试卷 - 语文
- 3货劳税习题
- 短消息业务联网协议1.2版(SGIP协议)
- 稀缺名贵药用植物产业基地建设可行性研究报告 - 图文
- 2009中国(温州)高新技术成果交易会1
- 2015河南省征地区片综合地价标准
- 考研有机化学之推测结构题及答案
- 2014-3-20-SEO笔记
- 地理高考模拟经典选择读图分析综合题解析80例(三套)
- 楚香凝2017山东行测数量真题解析
- 2014中小学教师系列崇左市高级评委会评审通过人员名单:183人
- 《成本会计》习题集及参考答案
- 宏大SC-MCB系统内部调试文件
- 2013年小学三年级数学竞赛试卷(附答案)
- 心电信号处理课程设计-matlab
- 监理工作总结及质量评估报告
- 重庆市律师协会律师代理劳动争议案件操作指引