zoukankan      html  css  js  c++  java
  • 嵌入式02 STM32 实验11 NVIC和中断总结

    一、基础知识

      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文件中,都有一个根据中断向量表设置的空的中断服务函数,需要我们重新编写,我们拷贝过来根据自己想要实现的内容编写。

  • 相关阅读:
    TP3.2框架,实现空模块、空控制器、空操作的页面404替换||同步实现apache报错404页面替换
    调用支付宝PHP接口API实现在线即时支付功能(UTF-8编码)
    JQuery实现的 checkbox 全选;<select>下拉框功能
    使用PHP做移动端 api接口开发方法(适用于TP框架)
    Eclipse jvm启动参数在哪设置
    对 META标签 的一点点了解
    Java反射在整个程序运行中的位置
    Java 为什么要使用反射(通俗易懂的举例)
    粗略介绍Java AQS的实现原理
    Java并发包中线程池的种类和特点介绍
  • 原文地址:https://www.cnblogs.com/ksht-wdyx/p/11668143.html
Copyright © 2011-2022 走看看