一、基础知识

  1、cortex-m3支持256个中断,其中包含了16个内核中断,240个外部中断

  2、STM32只有84个中断,包括16个内核中断和68个可屏蔽中断

  3、STM32F103上只有60个可屏蔽中断(本文重点讲解F103)

  4、先占优先级和次占优先级

    先占优先级(抢占优先级):抢占优先级不同,会涉及到中断嵌套,抢占优先级高的会优先抢占优先级低的,优先得到执行。抢占优先级相同,不涉及到中断嵌套,响应优先级不同,响应优先级高的先响应。

    次占优先级(响应优先级/亚优先级/副优先级):只在同一先占优先级中的中断同时触发时起作用,先占优先级相同,则优先执行响应优先级高的中断,次占优先级不会造成中断嵌套,如果两个优先级都一样,则优先执行中断向量表中编号小的(中断编号越小,优先级越高)。

    中断优先级高低判断:优先级数字越小,优先级越高。

  5、挂起:当位置中断挂起寄存器的时候,相应的中断将会被挂起,这不是这个中断不执行,而是等待可执行的时候再执行;比如高低级别的中断同时产生,就挂起低级别的中断,等高级别的中断执行完毕,解除并执行低级中断。

二、NVIC(嵌套向量中断控制器)

  用于为中断分组,从而分配抢占优先级和响应优先级

              ***中断优先级参数表***

  

三、中断程序设计四步

  A、使能相应外设时钟,根据对应的中断使能位控制

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);     //相应的外设时钟使能

  B、配置中断优先级分组

  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //设置NVIC中断分组2(2位抢占优先级,2位响应优先级)

  C、初始化NVIC_InitTypeDef结构体,根据上方设置的中断优先级分组来配置抢占优先级和相应优先级,并使能相应的通道

   NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;           //TIM3中断
   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;        //先占优先级0级
   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;          //从优先级3级
   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;        //中断使能或取消使能
   NVIC_Init(&NVIC_InitStructure);                   //初始化NVIC寄存器

  D、编写中断服务函数,在startup_stm32f10x_hd.s文件中,都有一个根据中断向量表设置的空的中断服务函数,需要我们重新编写,我们拷贝过来根据自己想要实现的内容编写。

最新文章

  1. H5坦克大战之【画出坦克】
  2. [译]初识.NET Core & ASP.NET Core
  3. hashicorp/consul
  4. EXT.net DateField format设置
  5. openfire+strophe
  6. RHEL7挂载ISO做本地yum
  7. csrf利用EXP
  8. sessionFactory
  9. 自适应游标共享技术01(Adaptive Cursor Sharing)
  10. linux内核编程笔记【原创】
  11. win7 提升windows服务权限使非管理员用户可以控制windows服务的开启和关闭
  12. 怎么看时序图--nand flash的读操作详解(转载)
  13. SQL 2008执行语句遇到内存不足(1)——error 701
  14. STM32F0使用LL库实现SHT70通讯
  15. ionic3 导航的应用(页面跳转与参数传递)
  16. python练习题-day25
  17. python中的进程和线程
  18. C#数组冒泡
  19. 如何防止ElasticSearch集群出现脑裂现象
  20. P1020 导弹拦截 dp 树状数组维护最长升序列

热门文章

  1. Linux下Python3源码安装
  2. 5-网页,网站,微信公众号基础入门(配置网站--PHP配置上数据库)
  3. HashSet Integer输出有序,String输出无序
  4. UDF——计算壁面边界合力矩(旋转机械)
  5. maven 无法引入包 报错 处理方式
  6. ChIP-seq | ATAC-seq | 数据分析流程
  7. Keras split train test set when using ImageDataGenerator
  8. http 请求方式解析
  9. django orm 分页(paginator)取数据出现警告manage.py:1: UnorderedObjectListWarning: Pagination may yield inconsistent results with an unordered object_list: <class 'sign.models.Guest'> QuerySet.
  10. 安装opencv时ippicv下载超时