目录

定时器:基本,通用

一,基本定时器:

作用:

结构图:

二、通用定时器:

作用:

结构图:

三、代码分析:

1、选择时钟

2、配置时基单元

3、产生中断

4、使用定时器


定时器:基本,通用

一,基本定时器:

作用:

● 16位自动重装载累加计数器
        ● 16位可编程(可实时修改)预分频器,用于对输入的时钟按系数为1~65536之间的任意数值
分频
        ● 触发DAC的同步电路
        ● 在更新事件(计数器溢出)时产生中断/DMA请求

结构图:

timxclk一般为72M沿着线路先到达预分频处(TIMx_CNT)

预分频:(16位,所以max:65535),设置为0即72/(0+1)以此类推。

分屏完到达计数器处:(16位,所以max:65535)(TIMx_CNT)

计数器:遇到一个上升沿加一:加到固定值触发后面波浪箭头(固定值自己设置:自动重装载寄存器(TIMx_ARR):16位)

我们简单算一下最大计数时间。频率f=72MHZ/(预分频值*重装载值)

time=1/f        只要f取最小即可。最后f=53.6523235s左右。

一个定时器还可以做另一个定时器输入。所以三个定时器几乎可以定时8000年。

我们简单讲一下这个至DAC;这里可以设置一个主模式。把最下面那个事件映射到TRGO.这样我们就不需要频繁使用中断。它可以自动运行、

二、通用定时器:

作用:

●包含所有基本定时器功能。
4个独立通道:
        ─输入捕获
        ─输出比较
        ─PWM生成(边缘或中间对齐模式)
        ─单脉冲模式输出

● 使用外部信号控制定时器和定时器互连的同步电路
● 如下事件发生时产生中断/DMA:
        ─更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)
        ─触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)
        ─输入捕获
        ─输出比较
● 支持针对定位的增量(正交)编码器和霍尔传感器电路
● 触发输入作为外部时钟或者按周期的电流管

结构图:

将这幅图分为三部分:基本定时器图上,基本定时器图下,基本定时器。

基本定时器图上:可以简单理解为产生时钟的部分:复杂的线路不过是不同不同方式的提供时钟方式。

基本定时器前面已讲。

基本定时器图下:输出捕获,输入捕获。

三、代码分析:

定时时间计算方式:time = ((arr+1)*(psc+1))/clk ;

clk:定时器的输入时钟频率(单位MHZ)time:定时器溢出时间(单位为us)

令arr=4999;psc:7199所以time = ((4999+1)×(7199+1))/72 = 500000us = 500ms .

1、选择时钟

以TIM3为例,打开TIM3时钟。

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

选择时基单元时钟。这有很多选项我们选择对应内部时钟。(默认)可以不写,但如果选择其他路就要写。

TIM_InternalclockConfig(TIM2);

2、配置时基单元

把这些设置为一个结构体,然后配置。其中TIM_TimeBaseStructure.TIM_ClockDivision = 0; 和滤波有关随意设置。

得到代码:

    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructureTIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值  计数到5000为500msTIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值  10Khz的计数频率  TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_timTIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位TIM_ClearFlag(TIM3,TIM_FLAG_Updata);//TIM_TimeBaseInit会导致中断标志位为1,为了更准确我们清除它。

3、产生中断

即图中UI那个箭头。

TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
NVIC_InitStruct.NVIC_IRQChannel = TIM3_IRQn;//中断源
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=2;//抢占优先级分组(只能分组一次建议放到主函数)
NVIC_InitStruct.NVIC_IRQChannelSubPriority = 2;//子优先级,响应优先级。
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;//使能,失能
NVIC_Init(&NVIC_InitStruct);    

4、使用定时器

TIM_Cmd(TIM3,ENABLETIM_Cmd(TIM3,ENABLE););

注:常用函数

stm32-通用定时器原理及代码分析相关推荐

  1. STM32通用定时器(原理、结构体、库函数、定时器中断每秒闪烁一次灯) —— 时钟源、分频值、重装载值

    参考:stm32定时器与定时器中断 作者:打酱油的 发布时间: 2021-04-11 01:04:09 网址:https://blog.csdn.net/weixin_46098612/article ...

  2. STM32 通用定时器原理介绍

    一.STM32 通用定时器简介 STM32F1 的通用定时器是一个通过可编程预分频器(PSC)驱动的 16 位自动装载计数器 (CNT)构成.STM32 的通用定时器可以被用于:测量输入信号的脉冲长度 ...

  3. stm32关定时器_stm32通用定时器原理及编程技巧

    STM32系列的8个定时器,其中TIM1和TIM8是能够产生三对PWM互补输出的高级定时器,常用于三相电机的驱动,它们的时钟由APB2的输出产生.其它6个为普通定时器,时钟由APB1的输出产生. 下图 ...

  4. 对dpdk的rte_ring实现原理和代码分析

    对dpdk的rte_ring实现原理和代码分析 前言 dpdk的rte_ring是借鉴了linux内核的kfifo实现原理,这里统称为无锁环形缓冲队列. 环形缓冲区通常有一个读指针和一个写指针.读指针 ...

  5. TrueCrypt 6.2a原理及代码分析

    TrueCrypt 6.2a原理及代码分析 3 comments 25th Apr 10 rafa 1 项目物理布局 Project     |____ Boot /* MBR部分的代码 */     ...

  6. 免费的Lucene 原理与代码分析完整版下载

    Lucene是一个基于Java的高效的全文检索库. 那么什么是全文检索,为什么需要全文检索? 目前人们生活中出现的数据总的来说分为两类:结构化数据和非结构化数据.很容易理解,结构化数据是有固定格式和结 ...

  7. Lucene 原理与代码分析完整版

    原文地址为: Lucene 原理与代码分析完整版 Lucene 原理与代码分析系列文章已经基本告一段落,可能问题篇还会有新的更新. 完整版pdf可由以下链接下载. Lucene 原理与代码分析完整版 ...

  8. Lucene原理与代码分析(高手博客备忘)

    2019独角兽企业重金招聘Python工程师标准>>> 随笔 - 69  文章 - 77  评论 - 687 随笔分类 - Lucene原理与代码分析 Lucene 4.X 倒排索引 ...

  9. STM32——通用定时器

    一.三种定时器区别 定时器分为:高级定时器.通用定时器和基本定时器 二.通用定时器功能特点描述 STM32F4的通用TIMx(TIM2.TIM3.TIM4和TIM5)定时器功能特点包括: ·16/32 ...

最新文章

  1. Eclipse使用Tomcat发布项目时出现YadisException异常解决方案
  2. 深入聊一聊 Spring AOP 实现机制
  3. 7Papers|斯坦福学者造出机器鸽;港科大等提出学生情绪分析新系统
  4. 运维工程师 | 交换机堆叠
  5. angular组件--tips提示功能
  6. QT 默认环境路径配置方法
  7. 《01》ECMAScript 6 简介
  8. AnnotationConfigBeanDefinitionParser are only available on JDK 1.5 and higher
  9. Android qemu pipe高速管道(九)
  10. 【数字图像处理】直方图规定化(含实现代码)
  11. React脚手架搭建及创建React项目
  12. 一堂难忘的计算机课作文,难忘的一节微机课_800字
  13. 添加zabbix飞信报警
  14. iTunes12.9以上 自定义铃声 无法拖入 无法添加
  15. 浏览器是怎样工作的?
  16. 【微信小程序】设置画布字体
  17. Eclipse java.lang.NoClassDefFoundError: org/dom4j/io/SAXReade 错误解决方法
  18. 从大数据应用案例中理解大数据的应用价值
  19. 案例总结:京东图书信息爬取
  20. [电影]《Ladybird》演绎完整18岁的青春

热门文章

  1. Excel:有合并列和横排多行的每个单元格数据与首列组合竖排
  2. 10款响应式自适应网站模板(二)
  3. 数论专题(1)数论函数,整数分块
  4. Android Q 适配指南
  5. 投入式水位计组成及原理介绍
  6. 为Revit的造型能力正名. Revit 二次曲面造型能力的实现. 二次曲面幕墙的实现
  7. UG曲面造型-搭建轮廓和曲面创建(通过网格曲面,填充曲面,割面补面,曲面合格性分析)
  8. 智慧城市系列课程1-总览-系统解读智慧城市的需求及技术
  9. PLC与单片机的区别
  10. 呼叫中心系统话务功能模块