• 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)编写中断服务函数
              可以根据启动文件进行查看相应的中断服务函数的函数名。





       

  • 相关阅读:
    Android之文件&XML
    Dialog组件
    Android模拟器使用SD卡(2)
    Android 蓝牙开发浅析
    创建和解析XML
    android 读取文件相关
    android 网络编程 HttpGet类和HttpPost类使用详解
    Android模拟器使用SD卡(1)
    Android中控件的OnKeyListener()事件
    [转]Android蓝牙开发浅谈
  • 原文地址:https://www.cnblogs.com/DXGG-Bond/p/11829438.html
Copyright © 2020-2023  润新知