stm32 中断架构

1. 初步了解

  • stm32F4有两种CPU模式:特权模式和用户模式。当发生异常或中断时会进入到特权模式中
  • stm32F4有两个系统栈,一个是MSP,一个是PSP。CPU在用户模式中使用PSP作为栈,当发生异常时,会从异常向量表的起始位置读取4byte (MSP),作为特权模式的栈
  • stm32F4的中断架构分为:不可屏蔽异常和可屏蔽异常(将中断看作是一种特殊的异常),不可屏蔽异常是stm32F4的cpu core(cortex M4)决定,该core是ARM-V7M架构,在该架构中定义了NVIC(可嵌套的中断向量控制器),通过该控制器来分配其他的中断。
  • 关于NVIC:有91个可屏蔽的中断通道,16级可编程优先级
  • EXTI:外部中断控制器,可以trigger电平和边沿

2. 问题:

  • 异常发生时,NVIC是否有一些状态寄存器?NVIC具体是什么样的?
    • 在cortexM4中介绍:能够降低中断延时,电源管理控制
    • 寄存器:
      在这里插入图片描述
    • 查看Active Bit register:在ARMV7 B3.4.1中可以看到,当中断发生时该寄存器对应位置会active
    • NVIC作为ARMV7-M架构的一部分,主要用来管理中断(屏蔽,使能,状态,优先级等)
    • ICTR寄存器主要可以看到CPU一共包含多少中断(cortex M4 Table 6-2可以看到)

3. 如何使用

  • 中断优先级的机制是什么样的?
    • 分成两组:抢占优先级和响应优先级。抢占优先级有抢占的特权,共四组。响应优先级只能决定中断优先级,不能抢占。
    • 默认全部是枪战优先级0,即不具备抢占优先级能力。只具备响应优先级。那么默认的响应优先级如何确认?即中断向量表是怎么确认的?由硬件通道链接确认的吗?
  • 中断嵌套如何处理?相关机制是什么样的?[留待后面进行补充]

猜你喜欢

转载自blog.csdn.net/qq_30539199/article/details/84980815