STM32基础知识:中断系统

2024-02-23  

中断系统

1 数据传输方式

  • 无条件传输 :处理器不必了解外部设备状态,直接进行数据传输,用于指示灯和按键等简单设备.。

  • 查询方式 :传输前,一方先查询另一方的状态,若已经准备好就传输,否则就继续查询。

  • 中断方式 :一方通过申请中断的方式与另一方进行数据传输,收发双方可以并行工作。

  • 直接存储器访问 :处理器内部建立片内外设和内存之间的数据传输通道,传输过程不需要处理器参与。

2 中断系统的基本概念

2.1 中断全过程

  • 中断发生: 当CPU在处理某一事件A时,发生了另一事件B,请求CPU迅速去处理。

  • 中断处理: CPU暂停当前的工作,转去处理事件B。

  • 中断返回: 当CPU将事件B处理完毕后,再回到事件A中被暂停的地方继续处理事件A。

图片

2.2 中断的作用

  • 速度匹配: 可以解决快速的CPU与慢速的外部设备之间传送数据的矛盾。

  • 分时操作: CPU可以分时为多个外部设备服务,提高计算机的利用率。

  • 实时响应: CPU能够及时处理应用系统的随机事件,增强系统的实时性。

  • 可靠性高: CPU可以处理设备故障及掉电等突发事件,提高系统可靠性。

2.3 中断优先级

处理器根据不同中断的重要程序设置不同的优先等级。


不同优先级中断的处理原则是: 高级中断可以打断低级中断;低级中断不能打断高级中断 。

图片

2.4 中断向量

  • 中断服务程序: 在响应一个特定中断的时候,处理器会执行一个函数,该函数一般称为中断处理程序或者中断服务程序。

  • 中断向量: 中断服务程序在内存中的入口地址称为中断向量。

  • 中断向量表: 把系统中所有的中断向量集中起来放到存储器的某一区。

  • 查找中断向量:

    • 编号:计算机系统对每一个中断源进行编号,这个号码称为中断类型号。

    • 查表:根据中断类型号,到中断向量表中找到对应的表项。

    • 执行:取出表项内容,即该中断源对应的中断服务程序地址,进入该程序执行相应操作。

2.5 中断响应过程

  1. 中断源发出中断请求。

  2. 判断处理器是否允许中断,以及该中断源是否被屏蔽。

  3. 中断优先级排队。

  4. 处理器暂停当前程序,保护断点地址和处理器的当前状态,根据中断类型号,查找中断向量表,转到对应的中断服务程序。

  5. 执行中断服务程序。

  6. 恢复被保护的状态,执行中断返回指令,回到被中断的程序。

3 STM32微控制器中断系统

3.1 基本概念

  • 中断: 中断是由内核外部产生的,一般由硬件引起,比如外设中断和外部中断等。

  • 异常: 异常通常是内核自身产生的,大多是软件引起的,比如除法出错异常、预取值失败等。

3.2 NVIC嵌套向量中断控制器

NVIC属于Cortex-M内核的组件,管理所有的中断和异常,为中断源分配中断通道

图片

图片

中断向量表


__Vectors       DCD     __initial_sp               ; Top of Stack

                DCD     Reset_Handler              ; Reset Handler

                DCD     NMI_Handler                ; NMI Handler

                DCD     HardFault_Handler          ; Hard Fault Handler

                DCD     MemManage_Handler          ; MPU Fault Handler

                DCD     BusFault_Handler           ; Bus Fault Handler

                DCD     UsageFault_Handler         ; Usage Fault Handler

                DCD     0                          ; Reserved

                DCD     0                          ; Reserved

                DCD     0                          ; Reserved

                DCD     0                          ; Reserved

                DCD     SVC_Handler                ; SVCall Handler

                DCD     DebugMon_Handler           ; Debug Monitor Handler

                DCD     0                          ; Reserved

                DCD     PendSV_Handler             ; PendSV Handler

                DCD     SysTick_Handler            ; SysTick Handler


                ; External Interrupts

                DCD     WWDG_IRQHandler            ; Window Watchdog

                DCD     PVD_IRQHandler             ; PVD through EXTI Line detect

                DCD     TAMPER_IRQHandler          ; Tamper

                DCD     RTC_IRQHandler             ; RTC

                DCD     FLASH_IRQHandler           ; Flash

                DCD     RCC_IRQHandler             ; RCC

                DCD     EXTI0_IRQHandler           ; EXTI Line 0

                DCD     EXTI1_IRQHandler           ; EXTI Line 1

                DCD     EXTI2_IRQHandler           ; EXTI Line 2

                DCD     EXTI3_IRQHandler           ; EXTI Line 3

                DCD     EXTI4_IRQHandler           ; EXTI Line 4

                DCD     DMA1_Channel1_IRQHandler   ; DMA1 Channel 1

                DCD     DMA1_Channel2_IRQHandler   ; DMA1 Channel 2

                DCD     DMA1_Channel3_IRQHandler   ; DMA1 Channel 3

                DCD     DMA1_Channel4_IRQHandler   ; DMA1 Channel 4

                DCD     DMA1_Channel5_IRQHandler   ; DMA1 Channel 5

                DCD     DMA1_Channel6_IRQHandler   ; DMA1 Channel 6

                DCD     DMA1_Channel7_IRQHandler   ; DMA1 Channel 7

                DCD     ADC1_2_IRQHandler          ; ADC1_2

                DCD     USB_HP_CAN1_TX_IRQHandler  ; USB High Priority or CAN1 TX

                DCD     USB_LP_CAN1_RX0_IRQHandler ; USB Low  Priority or CAN1 RX0

                DCD     CAN1_RX1_IRQHandler        ; CAN1 RX1

                DCD     CAN1_SCE_IRQHandler        ; CAN1 SCE

                DCD     EXTI9_5_IRQHandler         ; EXTI Line 9..5

                DCD     TIM1_BRK_IRQHandler        ; TIM1 Break

                DCD     TIM1_UP_IRQHandler         ; TIM1 Update

                DCD     TIM1_TRG_COM_IRQHandler    ; TIM1 Trigger and Commutation

                DCD     TIM1_CC_IRQHandler         ; TIM1 Capture Compare

                DCD     TIM2_IRQHandler            ; TIM2

                DCD     TIM3_IRQHandler            ; TIM3

                DCD     TIM4_IRQHandler            ; TIM4

                DCD     I2C1_EV_IRQHandler         ; I2C1 Event

                DCD     I2C1_ER_IRQHandler         ; I2C1 Error

                DCD     I2C2_EV_IRQHandler         ; I2C2 Event

                DCD     I2C2_ER_IRQHandler         ; I2C2 Error

                DCD     SPI1_IRQHandler            ; SPI1

                DCD     SPI2_IRQHandler            ; SPI2

                DCD     USART1_IRQHandler          ; USART1

                DCD     USART2_IRQHandler          ; USART2

                DCD     USART3_IRQHandler          ; USART3

                DCD     EXTI15_10_IRQHandler       ; EXTI Line 15..10

                DCD     RTC_Alarm_IRQHandler        ; RTC Alarm through EXTI Line

                DCD     USBWakeUp_IRQHandler       ; USB Wakeup from suspend

__Vectors_End

3.3 中断通道

微控制器片内集成了很多外设,对于单个外设而言,它通常具备若干个可以引起中断的中断源,而该外设的所有中断源只能通过指定的中断通道向内核申请中断。

文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。