STM32中断系统

Posted dxgg-bond

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32中断系统相关的知识,希望对你有一定的参考价值。

1.中断介绍:
    
1.1 中断概念 CPU执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU暂 时中断正在运行的程序,转去执行一段特殊的服务程序(中断服务子程序 或中断处理程     
           序),以处理该事件,该事件处理完后又返回被中断的程序 继续执行,这一过程称为中断。引发中断的称为中断源。比如:看电视 时突然门铃响,那么门铃响就相当于中
           断源。有些中断还能够被其他高 优先级的中断所中断,那么这种情况又叫做中断的嵌套。
           技术图片

 

 

         STM32F10x芯片有84个中断通道,包括 16 个内核中断和 68 个可屏蔽中 断,这些中断通道已按照不同优先级顺序固定分配给相应的外部设备。                                                      (参考《STM32F10x中文参考手册》-9 中断和事件章节)
          技术图片

 

 

1.2 NVIC介绍
       NVIC英文全称是Nested Vectored Interrupt Controller,中文意思 就是嵌套向量中断控制器,它属于M3内核的一个外设,控制着芯片的中 断相关功能。由于ARM给NVIC预
       留了非常多的功能,但对于使用M3内核设 计芯片的公司可能就不需要这么多功能,于是就需要在NVIC上裁剪。ST 公司的STM32F103芯片内部中断数量就是NVIC裁剪后
       的结果。 中断控制相关寄存器在固件库core_cm3.h文件NVIC结构体内。可打开 任意库函数工程即可查看到。
       

1.3 中断优先级
  STM32F103芯片支持60个可屏蔽中断通道,每个中断通道 都具备自己的中断优先级控制字节(8位,但是STM32F103中只使用4位 ,高4位有效),用于表达优先级的高4位
       又被为组成抢占式优先级和响应 优先级,通常也把响应优先级称为“亚优先级”或“副优先级”,每个 中断源都需要被指定这两种优先级。 高抢占式优先级的中断事件会打断当
  前的主程序或者中断程序运行, 俗称中断嵌套。在抢占式优先级相同的情况下,高响应优先级的中断优 先被响应。 当两个中断源的抢占式优先级相同时,这两个中断将没
  有嵌套关系, 当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要 等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则 中断控制器根
  据他们的响应优先级高低来决定先处理哪一个;如果他们 的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺 序决定先处理那一个。

        STM32F103中指定中断优先级的寄存器位有4位,这4位的分组方式 如下:
             技术图片

 

                    设置优先级分组可调用库函数 NVIC_PriorityGroupConfig(),在 misc.c可以查看  

2.中断配置步骤
要使用中断我们就需要先配置它,通常都需经过这几步:
(1)使能外设某个中断
(2)设置中断优先级分组,初始化 NVIC_InitTypeDef 结构体
         typedef struct {
                   uint8_t NVIC_IRQChannel; //中断源
                   uint8_t NVIC_IRQChannelPreemptionPriority; //抢占优先级
                   uint8_t NVIC_IRQChannelSubPriority; //响应优先级
      FunctionalState NVIC_IRQChannelCmd; //中断使能或失能
         } NVIC_InitTypeDef;
 (3)编写中断服务函数
          可以根据启动文件进行查看相应的中断服务函数的函数名。

 





   

以上是关于STM32中断系统的主要内容,如果未能解决你的问题,请参考以下文章

STM32F104ZET6 中断系统

对STM32中断的理解

STM32CubeMX之外部中断

STM32外部中断

stm32中断初识与实践(上)

STM32基于HAL库的中断详细学习