stm32學習(4)——外部中斷

中斷是單片機的靈魂

引入

週末的下午小明正在家裏安安靜靜的寫作業,突然小明的媽媽買菜回來了,但是媽媽忘記了帶鑰匙,就敲門示意小明開門,小明聽到媽媽敲門的信號,停止正在寫的作業做出開門的反應,讓媽媽進門,然後又繼續寫作業

停止正在處理的事情轉而處理另一件事,在處理完另一件事後又回來處理原來的事情,這在單片機中就是中斷的概念。

在各類單片機中都有這幾類中斷:

  1. 串口中斷
  2. 定時器中斷
  3. 外部中斷

今天就來了解一下stm32中的外部中斷:

外部中斷概述

一、STM32的每個IO都可以作爲外部中斷輸入

二、STM32的中斷控制器支持19個外部中斷/事件請求
線0~15:對應外部IO口的輸入中斷
線16:連接到PVD輸出
線17:連接到RTC鬧鐘事件
線18:連接到USB喚醒事件

三、每個外部中斷線可以獨立的配置觸發方式(上升沿,下降沿或者雙邊沿觸發)

從上面第二點可以看到,stm32支持19個外部中斷請求,但是有3個都是具有特殊功能的外部中斷,可供我們自由使用的也就是線0-15對應外部IO的輸入中斷。
在這裏插入圖片描述
外部中斷與IO口的映射
從圖中可以看出PA0,PB0,PC0…PG0都是對應的中斷線EXTI0,以此類推Px1(x表示A~G)對應的是EXTI1,這樣,16線的中斷線就映射到了我們的PA0-PA15…一直到PG0-PG15所有的IO口。

從上面的映射關係我們知道stm32總共有EXTI0-EXTI15,16條中斷線,那麼是否有16箇中斷服務函數呢?
參見下圖
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
查找手冊可以看到,stm32只爲外部中斷配置了7箇中斷服務函數,其中的EXTI5-EXTI9共用一箇中斷服務函數,EXTI10-EXTI15共用另一個。

EXTI0_IRQHandler           
EXTI1_IRQHandler
EXTI2_IRQHandler           
EXTI3_IRQHandler           
EXTI4_IRQHandler           
EXTI9_5_IRQHandler         
EXTI15_10_IRQHandler   

外部中斷配置步驟

  1. 初始化IO口爲輸入
  2. 開啓IO口複用時鐘
  3. 設置IO口與中斷線的映射關係
  4. 初始化線上中斷,設置觸發條件等
  5. 配置中斷分組(NVIC),並使能中斷
  6. 編寫中斷服務函數
  7. 清除中斷標誌位

就到這了,拜。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章