stm32入门——定时器中断

产生定时中断是定时器的用法之一,与定时器用来进行PWM输出和输入捕获相比,定时器中断更容易理解、掌握。
原理简介
使用通用定时器进行中断的原理,其实和开发板Systick定时器进行中断延时很相似(Stm32入门——Systick定时器),即:用psc(预分频系数)设置好定时器时钟后,arr(预装载值)在每个时钟周期内减1,当arr减为0时触发中断然后进入中断处理程序进行中断处理。
以下代码为例:

void TIM3_Int_Init(u16 arr,u16 psc)
{RCC->APB1ENR|=1<<1;  //TIM3时钟使能    TIM3->ARR=arr;    //设定计数器自动重装值 TIM3->PSC=psc;     //预分频器设置TIM3->DIER|=1<<0;   //允许更新中断              TIM3->CR1|=0x01;    //使能定时器3MY_NVIC_Init(1,3,TIM3_IRQn,2);//抢占1,子优先级3,组2
}

RCC->APB1ENR|=1<<1
由于定时器3(TIM3)是挂在APB1上的外设,所以要打开APB1(若对时钟部分不理解,可以参考Stm32入门——时钟部分讲解),这里的预分频器值psc是来设置TIM3的时钟频率的,如果系统时钟(SYSTICK)频率为72MHz、psc为7199,则TIM3的时钟频率就为
72MHz/(7199+1)Hz = 10KHz,这里的“+1”是手册中规定的。
10KHz是什 么意思呢?就是一秒钟会产生10K个周期,那么一个周期的时间长度就是1/10KHz,如果你想将定时器中断的时间间隔设置为0.5秒,那么你将arr设置为5000即可,因为arr每减1就需要一个周期的时间,减5000次就经过了5000*(1/10KHz)=0.5秒。
TIM3->DIER|=1<<0;
这一行设置允许更新中断,即arr减到0以后可以触发更新中断(还有其他类型的中断)
MY_NVIC_Init(1,3,TIM3_IRQn,2);//抢占1,子优先级3,组2
中断优先级有抢占优先级和响应(即子优先级)优先级两种,抢占优先级即:若程序1正在使用CPU,这时如果程序2要求使用CPU,并且程序2的抢占优先级高,则CPU被程序2抢占;若两者抢占优先级相同,则就算程序2的响应优先级高于程序1,CPU也不能被抢占;若程序1正在使用CPU,程序2和程序3的抢占优先级等于或低于程序1,且程序2的响应优先级高于程序三,则待CPU空出后,程序2先运行,程序3最后运行。
TIM3_IRQn是指定将要运行的中断处理程序号。“组2”是设置中断优先级分组的,这是因为寄存器提供了四位来设置优先级,组2代表的是前两位给抢占优先级,后两位给响应优先级。如图,还有其他的分组。

小结:其实从功能应用的角度来讲,定时器中断 = 延时+处理程序,因为定时器中断就是固定地每隔一段时间去执行一段程序,那你直接用延时不就OK了吗?

stm32入门——定时器中断和中断优先级简介相关推荐

  1. 初学STM32之定时器中断

    初学STM32之定时器中断 一.定时器概述 1.定时器的分类 STM32F10x系列总共最多有8个定时器分为高级定时器,通用定时器和基本定时器.三种定时器的主要区别如下图所示: 本文章仅介绍通用定时器 ...

  2. 利用STM32的定时器中断功能编写线阵CCD(ILX554B)的驱动时序

    利用STM32的定时器中断功能编写线阵CCD(ILX554B)的驱动时序 1.利用定时器完成线阵CCDILX554B的驱动时序,采用两个管脚1个用于产生ROG信号,一个用于产生CLK信号 2.使用一个 ...

  3. 【STM32】定时器中断实验代码详解

    文章目录 main.c timer.c timer.h STM32 的通用定时器是一个通过可编程预分频器(PSC)驱动的 16 位自动装载计数器(CNT)构成. STM32 的通用定时器可以被用于:测 ...

  4. STM32之定时器中断控制LED闪烁

    上篇博客我们是用延时函数实现了LED的闪烁,今天我们使用STM32的定时器来使LED闪烁. 关于32的定时器的种类,今天我在这先不做过多的说明,有时间我会再另写一篇博客来专门介绍32的定时器.今天我们 ...

  5. 【STM32】定时器中断原理及操作

    目录 时钟的选择及分频 定时器中断有关的寄存器 定时器中断有关的库函数 1.时钟使能函数:RCC_APB1PeriphClockCmd 2.定时器初始化函数:TIM_TimeBaseInit 3.定时 ...

  6. STM32:定时器中断与优先级

    文章目录 前言 一.基础知识 1.常见的定时器资源 2.定时器中断频率计算 二.CubeMx硬件配置 1.硬件配置步骤: 2.CubeMx硬件配置 3.定时器配置 三.proteus仿真电路搭建 四. ...

  7. stm32 TIM定时器中断

    一.TIM(Timer)定时器 定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断: 16位计数器.预分频器.自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时 ...

  8. STM32定时器中断显示时间

    前言 利用STM32的定时器中断,实现时间的显示.我们知道利用定时器中断只能进行tick的计算,然而用来显示时间我们应该怎么办呢?经过项目的实际运用,我发现利用定时器中断配合串口通讯也能实现时间显示. ...

  9. STM32入门笔记(02):定时器之定时器中断、输入捕获和PWM输出(SPL库函数版)

    目录 定时器 8个定时器 定时器功能 定时器中断 常用通用定时器的寄存器 定时器中断实验目的: 定时器库函数及步骤 实验程序讲解 PWM 简介 STM32 PWM工作过程 PWM模式1 与 PWM模式 ...

最新文章

  1. 【笔记】震惊!世上最接地气的字符串浅谈(HASH+KMP)
  2. 【错误记录】NDK 导入外部 so 动态库报错 ( java.lang.UnsatisfiedLinkError | Android Studio 配置外部 so 动态库两种方法 )
  3. session 对象的简单实例
  4. 求最小公倍数的最简模板
  5. VS2010插件编写学习总结
  6. 【NLP】用于序列标注问题的条件随机场(Conditional Random Field, CRF)
  7. CentOS bug修复指令集(阿里云漏洞修复方法)
  8. 实例43:python
  9. CAN总线很难吗?CAN总线看不懂是不可能的!
  10. Pycharm无法导入包的问题 Unresolved reference
  11. C++ 各种数据类型转换总结(不断更新中.....)
  12. byte 合并 java_java合并byte
  13. java验证码技术_java验证码前台技术
  14. KubeCon 2018 参会记录 —— FluentBit Deep Dive 1
  15. android开发微博前的包准备,新浪微博开发之前期准备篇
  16. SQL Server 内存中OLTP内部机制概述(二)
  17. 多功能jQuery日期控件基于jeDate
  18. 计算机博弈程序python_程序员大神们的经典编程语录
  19. Linux下破解UE
  20. 分频器+计数器+数码管显示VHDL

热门文章

  1. 正则表达式-包含数字和字母的组合
  2. 解决neural-renderer-pytorch编译安装问题
  3. KVM is required to run this AVD /dev/kvm permission denied Ubuntu Android Studio
  4. 风格迁移-风格损失函数(Gram矩阵)理解
  5. linux 底下traceroute报错(下载安装流程教学)
  6. 100-days: twenty-four
  7. c++--stack,queue,priority_queue
  8. 阿里云IoT启动“IoT合伙人”计划,投5亿赋能100万开发者
  9. 支持向量机(四)——非线性支持向量机
  10. python图片切割以及识别图片中的文字