STM32定时器的应用
一:
STM32F106 一共有11个定时器 2个高级定时器,4个普通定时器,2个基本定时,2个看门狗,和一个滴答定时器
- 高级定时器 计数方式(向上,向下)、预分频值 1—65532、四通道,输出输入捕获,PWM互补输出
- 普通定时器 计数方式(向上,向下)、预分频值 1—65532、四通道,输出输入捕
- 基本定时器计数方式(向上 )、预分频值1—65532
二:
定时器配置方法步骤:
在配置前我们要添加定时器的库函数 stm32f10x_tim.c
1:配置中断向量表
2:配置定时器时钟
3:配置定时器
4:使能定时器
5:使能中断
三:
事例分析(定时中断3)
***1:配置中断向量表***
void NVIC_Configuration(void)
{NVIC_InitTypeDef NVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //定时器中断3中断向量NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);}***2:配置定时器时钟***RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);***3:配置定时器(初始化)***void TIM_Config(void){TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;//TIM_OCInitTypeDef TIM_OCInitStructure; TIM_DeInit(TIM3); //复位定时器TIM_TimeBaseStructure.TIM_Prescaler = 7200-1; // 时钟预分频数TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; // 定时器模式 向上计数TIM_TimeBaseStructure.TIM_Period = 9999; // 自动重装载寄存器周期的值( 定时时间 ) 累计 0xFFFF个频率后产生个更新或者中断 ( 也是说定时时间到 )定时器时间计算:每次进入中断服务程序间隔时间为((1+TIM_Prescaler )/72M)*(1+TIM_Period )=((1+7199)/72M)*(1+9999)=1秒// 72000000/7200=10000
// 10000/10000=1sTIM_TimeBaseStructure.TIM_ClockDivision =TIM_CKD_DIV1; // 时间分割值TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); // 初始化定时器 TIM_ClearFlag(TIM3,TIM_FLAG_Update); //清除定时器中断标志 TIM_Cmd(TIM3, ENABLE); ***4:使能定时器***TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE); // 打开中断 溢出中断 5:使能中断
}
四:
在主函数运行时调用这三个函数对定时器进行配置即可。
五:
定时中断函数的执行
TIME3的定时中断函数的执行在中断向量表中,即 stm32f10x_it.c 文件中。
因为使用的函数库版本不同有的stm32f10x_it.c中给出了void TIM3_IRQHandler(void) {}函数,只需要我们添加相应的中断服务程序即可,如果stm32f10x_it.c文件中没有这个函数我们就自己创建一个同名函数即可。
如:
这个例子是判断中断标志位是否溢出来进入中断,如果溢出就执行中断服务子程序,特别要注意的是在中断服务执行前或者执行后一定要清楚中断标志位,以免影响后面中断的进入。
void TIM3_IRQHandler(void){ if(TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET){ TIM_ClearITPendingBit(TIM3, TIM_FLAG_Update);GPIO_WriteBit(GPIOE, GPIO_Pin_3, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOE, GPIO_Pin_3))); }}
————————————————————————————————————————————
总结:
由上可知,STM32定时器的几个关键点是:
1.定时器时间计算:
公式=((1+TIM_Prescaler )/72M)(1+TIM_Period )=((1+7199)/72M)(1+9999)=1秒
其中TIM_Prescaler 为时钟预分频数,TIM_Period 为自动重装载寄存器周期的值,72M是总线上的定时器时钟频率;
2.定时器配置一共是五个参数,基本定时器是四个参数
算上上面两个还有三个参数包括
TIM_CounterMode(计数方式,上升计数或下降计数,在基本方式下,只能向上计数,高级的可以选择),
TIM_ClockDivision (时间分割值),该参数主要用于影响滤波器的采样频率
TIM_RepetitionCounter(重复计数器,基本模式不需要,高级模式需要)
3.定时器分类
高级定时器:TIM1和TIM8
基本定时器:TIM6和TIM7
通用定时器:TIM2-TIM5
4.定时器功能
基本定时器:只有定时功能(一般用于驱动DAC电路或者定时)
通用定时器:在定时基础上,能产生PWM脉冲信号,还能测量信号的脉冲长度
高级定时器:具备通用定时器的功能基础上,还能控制直流电机,还能刹车
(除了基本定时器只支持向上计数外,其他都支持三种计数方式;基本定时器,通用定时器在定时基础上还能产生PWM脉冲信号,测量输入信号的脉冲长度功能;高级定时器具有通用定时器所有功能且还能控制直流电机和刹车的功能)
————————————————————————————————————————————
定时器输入与输出简介
定时器输入
对于已有信号,检测其有效起始点(上升/下降沿),启动计时直至有效终止点,获取信号的周期、频率、脉宽、占空比等信息(如检测按键按下的时间,因为这类时间非常短暂,除了用特殊的设备无法检测出来,再如检测上升沿和下降沿跳变的时间,这个时间就更短了,大概在纳秒的水平)
输入捕获可由通用定时器TIMx产生,配置为输入捕获模式
定时器输出
https://blog.csdn.net/kouxi1/article/details/123957629
先存一下
STM32定时器的应用相关推荐
- 关闭 定时开启_【话说定时器系列】之四:STM32定时器更新事件及案例分享
STM32定时器是 ST MCU 内部最基础且常用的外设,实际应用尤为普遍.去年,电堂推出了<STM32 TIMER基础及常规应用介绍>,为大家梳理了 STM32 TIMER 的庞大内容, ...
- stm32 定时器_如何计算STM32定时器、独立看门狗和窗口看门狗
点击上方蓝色字体,关注我们 本博文简要阐述STM32L011微控制器定时器的参数配置(其他型号大同小异,本文侧重讲解配置,至于各类定时器的特点后续再述),STM32定时器种类繁多有通用定时器.基本定时 ...
- stm32定时器中断类型分析
一直在用的stm32定时器的中断都是TIM_IT_Update更新中断,也没问为什么,直到碰到有人使用TIM_IT_CC1中断,才想到这定时器的中断类型究竟有什么区别,都怪当时学习stm32的时候不够 ...
- STM32 - 定时器基础应用说明 - 04 - N-pulse waveform generation using one-pulse mode - 用OPM模式产生N次脉冲
前言:N-PULSE模式,就是PLUS模式+Mask(利用UDIS的屏蔽) Repetition的特性: 那么首先-N-PULSE可以定制波形的各个方面,然后,将这个定制进行重复,那不就是可以无限的定 ...
- STM32 - 定时器的设定 - 基础- 07 - 6-step PWM generation - 6步长PWM的产生 - COM Event的解释
前言:本节主要讲互补输出的步长设定问题,同时引入了一个重要的参数COM,这个再诸多STM32的手册里面都过于分散,在本文有一个比较完备的小结: When complementary outputs a ...
- STM32 - 定时器的设定 - 基础- 06 - OCxREF signal - Clearing the OCxREF signal on an external event
OCxREF signal 作为捕捉比较的定制化参考波形在对输出波形的配置上占有巨大的影响.如何将这个信号和外部输入的事件联系起来,能给系统的设计带来更多的可选择性. The OCxREF signa ...
- STM32 - 定时器的设定 - 基础 01.1 - Repetition counter
前言:Repetition counter是一个STM32增强的计数器功能,有很多用途,本文尝试进行简单阐述: 我们理解为,就是定时器溢出再增加一个倍率rate 的控制.注意是倍率,也就是如果是定时1 ...
- stm32捕获占空比_「话说定时器系列」之六:STM32定时器输入捕获话题
STM32定时器是 ST MCU 内部最基础且常用的外设,实际应用尤为普遍.去年,电堂推出了<STM32 TIMER基础及常规应用介绍>,为大家梳理了 STM32 TIMER 的庞大内容, ...
- STM32 定时器编码器模式时,如何理解编码器计数
编码器的使用 增量式编码器倍频技术 增量式编码器输出的脉冲波形信号形式常见的有两种: 一种是占空比 50% 的方波,通道 A 和 B 相位差为 90°: 另一种则是正弦波这类模拟信号,通道 A 和 B ...
- STM32定时器捕获编码器模式测速和方向测不准问题
** STM32定时器捕获编码器模式测速和方向测不准问题 问题概述 关于STM32编码器模式电机测速的资料网上一抓一大把,却发现真的拿过来用还是有问题的,比如刚刚做了个东西,是个个头比较大的麦克纳姆轮 ...
最新文章
- Catalyst 2950/2955交换机的RSPAN配置
- boost::units模块测试元函数 is_unit, is_quantity, is_dimension_list ....
- Hbase复制(Replication )
- iOS11 UITableViewCell滑动事件改动
- DebugView输出调试信息
- ES6中的扩展运算符
- Android图形---Graphics(概要)
- Unique Binary Search Trees,Unique Binary Search Trees2 生成二叉排序树
- Redis 4.0深入持久化
- Day4--MATLAB简介
- 歌声美化歌声转换方法与方案
- 冰点还原精灵如何关闭?
- html页面添加动态动画小人,博客页面添加动态小人
- 支付宝生活号开发配置
- Annovar软件注释肿瘤基因突变(一):COSMIC数据库最新版下载与使用
- ie9浏览器无法安装ActiveX控件问题
- 北京公积金贷款不够用 提升额度或有利刚需购房
- 计算机开机显示器闪,电脑开机后显示器闪烁怎么办
- pil对图像加透明 python_关于python:如何使用PIL将透明png图像与另一个图像合并...
- 坚持是一种态度,公众号粉丝突破 1300 啦
热门文章
- 达人评测 苹果MacBook Air对比华为Matebook X Pro选哪个好
- linux mysql11_linux mysql
- 如何把代码优雅的插入word
- pytorch训练WGAN网络
- java内聚 耦合_什么是内聚?什么是耦合?
- im2bw函数的阈值level
- ORACLE 12c rac备份异机单实例恢复(RMAN recover database出现RMAN-06054)
- JavaScript 中 Object.assign() 的用法
- odoo之action
- 目前最详细的红黑树原理分析(大量图片+过程推导!!!)