———————————————————中断简述————————————————————

中断简述:当一个事件A打断主事件运行时,会执行A事件,执行完A事件后回来继续执行主事件,当在执行A事件,又产生新的B事件,当B事件的优先级大于A事件则执行B事件,执行完B事件,执行A事件,再执行主事件,这就涉及到中断优先级的概念。

中断配置:当主优先级配置一样,比较次优先级,都一样则比较硬件优先级

NVIC_PriorityGroupConfig():中断组配置,五个参数

NVIC_PriorityGroup_0:0位主优先级,4位次优先级

NVIC_PriorityGroup_1:1位主优先级,3位次优先级

NVIC_PriorityGroup_2:2位主优先级,2位次优先级

NVIC_PriorityGroup_3:3位主优先级,1位次优先级

NVIC_PriorityGroup_4:4位主优先级,0位次优先级

NVIC_IRQChannel:中断来源

NVIC_IRQChannelPreemptionPriority:配置主优先级

NVIC_IRQChannelSubPriority:配置次优先级

——————————————————基本定时器————————————————————

1.基本定时器时钟源:定时器时钟 TIMxCLK,即内部时钟 CK_INT,经 APB1 预分频器后分频提供,如果 APB1 预分频系数等于 1,则频率不变,否则频率乘以 2,库函数中 APB1 预分频的系 数是 2,即 PCLK1=36M,所以定时器时钟 TIMxCLK=36*2=72M。

 2.计数器时钟:时钟源产生的定时器时钟可以再经过PSC预分频器后产生新的计数器时钟,PSC是一个十六位的预分频器,可以对定时器时钟进行1~65536之间的任何一个数进行分频,PSC系统自动加一。计算方式为:计数器时钟=定时器时钟/(预分频器数+1)。

3.计数器:计数器CNT是一个16位的计数器,只能向上数,最大计算值为65535,当达到自动重装载寄存器的时候会产生更新事件,并且从零开始。

4.自动重装载寄存器:自动重装载寄存器 ARR 是一个 16 位的寄存器,这里面装着计数器能计数的最大数值。当计数到这个值的时候,如果使能了中断的话,定时器就产生溢出中断(计数器和自动重装载寄存器是一个东西,一个是表达能计最大的值,一个是表达在最大值内,计算多少次会产生中断)。

5.定时计算公式:计数一次的时间为T=1/f,时间=频率分之一,计数1000次的时间为T=(1/f)*1000

计数器时钟  = 定时器时钟/预分频器值,计数一次时间=1/计数器时钟,计数1000次的时间为T=(1/计数器时钟)*自动重载寄存器的值 = ((预分频器值+1)*自(动重装载寄存器值+1))/定时器时钟。(加一均为系统固定)

6.配置参数:

TIM_Prescaler(预分频器值)                                        TIM_Period(自动重装载寄存器值)

7.配置1ms举例:

        假设基本定时器时钟为72M,TIM_Prescaler = 71,TIM_Period = 999。

T = {(71+1)*(999+1)}/72M = 1000/1M = 0.001s = 1ms。发

——————————————————高级定时器————————————————————

0.高级定时器概述:高级定时器和通用定时器在基本定时器的基础上增加了上引入了外部引脚,可以实现输入捕获和输出比较功能。高级控制定时器比通用定时器增加了可编程死区互补 输出、重复计数器、带刹车(断路)功能。 高级控制定时器时基单元包含一个 16 位自动重装载寄存器 ARR,一个 16 位的计数器CNT可向上/下计数,一个 16 位可编程预分频器 PSC,预分频器时钟源有多种可选,有 内部的时钟、外部时钟。还有一个 8 位的重复计数器 RCR,这样最高可实现 40 位的可编 程定时。

1.1时钟源(四种时钟源):

A.内部时钟源 CK_INTB.

B.外部时钟模式 1:外部输入引脚 TIx(x=1,2,3,4)

C.外部时钟模式 2:外部触发输入 ETR

D.内部触发输入(ITRx)

        A.内部时钟源 CK_INTB: 

        内部时钟 CK_INT 即来自于芯片内部,等于 72M,一般情况下,我们都是使用内部时 钟。当从模式控制寄存器 TIMx_SMCR 的 SMS 位等于 000 时,则使用内部时钟。

         B.外部时钟模式 1:外部输入引脚 TIx(x=1,2,3,4):

1.时钟信号输入引脚 :当使用外部时钟模式 1 的时候,时钟信号来自于定时器的输入通道,总共有 4 个,分 别为 TI1/2/3/4,即 TIMx_CH1/2/3/4。具体使用哪一路信号,由TIM_CCMRx 的位 CCxS[1:0]配置,其中 CCMR1 控制 TI1/2,CCMR2 控制 TI3/4。

 

                 2.滤波器:如果来自外部的时钟信号的频率过高或者混杂有高频干扰信号的话,我们就需要使用 滤波器对信号重新采样,来达到降频或者去除高频干扰的目。

3.边缘检测:边沿检测的信号来自于滤波器的输出,在成为触发信号之前,需要进行边沿检测,决 定是上升沿有效还是下降沿有效。

4.触发选择:当使用外部时钟模式 1 时,触发源有两个,一个是滤波后的定时器输入 1(TI1FP1) 和滤波后的定时器输入 2(TI2FP2)。

                5.从模式选择:选定了触发源信号后,最后我们需把信号连接到 TRGI 引脚,让触发信号成为外部时 钟模式 1 的输入,最终等于 CK_PSC。

C.外部时钟模式 2:外部触发输入 ETR

                1.时钟信号输入引脚:当使用外部时钟模式 2 的时候,时钟信号来自于定时器的特定输入通道 TIMx_ETR, 只有 1 个。

                2.外部触发极性:来自 ETR 引脚输入的信号可以选择为上升沿或者下降沿有效。

                3.外部触发预分频器:由于 ETRP 的信号的频率不能超过 TIMx_CLK(72M)的 1/4,当触发信号的频率很高的情况下,就必须使用分频器来降频。

                 4.滤波器:如果来自外部的时钟信号的频率过高或者混杂有高频干扰信号的话,我们就需要使用 滤波器对信号重新采样,来达到降频或者去除高频干扰的目。

                5.从模式选择:经过滤波器滤波的信号连接到 ETRF 引脚后,触发信号成为外部时钟模式 2 的输入, 最终等于 CK_PSC,然后驱动计数器 CNT 计数。

        D.内部触发输入(ITRx) :内部触发输入是使用一个定时器作为另一个定时器的预分频器。硬件上高级控制定时 器和通用定时器在内部连接在一起,可以实现定时器同步或级联。主模式的定时器可以对 从模式定时器执行复位、启动、停止或提供时钟。

1.2.控制器:高级控制定时器控制器部分包括触发控制器、从模式控制器以及编码器接口。触发控 制器用来针对片内外设输出触发信号,比如为其它定时器提供时钟和触发 DAC/ADC 转换。 编码器接口专门针对编码器计数而设计。从模式控制器可以控制计数器复位、启动、递增/ 递减、计数。

1.3.时基单元:高级控制定时器时基单元功能包括四个寄存器,分别是计数器寄存器(CNT)、预分频 器寄存器(PSC)、自动重载寄存器(ARR)和重复计数器寄存器(RCR)。其中重复计数器 RCR 是高级定时器独有,通用和基本定时器没有。

         1.预分频器PCS: 时钟源出来的时钟再经过预分频器(分频系数为1~65535+1),再出来得到真实的计数器时钟。

        2.计数器CNT:

                递增计数模式:计数器从0开始,每来一个时钟脉冲计数值加1,直到和自动重载计数器ARR值相等,产生溢出,然后又重0开始计数,如果禁止了重复计数器REP,则立马产生中断,如果使能了重复计数器REP,每产生一次溢出事件,重复计数器REP值减1,直到为0才产生中断事件。

                递减计数模式:和递增类似,向下递减才会产生溢出,计数器从自动重载寄存器 ARR 值开始递减,直到计数器为0。

                中心对齐模式下:递增和递减结合,递增到一定次数ARR的值产生溢出,再从ARR的值递减到0,每次发生计数器上溢和下溢事件都会生成更新事件。

        3.自动重装载寄存器ARR:自动重载寄存器 ARR 用来存放与计数器 CNT 比较的值,如果两个值相等就递减重复 计数器。

        4.重复计数器 RCR:高级定时器独有的,其他产生溢出就产生中断,在高级定时器每当有一个溢出事件,就会递减重复计数器,当减少到0才会溢出产生中断,相当于一个溢出的计数。

1.4.输入捕获:输入捕获可以对输入的信号的上升沿,下降沿或者双边沿进行捕获,常用的有测量输 入信号的脉宽和测量 PWM 输入信号的频率和占空比这两种。原理就是把两次发生跳变的时间CNT保存在捕获寄存器CCR中,把两个数相减就能等到脉宽或者频率。

        1.输入通道:需要被捕获的信号从定时器的外部引脚进入。

        2.输入滤波器和边沿检测器 :对输入信号进行高频滤波,即重新采样,根据采样定律,采样的频率必须大于输入频率的两倍。以保证再采到有效频率范围内高于两倍的将被过滤掉。

        3.捕获通道:用来测量脉宽和频率,就是捕捉输入通道发生跳变的信号,用来储存他们跳变的计数器CNT值。

        4.预分频器:ICx 的输出信号会经过一个预分频器,用于决定发生多少个事件时进行一次捕获。

        5.捕获寄存器:经过预分频器的信号 ICxPS 是最终被捕获的信号,捕获寄存器就是保存,捕获通道捕获输入信号发生跳变时,计数器CNT的值。

1.5.输出比较:输出比较就是通过定时器的外部引脚对外输出控制信号。

        1.比较寄存器:当计数器 CNT 的值跟比较寄存器 CCR 的值相等的时候,输出参考信号 OCxREF 的信号,然后 OCxREF 再经过一系列的控制之后就成为真正的输出信号 OCx/OCxN。

        2.死区发生器:在生成的参考波形 OCxREF 的基础上,可以插入死区时间,用于生成两路互补的输出信号 OCx 和 OCxN,死区时间就是元件的特性,mos管开通或者关闭需要时间反应,插入死区时间用来弥补这个时间差。

        3.输出控制:参考信号 OCxREF 在经过死区发生器之后会产生两路带死区的互补信号 OCx_DT 和 OCxN_DT这两路带死区的互补信号然后就进入输出控制电路,如果没有加入死区控制,那么进入输出控制电路的信号就直接是 OCxREF。进入输出控制电路的信号会被分成两路,一路是原始信号,一路是被反向的信号。

         4.输出引脚:输出的比较信号最终由定时器的外部IO输出。

1.6.断路功能:控制输出信号开或停,断路源可以是时钟故障事件,由内部复位时钟控制器中的时钟安全系统(CSS)生成,也可以是外部断路输入 IO。

2.输出PWM占空比计算:    当psc为0时,即不分频。则ccr/arr就等于占空比例如psc=0,arr=1000,责当ccr等于500时候占空比等于50%。

STM32定时器详解及简述相关推荐

  1. STM32 定时器详解

    STM32 定时器详解 吃了一个猛亏,自己理解花了大半天时间,结果一看代码发现巨简单 算了,把自己理解的放上来吧 目录 STM32 定时器详解 前言 一.定时器种类和区分 二.时钟源 三.计数过程 3 ...

  2. stm32定时器详解

    简介 在控制,电子领域中,时常需要定时控制,延时控制或者对某件事进行计数,如洗衣机的定时洗衣等等定时控制,载入通过对外部的脉冲进行计数来测量速度等 资源介绍 STM32一共有三种定时器,总共有14个定 ...

  3. STM32定时器详解——TIM详解

    TIM简介 1.TIM (Timer)定时器 2.定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断 3.16位计数器.预分频器.自动重装寄存器的时基单元,在72MHz计数时4.钟下可以实 ...

  4. STM32的定时器详解(嵌入式学习)

    STM32的定时器详解 0. 前言 1. Systick定时器 概念 工作原理 时钟基准 Systick练习 2. HAL_Delay函数分析 3. 定时器 基本概念 定时器分类 定时器组成 计数器 ...

  5. Jmeter性能测试工具Timer定时器详解

    jmeter提供了很多元件,帮助我们更好的完成各种场景的性能测试,其中,定时器(timer)是很重要的一个元件,jemter提供了9种定时器,下面一一介绍: 一.定时器的作用域 1.定时器是在每个sa ...

  6. stm32位操作详解

    stm32位操作详解 STM32位操作原理 思想:把一个比特分成32位,每位都分配一个地址,这样就有32个地址,通过地址直接访问. 位操作基础 位运算 位运算的运算分量只能是整型或字符型数据,位运算把 ...

  7. STM32基础定时器详解

    目录 01.定时器介绍 02.时钟源 03.时基单元 04.计数模式 4.1.向上计数模式 4.2.向下计数模式 4.3.中央对齐(向上/向下计数模式) 05.基础定时代码 定时器最基本的功能就是定时 ...

  8. STM32 ADC详解

    目录 01.ADC简介 02.STM32的ADC外设 03.STM32ADC框图讲解 04.触发源 05.转换周期 06.数据寄存器 07.中断 08.电压转换 09.电路图设计 10.代码设计 01 ...

  9. STM32 DAC详解

    目录 01.DAC简介 02.DAC转换 03.功能说明 04.DAC输出电压 05.代码配置 上一篇介绍了<STM32ADC详解>,既然有模拟转数字的ADC模块,那么就必然有数字转模拟的 ...

最新文章

  1. 日均请求量百亿级数据处理平台的容器云实践
  2. Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析
  3. NYOJ 864 统计
  4. jQuery到底有什么好?
  5. 使用ActiveMQ Artemis在两个WildFly服务器之间构建水平JMS桥
  6. 记一次酷派尚锋Y75刷机
  7. 可解释性系列论文:Mathematics of Deep Learning
  8. VMware16安装CentOS7.6虚拟机
  9. 项目中的文件夹与tomcat/webapp中manager文件夹重名
  10. UBOOT引导LINUX内核过程 卡死STARTING KERNEL ...(下载地址,加载地址,入口地址的修改)(UIMAGE和ZIMAGE的区别)
  11. C盘文件分析(如何减小C盘容量)
  12. DirectX 3D图形
  13. Linux - send 出现 Resource temporarily unavailable
  14. 批处理PS给相同图片添加不同文字
  15. 使用Cluster API提供裸金属Kubernetes
  16. VS2005 常见问题分析
  17. CocosCreator报:Maximum call stack size exceeded 的问题
  18. 什么是Unicode编码
  19. 工作第十五周:上线前的惊悚
  20. 震惊!!十五天开发出一款安卓打卡app,并且成功发布!

热门文章

  1. webgl 2.0 测试_测试WebGL的极限:Babylon.js培训演示
  2. ebnf范式_BNF范式(巴科斯范式)简介
  3. 扩展巴科斯范式 EBNF
  4. Mysql YUM升级
  5. 网络编程下的图书管理系统
  6. IIS应用程序池启用32位导致服务不可用的503错误
  7. 1042电子老鼠闯迷宫 (广搜)
  8. 高性能程序设计,缓存为王
  9. Java中匿名类的两种实现方式
  10. 全球与中国1,2,4-三氟苯市场深度研究分析报告