• STM32(十六)中断


    一、什么是中断?

    暂停原先的程序或事情,执行另外一些程序或事情,执行完成后返回原来的程序。

    二、为什么要中断

    因为另一些程序或事情比你原先正在做的事情要重要,或者这些突发事情你是无法控制它的来临的。

    三、中断的分类

    按不同方法进行分类

    •  内部中断,外部中断 (向量表中灰色为内部)。
    • 可设置中断,固化中断。
    • 中断向量表 (cl级别的芯片有10个内部 ,0~67个外部,一些没用到,其中通用化 中断编号0~17,个性化中断编号18~67)。
    • 优先级别 (由主优先级和从优先级组成,主从优先级可以通过4个位进行设置)。

    四、中断的组成

    • 具体中断的名称。
    • 中断的地址 用来保存一条跳转指令,跳到哪里去。

    五、中断的特点

    STM32的中断NVIC是嵌入CORTEX内核的。

    • 中断的反应的速度就很快。
    • 中断可以实现标准化(上面两点是ARM公司做的)
    • 所有外部IO端口都可以作为外部中断(上面一点是ST公司做的)
    • 有不同的优先级,只有主优先级相同的中断才可以嵌套。

    六、中断的配置流程

    1. 时钟配置
    2. GPIO配置
    3. 外设中断配置(EXTI中断也属于外设中断)
    4. NVIC总中断配置
    5. 中断程序编写

    七、中断几个概念区分

      NVIC,NVIC 外设中断,NVIC 外部接口中断 EXTI。简单来说 NVIC>NVIC外设中断>EXTI.

        抢占优先级:高优先级的中断打断低优先级的中断。

         响应优先级:正在执行的中断不能被;多个优先级同时到达时,优先执行响应优先级高的中断。

    八、中断服务函数的特点

    1)  中断服务函数没有参数没有返回值

    2)  中断服务函数名是固定的,在在CORE里面的start_stm32f40_41xxx.s这个汇编里面找

    3)  中断服务函数一定要清楚中断标志位

    4)  中断服务函数不需要调用不需要声明

    5)  中断服务函数尽可能不要出现延时或者死循环

    九、为什么中断服务函数没有返回值,也没有参数?

       中断服务函数发生在裸机上,不能带返回值和参数;因为在裸机中,在启动文件中事先申明中断入口,在程序运行中中断都是硬件自动调用,没有程序去给他传递参数,也不没有相应的硬件去接收参数。

     

    在汇编中用EXPORT导出函数名,并用该函数名作为汇编代码段的标识

    汇编ARM指令DCD:用于分配一片连续的字存储单元并用指定的数据初始化

    [weak] 的意思是该函数优先级比较弱,如果其它地方定义了一个同名函数,那么此处的这个函数就被取代了。

    参考博客:

    https://blog.csdn.net/weixin_34302798/article/details/85999046

    https://www.cnblogs.com/King-Gentleman/p/5252522.html

  • 相关阅读:
    wsl手动启动特定的子系统
    winserver安装wsl
    wsl子系统下载地址-补充centos7地址
    wsl (1)-含wsl子系统各启动命令
    win10系统版本说明
    zenith 以及海康 rtsp流
    shinobi (4)
    ffmpeg
    CF993A Two Squares 几何 第二道 暴力或判断条件(*)
    CF994B Knights of a Polygonal Table 第一道 贪心 set/multiset的用法
  • 原文地址:https://www.cnblogs.com/yuanqiangfei/p/14307476.html
Copyright © 2020-2023  润新知