STM32基础4--中断系统

发布者:快乐兔子最新更新时间:2022-07-25 来源: csdn关键字:STM32  中断系统  Main函数 手机看文章 扫描二维码
随时随地手机看文章

为什么需要中断

在使用单片机时,最开始我们会使用一个Main函数,然后所有的功能都往里丢。在任务少的时候,并没有什么问题。例如在main函数添加点亮LED,添加延时函数,添加KEY扫描。


一切都好像完美运行,但是如果我们将延时的时间加长,然后去KEY,这时候我们可以发现,我们按的KEY时好是坏。这时候我们就会很痛苦了,我们需要长时间的延时,但是又想我们的KEY功能正常,我们不得不想办法解决这个问题,如果每次按下KEY时,我们都让单片机先去响应KEY的功能,我们就不会有按键时好时坏的感觉了,响应完KEY的功能后,我们在回来执行延时。


为了清除的描述上面的情况,我们取了新的词语描述整一个过程


KEY按下  --中断源请求


单片机停止延时函数,跳转到KEY功能 --中断响应


执行KEY功能  ----中断服务


返回继续执行延时  --- 中断返回


我们也清楚的知道,中断作用是为了打断主程序正常执行,去执行紧急任务,执行完后返回继续执行主程序

 

既然需要实现中断,在CPU中肯定需要相对应硬件支持中断,我们称这个为中断系统。中断系统对中断进行管理。


中断系统的功能

1)实现中断响应与中断返回


根据中断请求优先级是否马上进行中断响应;


执行中断响应时,需要将当前运行的状态(程序指针PC、寄存器、标志位)压入堆栈保存,保护现场,然后进入中断服务程序;


中断服务程序执行完后,恢复原来的运行状态,恢复现场。


2)中断优先权


一般系统有多个中断源(可以请求中断的事件),它们进行中断请求时,需要区分优先级进行响应。


3)中断嵌套


中断可以实现嵌套,当CPU正在响应某个中断,这个时候有更高优先级的中断请求,高优先级的中断可以打断低优先级的中断,先高优先级中断,然后返回执行低优先级中断。


中断控制器与中断向量表

STM32F407使用中断管理器(NVIC)管理所有的中断,管理的中断排序被成为中断向量表。我们可以在"startup_stm32f407xx.s"中找到,实际每一中断向量均为一个中断服务函数地址。当中断发生时,根据中断向量跳转到对应的中断服务函数。

; Vector Table Mapped to Address 0 at Reset

                AREA    RESET, DATA, READONLY

                EXPORT  __Vectors

                EXPORT  __Vectors_End

                EXPORT  __Vectors_Size

 

__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 detection                        

                DCD     TAMP_STAMP_IRQHandler             ; Tamper and TimeStamps through the EXTI line            

                DCD     RTC_WKUP_IRQHandler               ; RTC Wakeup through the EXTI line                       

                DCD     FLASH_IRQHandler                  ; FLASH                                           

                DCD     RCC_IRQHandler                    ; RCC                                             

                DCD     EXTI0_IRQHandler                  ; EXTI Line0                                             

                DCD     EXTI1_IRQHandler                  ; EXTI Line1                                             

                DCD     EXTI2_IRQHandler                  ; EXTI Line2                                             

                DCD     EXTI3_IRQHandler                  ; EXTI Line3                                             

                DCD     EXTI4_IRQHandler                  ; EXTI Line4                                             

                DCD     DMA1_Stream0_IRQHandler           ; DMA1 Stream 0                                   

                DCD     DMA1_Stream1_IRQHandler           ; DMA1 Stream 1                                   

                DCD     DMA1_Stream2_IRQHandler           ; DMA1 Stream 2                                   

                DCD     DMA1_Stream3_IRQHandler           ; DMA1 Stream 3                                   

                DCD     DMA1_Stream4_IRQHandler           ; DMA1 Stream 4                                   

                DCD     DMA1_Stream5_IRQHandler           ; DMA1 Stream 5                                   

                DCD     DMA1_Stream6_IRQHandler           ; DMA1 Stream 6                                   

                DCD     ADC_IRQHandler                    ; ADC1, ADC2 and ADC3s                            

                DCD     CAN1_TX_IRQHandler                ; CAN1 TX                                                

                DCD     CAN1_RX0_IRQHandler               ; CAN1 RX0                                               

[1] [2] [3]
关键字:STM32  中断系统  Main函数 引用地址:STM32基础4--中断系统

上一篇:STM32基础5--外部中断
下一篇:STM32基础3--GPIO控制(LED&KEY)

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
    502 Bad Gateway

    502 Bad Gateway


    openresty

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved