第五章 通用和復(fù)用功能IO口_第1頁
第五章 通用和復(fù)用功能IO口_第2頁
第五章 通用和復(fù)用功能IO口_第3頁
第五章 通用和復(fù)用功能IO口_第4頁
第五章 通用和復(fù)用功能IO口_第5頁
已閱讀5頁,還剩85頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第五章第五章 通用和復(fù)用功能通用和復(fù)用功能I/OI/O5 5.1.1 GPIO的工作原理的工作原理 一、引腳介紹一、引腳介紹 二、二、STM32 GPIO主要功能主要功能 三、三、IO口的基本結(jié)構(gòu)口的基本結(jié)構(gòu)5 5.2.2 編程舉例編程舉例5.3 5.3 GPIO復(fù)用功能復(fù)用功能 一、引腳介紹一、引腳介紹 STM32單片機單片機 最多有最多有7個個16位位的并行的并行 I/OI/O端口端口:PA、PB、PC、PD、PE、PF、PG。 STM32F103單片機單片機 只有只有5個個16位位的并行的并行 I/OI/O端口端口:PA、PB、PC、PD、PE。(實驗板型號:實驗板型號:TM32F103

2、VET6)通用通用IO口,又稱為口,又稱為GPIO(General-Purpose IO ports )CPU的一個接口模塊,為一些協(xié)議比較簡的一個接口模塊,為一些協(xié)議比較簡單的外部設(shè)備單的外部設(shè)備/電路提供了一種控制手段電路提供了一種控制手段。 5 5.1.1 GPIO的工作原理的工作原理 每個每個GPIO管腳都可以由軟件配置成輸出管腳都可以由軟件配置成輸出(推拉或開推拉或開路路)、輸入、輸入(帶或不帶上拉或下拉帶或不帶上拉或下拉)或其它的外設(shè)功能或其它的外設(shè)功能口???。 多數(shù)多數(shù)GPIO管腳都與數(shù)字或模擬的外設(shè)共用。所有管腳都與數(shù)字或模擬的外設(shè)共用。所有的的GPIO管腳都有管腳都有大電流大

3、電流通過能力。通過能力。 在需要的情況下,在需要的情況下,I/O管腳的外設(shè)功能可以通過一管腳的外設(shè)功能可以通過一個特定的操作鎖定,以避免意外的寫入個特定的操作鎖定,以避免意外的寫入I/O寄存器寄存器。 在在APB2上的上的I/O腳提供高達(dá)腳提供高達(dá)18MHz的翻轉(zhuǎn)速度。的翻轉(zhuǎn)速度。 一、引腳介紹一、引腳介紹PA口 16腳PB口16腳PC口16腳STM32F103包含包含5 5個端口:個端口: PA口口 、PB口、口、PC口、口、 PD口口、 PE口。口。一、引腳介紹:一、引腳介紹:以以STM32F103x為例為例PD口16腳PE口16腳 5 5.1.1 GPIO的工作原理的工作原理一、引腳介紹

4、:一、引腳介紹:以以STM32F103VET6為例為例 5 5.1.1 GPIO的工作原理的工作原理補充舉例說明,分析流水燈例程補充舉例說明,分析流水燈例程了解庫開發(fā)流了解庫開發(fā)流程程1 1)選擇)選擇GPIOGPIO端口端口2 2)選擇)選擇GPIOGPIO端口功能端口功能3 3)設(shè)置)設(shè)置GPIOGPIO輸出高低電輸出高低電平控制平控制LEDLED燈的亮滅燈的亮滅舉例說明,分析流水燈例程舉例說明,分析流水燈例程了解庫開發(fā)流程了解庫開發(fā)流程要實現(xiàn)功能選定與LED硬件相連的引腳選定GPIO的特定功能控制LED亮滅相應(yīng)狀態(tài)PD6PD3輸出功能設(shè)置GPIO引腳電平的高低對應(yīng)的寄存器配置引腳在D上,

5、選擇x=d配置寄存器GPIOx-CRL設(shè)置數(shù)據(jù)寄存器寄存器操作int main(void)GPIOB-CRL=0 x3ODR=0 x0;Delay(0 xAFFFF);GPIOB-ODR=0 x20;Delay(0 xAFFFF);舉例說明,分析流水燈例程舉例說明,分析流水燈例程了解庫開發(fā)流程了解庫開發(fā)流程1 1地址映射地址映射 stm32f10 x.hstm32f10 x.h#define GPIOD_BASE (APB2PERIPH_BASE + 0 x1400) #define APB2PERIPH_BASE (PERIPH_BASE + 0 x10000)#define PERIPH_

6、BASE (uint32_t)0 x40000000)#define GPIOA_BASE (APB2PERIPH_BASE + 0 x0800)#define GPIOB_BASE (APB2PERIPH_BASE + 0 x0C00)#define GPIOC_BASE (APB2PERIPH_BASE + 0 x1000)#define GPIOD_BASE (APB2PERIPH_BASE + 0 x1400)#define PERIPH_BASE (uint32_t)0 x40000000)舉例說明,分析流水燈例程舉例說明,分析流水燈例程了解庫開發(fā)流程了解庫開發(fā)流程1 1地址映射地址

7、映射STM32STM32固件庫對寄存器的封裝固件庫對寄存器的封裝#define GPIOA (GPIO_TypeDef *) GPIOA_BASE)#define GPIOB (GPIO_TypeDef *) GPIOB_BASE)#define GPIOC (GPIO_TypeDef *) GPIOC_BASE)#define GPIOD (GPIO_TypeDef *) GPIOD_BASE)#define GPIOE (GPIO_TypeDef *) GPIOE_BASE)typedef struct _IO uint32_t CRL;-0 x00 _IO uint32_t CRH;-0

8、 x04 _IO uint32_t IDR;-0 x08 _IO uint32_t ODR; _IO uint32_t BSRR; _IO uint32_t BRR; _IO uint32_t LCKR; GPIO_TypeDef;舉例說明,分析流水燈例程舉例說明,分析流水燈例程了解庫開發(fā)流程了解庫開發(fā)流程2 2、STM32STM32時鐘設(shè)置時鐘設(shè)置在在startup_stm32f10 x_hd.sstartup_stm32f10 x_hd.s中運行中運行systemInit(),systemInit(),這個函數(shù)定義在這個函數(shù)定義在system_stm32f10 x.c,system_stm

9、32f10 x.c,他的作用是設(shè)他的作用是設(shè)置系統(tǒng)時鐘,置系統(tǒng)時鐘,之后調(diào)用之后調(diào)用SetSysClock( )SetSysClock( )設(shè)置具體的系統(tǒng)時鐘設(shè)置具體的系統(tǒng)時鐘舉例說明,分析流水燈例程舉例說明,分析流水燈例程了解庫開發(fā)流程了解庫開發(fā)流程3 3、編寫用戶文件、編寫用戶文件配置配置gpiogpio口的相關(guān)操作:初始化結(jié)構(gòu)體口的相關(guān)操作:初始化結(jié)構(gòu)體庫函數(shù)庫函數(shù)GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitTypeDef GPIO_InitStructure;typedef struct typedef struct 庫文件利用關(guān)鍵字庫文件

10、利用關(guān)鍵字typedeftypedef定義的新類型定義的新類型 uint16_t GPIO_Pin;uint16_t GPIO_Pin;GPIOSpeed_TypeDef GPIO_Speed;GPIOSpeed_TypeDef GPIO_Speed;GPIOMode_TypeDef GPIO_Mode;GPIOMode_TypeDef GPIO_Mode;GPIO_InitTypeDef;GPIO_InitTypeDef;舉例說明,分析流水燈例程舉例說明,分析流水燈例程了解庫開發(fā)流程了解庫開發(fā)流程3 3、編寫用戶文件、編寫用戶文件(1 1)初始化庫函數(shù))初始化庫函數(shù)GPIO_InitGPIO

11、_Init 在這個函數(shù)內(nèi)部,把輸入的這些參數(shù)按照一定在這個函數(shù)內(nèi)部,把輸入的這些參數(shù)按照一定的規(guī)則轉(zhuǎn)化,進(jìn)而寫入寄存器,實現(xiàn)了配置的規(guī)則轉(zhuǎn)化,進(jìn)而寫入寄存器,實現(xiàn)了配置GPIOGPIO端口端口的功能的功能舉例說明,分析流水燈例程舉例說明,分析流水燈例程了解庫開發(fā)流程了解庫開發(fā)流程3 3、編寫用戶文件、編寫用戶文件(2 2)控制)控制I/OI/O口高低電平口高低電平GPIO_SetBits GPIO_SetBits 置置1 1,ledled亮亮GPIO_ResetBitsGPIO_ResetBits舉例說明,分析流水燈例程舉例說明,分析流水燈例程了解庫開發(fā)流程了解庫開發(fā)流程3 3、編寫用戶文件、

12、編寫用戶文件(3 3)led.hled.h頭文件頭文件(4 4)mainmain文件分析文件分析舉例說明,分析流水燈例程舉例說明,分析流水燈例程了解庫開發(fā)流程了解庫開發(fā)流程4 4、總結(jié)、總結(jié)1 1)為了控制)為了控制ledled,要使用,要使用GPIOGPIO外設(shè)外設(shè)2 2)了解)了解GPIOGPIO外設(shè)的功能,如何使用外設(shè)的功能,如何使用3 3)知道)知道GPIOGPIO的地址映射,掛載在的地址映射,掛載在APB2APB24)4)了解了解STST官方庫對寄存器的封裝官方庫對寄存器的封裝5 5)了解時鐘樹,查看)了解時鐘樹,查看GPIOCGPIOC時鐘來源,時鐘來源,PCLK2PCLK26)6

13、)在在stm32f10 x_conf.hstm32f10 x_conf.h文件中用到的頭文件文件中用到的頭文件stm32f10 x_gpio.hstm32f10 x_gpio.h和和stm32f10 x_rcc.hstm32f10 x_rcc.h7 7)添加用戶文件)添加用戶文件led.cled.c文件文件8 8)編寫驅(qū)動初始化函數(shù))編寫驅(qū)動初始化函數(shù)LED_GPIO_Config(void)LED_GPIO_Config(void)舉例說明,分析流水燈例程舉例說明,分析流水燈例程了解庫開發(fā)流程了解庫開發(fā)流程4 4、總結(jié)、總結(jié)9 9)開外設(shè)時鐘)開外設(shè)時鐘1010)根據(jù)要求填寫)根據(jù)要求填寫G

14、PIO_InitStructureGPIO_InitStructure1111)調(diào)用初始化函數(shù))調(diào)用初始化函數(shù)GPIO_InitGPIO_Init1212)編寫相應(yīng)的)編寫相應(yīng)的led.hled.h文件文件1313)編寫主函數(shù))編寫主函數(shù)mainmain1414)調(diào)試)調(diào)試 5 5.1.1 GPIO的工作原理的工作原理二、二、IO口的基本結(jié)構(gòu)口的基本結(jié)構(gòu)1、IO口的基本結(jié)構(gòu)圖口的基本結(jié)構(gòu)圖廣每個每個I/O 可以自由編程,單可以自由編程,單I/O 口寄存器必須按口寄存器必須按32 位字被訪問。位字被訪問。STM32 的很多的很多I/O 口都是口都是5V 兼容的,兼容的,具體哪些具體哪些I/O 口

15、是口是5V 兼容的可以從芯片手冊引腳兼容的可以從芯片手冊引腳描述章節(jié)查到,描述章節(jié)查到,I/O Level 標(biāo)標(biāo)FT 的就是的就是5V 電平兼電平兼容的。容的。保護二極管:避免過高或過低的電壓從外部進(jìn)來時保護二極管:避免過高或過低的電壓從外部進(jìn)來時對電路內(nèi)部的損害;鉗制對電路內(nèi)部的損害;鉗制I/O的電壓在的電壓在-0.7V4.0V之間之間二、二、IO口的基本結(jié)構(gòu)口的基本結(jié)構(gòu) 5 5.1.1 GPIO的工作原理的工作原理 -輸入浮空 -輸入下拉 -輸入上拉 -模擬輸入 -開漏輸出 -推挽式輸出 -推挽式復(fù)用功能 -開漏復(fù)用功能 5 5.1.1 GPIO的工作原理的工作原理二、二、IO口的基本結(jié)構(gòu)

16、口的基本結(jié)構(gòu)2、 GPIO的的8種設(shè)置模式種設(shè)置模式 5 5.1.1 GPIO的工作原理的工作原理二、二、IO口的基本結(jié)構(gòu)口的基本結(jié)構(gòu)2、 GPIO的的8種設(shè)置模式種設(shè)置模式 浮空輸入浮空輸入 圖中施密特觸發(fā)器是開啟的,IO口的狀態(tài)可以直接送到輸入寄存器中,CPU可以直接讀取輸入寄存器 5 5.1.1 GPIO的工作原理的工作原理二、二、IO口的基本結(jié)構(gòu)口的基本結(jié)構(gòu)2、 GPIO的的8種設(shè)置模式種設(shè)置模式 浮空輸入浮空輸入 在上圖上,藍(lán)色以外的部分處于不工作狀態(tài),尤其是在上圖上,藍(lán)色以外的部分處于不工作狀態(tài),尤其是下半部分的輸出電路,實際上是與端口處于隔離狀態(tài)。下半部分的輸出電路,實際上是與端

17、口處于隔離狀態(tài)。 藍(lán)色的高亮部分顯示了數(shù)據(jù)傳輸通道,外部的電平信藍(lán)色的高亮部分顯示了數(shù)據(jù)傳輸通道,外部的電平信號通過左邊編號號通過左邊編號1的的I/O端口進(jìn)入端口進(jìn)入STM32,經(jīng)過編號,經(jīng)過編號2的的施密特觸發(fā)器的整形,送入編號施密特觸發(fā)器的整形,送入編號3的的“輸入數(shù)據(jù)寄存器輸入數(shù)據(jù)寄存器”,在在“輸入數(shù)據(jù)寄存器輸入數(shù)據(jù)寄存器”的另一端(編號的另一端(編號4),),CPU可以可以隨時讀出隨時讀出I/O端口的電平狀態(tài)。端口的電平狀態(tài)。 5 5.1.1 GPIO的工作原理的工作原理二、二、IO口的基本結(jié)構(gòu)口的基本結(jié)構(gòu) 2、 GPIO的的8種設(shè)置模式種設(shè)置模式 上拉輸入上拉輸入 5 5.1.1

18、GPIO的工作原理的工作原理二、二、IO口的基本結(jié)構(gòu)口的基本結(jié)構(gòu) 2、 GPIO的的8種設(shè)置模式種設(shè)置模式 上拉輸入上拉輸入 上圖是上圖是STM32的的GPIO帶上拉輸入模式的配置。與前帶上拉輸入模式的配置。與前面的浮空輸入模式相比,僅僅是數(shù)據(jù)通道上部,接入了面的浮空輸入模式相比,僅僅是數(shù)據(jù)通道上部,接入了一個上拉電阻,根據(jù)一個上拉電阻,根據(jù)STM32的數(shù)據(jù)手冊,這個上拉電的數(shù)據(jù)手冊,這個上拉電阻阻值介于阻阻值介于30K50K歐姆。歐姆。 同樣,同樣,CPU可以隨時在可以隨時在“輸入數(shù)據(jù)寄存器輸入數(shù)據(jù)寄存器”的的4端,端,讀出讀出I/O端口的電平狀態(tài)端口的電平狀態(tài) 5 5.1.1 GPIO的工

19、作原理的工作原理二、二、IO口的基本結(jié)構(gòu)口的基本結(jié)構(gòu)2、 GPIO的的8種設(shè)置模式種設(shè)置模式 下拉輸入下拉輸入 5 5.1.1 GPIO的工作原理的工作原理二、二、IO口的基本結(jié)構(gòu)口的基本結(jié)構(gòu)2、 GPIO的的8種設(shè)置模式種設(shè)置模式配置輸入模式的總結(jié):(對應(yīng)課本配置輸入模式的總結(jié):(對應(yīng)課本5.1.7)(1)輸出緩沖器)輸出緩沖器被禁止被禁止(2)施密特觸發(fā)輸入被激活)施密特觸發(fā)輸入被激活(3)根據(jù)輸入配置(上拉、下拉或浮動)的不同,弱上拉和)根據(jù)輸入配置(上拉、下拉或浮動)的不同,弱上拉和下拉電阻被連接。下拉電阻被連接。(4)出現(xiàn)在)出現(xiàn)在I/O口上的數(shù)據(jù)在每個口上的數(shù)據(jù)在每個APB2時鐘被

20、采樣到時鐘被采樣到輸入數(shù)據(jù)寄存器輸入數(shù)據(jù)寄存器(5)對輸入寄存器的讀訪問可得到)對輸入寄存器的讀訪問可得到I/O狀態(tài)狀態(tài) 5 5.1.1 GPIO的工作原理的工作原理二、二、IO口的基本結(jié)構(gòu)口的基本結(jié)構(gòu)2、 GPIO的的8種設(shè)置模式種設(shè)置模式 模擬輸入模式模擬輸入模式施密特觸發(fā)器是關(guān)閉的,信號直接到ADC輸入 5 5.1.1 GPIO的工作原理的工作原理二、二、IO口的基本結(jié)構(gòu)口的基本結(jié)構(gòu)2、 GPIO的的8種設(shè)置模式種設(shè)置模式 模擬輸入模式模擬輸入模式 STM32的模擬輸入通道的配置則更加簡單,信號從左的模擬輸入通道的配置則更加簡單,信號從左邊編號邊編號1的端口進(jìn)入,從右邊編號的端口進(jìn)入,從

21、右邊編號2的一端直接進(jìn)入的一端直接進(jìn)入ADC模塊。模塊。 上拉、下拉電阻和施密特觸發(fā)器,上拉、下拉電阻和施密特觸發(fā)器,均處于斷開狀態(tài)均處于斷開狀態(tài),因此因此“輸入數(shù)據(jù)寄存器輸入數(shù)據(jù)寄存器”將不能反映端口上的電平狀態(tài),將不能反映端口上的電平狀態(tài),也就是說,模擬輸入配置下,也就是說,模擬輸入配置下,CPU不能在不能在“輸入數(shù)據(jù)寄輸入數(shù)據(jù)寄存器存器”上讀到有效的數(shù)據(jù)。上讀到有效的數(shù)據(jù)。輸出緩沖器被禁止(對應(yīng)輸出緩沖器被禁止(對應(yīng)5.1.9) 5 5.1.1 GPIO的工作原理的工作原理二、二、IO口的基本結(jié)構(gòu)口的基本結(jié)構(gòu)2、 GPIO的的8種設(shè)置模式種設(shè)置模式 模擬輸入模式模擬輸入模式當(dāng)I/O端口被

22、配置為模擬輸入配置時:端口被配置為模擬輸入配置時:輸出緩沖器被禁止;輸出緩沖器被禁止;禁止施密特觸發(fā)輸入,實現(xiàn)了每個模擬禁止施密特觸發(fā)輸入,實現(xiàn)了每個模擬I/O引腳上的零引腳上的零消耗。施密特觸發(fā)輸出值被強置為消耗。施密特觸發(fā)輸出值被強置為0;弱上拉和下拉電阻被禁止;弱上拉和下拉電阻被禁止;讀取輸入數(shù)據(jù)寄存器時數(shù)值為讀取輸入數(shù)據(jù)寄存器時數(shù)值為0。 5 5.1.1 GPIO的工作原理的工作原理二、二、IO口的基本結(jié)構(gòu)口的基本結(jié)構(gòu)2、 GPIO的的8種設(shè)置模式種設(shè)置模式 開漏輸出模式開漏輸出模式 5 5.1.1 GPIO的工作原理的工作原理二、二、IO口的基本結(jié)構(gòu)口的基本結(jié)構(gòu)2、 GPIO的的8種

23、設(shè)置模式種設(shè)置模式 開漏輸出模式開漏輸出模式 當(dāng)CPU在編號1端通過“位設(shè)置/清除寄存器”或“輸出數(shù)據(jù)寄存器”寫入數(shù)據(jù)后,該數(shù)據(jù)位將通過編號2的輸出控制電路傳送到編號4的I/O端口。 如果CPU寫入的是邏輯“1”,通過輸出控制電路,編號3的N-MOS管將處于關(guān)閉狀態(tài),此時I/O端口的電平將由外部的上拉電阻決定,如果CPU寫入的邏輯“0”,則編號3的N-MOS管將處于開啟狀態(tài),此時I/O端口的電平編號3的N-MOS管拉到了VSS的零電位。 在上圖的虛線部分,施密特觸發(fā)器處于開啟狀態(tài),這意味著CPU可以隨時監(jiān)控I/O端口的狀態(tài);通過這個特性,還實現(xiàn)虛擬的I/O端口雙向通信;只要CPU輸出邏輯“1”

24、,I/O端口的電平將完全由外部電路決定,因此,CPU可以在“輸入數(shù)據(jù)寄存器”讀到外部電路的信號,而不是它自己輸出的邏輯“1”。開漏輸出:輸出端相當(dāng)于三極管的集電極要得到高電平狀態(tài)需要上拉電阻才行,適合于做電流型的驅(qū)動,其吸收電流的能力相對強(一般20ma以內(nèi)). 5 5.1.1 GPIO的工作原理的工作原理二、二、IO口的基本結(jié)構(gòu)口的基本結(jié)構(gòu)2、 GPIO的的8種設(shè)置模式種設(shè)置模式 開漏輸出模式開漏輸出模式開漏輸出使用場合:開漏輸出使用場合:一般來說,開漏一般來說,開漏是用來連接不同電平的器件,匹配電平用的是用來連接不同電平的器件,匹配電平用的,因為開漏引腳,因為開漏引腳不連接外部的上拉電阻時

25、,只能輸出低電平,如果需要同時具備輸出高電平不連接外部的上拉電阻時,只能輸出低電平,如果需要同時具備輸出高電平的功能,則需要接上拉電阻,很好的一個優(yōu)點是通過改變上拉電源的電壓,的功能,則需要接上拉電阻,很好的一個優(yōu)點是通過改變上拉電源的電壓,便可以改變傳輸電平。比如加上上拉電阻就可以提供便可以改變傳輸電平。比如加上上拉電阻就可以提供TTL/CMOS電平輸出等。電平輸出等。(上拉電阻的阻值決定了邏輯電平轉(zhuǎn)換的沿的速度 。阻值越大,速度越低功耗越小,所以負(fù)載電阻的選擇要兼顧功耗和速度。所以負(fù)載電阻的選擇要兼顧功耗和速度。)可以將多個開漏輸出的可以將多個開漏輸出的Pin,連接到一條線上。通過一只上拉

26、電阻,在不增,連接到一條線上。通過一只上拉電阻,在不增加任何器件的情況下,形成加任何器件的情況下,形成“與邏輯與邏輯”關(guān)系。這也是關(guān)系。這也是I2C,SMBus等總線判等總線判斷總線占用狀態(tài)的原理。補充:什么是斷總線占用狀態(tài)的原理。補充:什么是“線與線與”?:?:其實可以簡單的理解為:在所有引腳連在一起時,外接一上拉電阻,如果有其實可以簡單的理解為:在所有引腳連在一起時,外接一上拉電阻,如果有一個引腳輸出為邏輯一個引腳輸出為邏輯0,相當(dāng)于接地,與之并聯(lián)的回路,相當(dāng)于接地,與之并聯(lián)的回路“相當(dāng)于被一根導(dǎo)線相當(dāng)于被一根導(dǎo)線短路短路”,所以外電路邏輯電平便為,所以外電路邏輯電平便為0,只有都為高電平

27、時,與的結(jié)果才為邏,只有都為高電平時,與的結(jié)果才為邏輯輯1。 5 5.1.1 GPIO的工作原理的工作原理二、二、IO口的基本結(jié)構(gòu)口的基本結(jié)構(gòu)2、 GPIO的的8種設(shè)置模式種設(shè)置模式 (6)推挽輸出模式)推挽輸出模式 5 5.1.1 GPIO的工作原理的工作原理二、二、IO口的基本結(jié)構(gòu)口的基本結(jié)構(gòu)2、 GPIO的的8種設(shè)置模式種設(shè)置模式 (6)推挽輸出模式)推挽輸出模式 當(dāng)當(dāng)CPU在編號在編號1端通過端通過“位設(shè)置位設(shè)置/清除寄存器清除寄存器”或或“輸出數(shù)輸出數(shù)據(jù)寄存器據(jù)寄存器”寫入數(shù)據(jù)后,該數(shù)據(jù)位將通過編號寫入數(shù)據(jù)后,該數(shù)據(jù)位將通過編號2的輸出控制電的輸出控制電路傳送到編號路傳送到編號4的的

28、I/O端口。端口。 推挽:是指兩個管子交替工作。推挽:是指兩個管子交替工作。 如果如果CPU寫入的是邏輯寫入的是邏輯“1”,則編號,則編號3的的N-MOS 高阻,高阻,P-MOS 導(dǎo)通,輸出導(dǎo)通,輸出1;如果;如果CPU寫入的邏輯寫入的邏輯“0”,則編號,則編號3的的N-MOS 導(dǎo)通,導(dǎo)通,P-MOS 高高阻阻 ,輸出,輸出0。推挽輸出:推挽輸出:可以輸出高、低電平、連接數(shù)字器件可以輸出高、低電平、連接數(shù)字器件 5 5.1.1 GPIO的工作原理的工作原理二、二、IO口的基本結(jié)構(gòu)口的基本結(jié)構(gòu)2、 GPIO的的8種設(shè)置模式種設(shè)置模式 當(dāng)當(dāng)I/O口配置成輸出時:口配置成輸出時:(1)輸出緩沖器被激

29、活)輸出緩沖器被激活(2)施密特觸發(fā)輸入被激活)施密特觸發(fā)輸入被激活(3)弱上拉和下拉電阻被禁止)弱上拉和下拉電阻被禁止(4)出現(xiàn)在)出現(xiàn)在I/O口上的數(shù)據(jù)在每個口上的數(shù)據(jù)在每個APB2時鐘被采樣時鐘被采樣到輸入數(shù)據(jù)寄存器到輸入數(shù)據(jù)寄存器(5)在開漏模式時,對輸入數(shù)據(jù)寄存器的讀訪問可得到在開漏模式時,對輸入數(shù)據(jù)寄存器的讀訪問可得到I/O狀態(tài)狀態(tài)(6)在推挽模式時,對輸出數(shù)據(jù)寄存器的讀訪問得)在推挽模式時,對輸出數(shù)據(jù)寄存器的讀訪問得到最后一次寫的值到最后一次寫的值 5 5.1.1 GPIO的工作原理的工作原理二、二、IO口的基本結(jié)構(gòu)口的基本結(jié)構(gòu)2、 GPIO的的8種設(shè)置種設(shè)置 3 3個最大輸出速

30、度個最大輸出速度 -2MHz: USART串口,若最大波特率只需串口,若最大波特率只需115.2k -10MHz:I2C接口,若使用接口,若使用400k波特率,若想把波特率,若想把余量留大些,可以選用余量留大些,可以選用10M的的GPIO引腳速度。引腳速度。 -50MHz: SPI接口,若使用接口,若使用18M或或9M波特率波特率 這個速度是指這個速度是指GPIO口驅(qū)動電路的響應(yīng)速度,而不是輸出信號的速度,輸口驅(qū)動電路的響應(yīng)速度,而不是輸出信號的速度,輸出信號的速度與程序有關(guān)(芯片內(nèi)部在出信號的速度與程序有關(guān)(芯片內(nèi)部在I/O口的輸出部分安排了多個響應(yīng)速口的輸出部分安排了多個響應(yīng)速度不同的輸出

31、驅(qū)動電路,用戶可以根據(jù)自己的需要選擇合適的驅(qū)動電路)。度不同的輸出驅(qū)動電路,用戶可以根據(jù)自己的需要選擇合適的驅(qū)動電路)。通過選擇速度來選擇不同的輸出驅(qū)動模塊,達(dá)到最佳的通過選擇速度來選擇不同的輸出驅(qū)動模塊,達(dá)到最佳的噪聲控制和降低功噪聲控制和降低功耗的目的耗的目的。高頻的驅(qū)動電路,噪聲也高,當(dāng)不需要高的輸出頻率時,請選。高頻的驅(qū)動電路,噪聲也高,當(dāng)不需要高的輸出頻率時,請選用低頻驅(qū)動電路,這樣非常有利于提高系統(tǒng)的用低頻驅(qū)動電路,這樣非常有利于提高系統(tǒng)的EMI性能。當(dāng)然如果輸出較高性能。當(dāng)然如果輸出較高頻率的信號,但卻選用了較低頻率的驅(qū)動模塊,很可能會得到失真的輸出頻率的信號,但卻選用了較低頻率

32、的驅(qū)動模塊,很可能會得到失真的輸出信號信號 5 5.1.1 GPIO的工作原理的工作原理二、二、IO口的基本結(jié)構(gòu)口的基本結(jié)構(gòu)2、 GPIO的的8種設(shè)置模式種設(shè)置模式 (7)開漏輸出復(fù)用功)開漏輸出復(fù)用功能能 5 5.1.1 GPIO的工作原理的工作原理二、二、IO口的基本結(jié)構(gòu)口的基本結(jié)構(gòu)2、 GPIO的的8種設(shè)置模式種設(shè)置模式 推挽復(fù)用輸出模式推挽復(fù)用輸出模式 5 5.1.1 GPIO的工作原理的工作原理二、二、IO口的基本結(jié)構(gòu)口的基本結(jié)構(gòu)2、 GPIO的的8種設(shè)置模式種設(shè)置模式 推挽復(fù)用輸出模式推挽復(fù)用輸出模式 最后是最后是GPIO推挽復(fù)用輸出模式。同樣的道理,編號推挽復(fù)用輸出模式。同樣的道

33、理,編號2的的輸出控制電路的輸入,與復(fù)用功能的輸出端相連,此時輸輸出控制電路的輸入,與復(fù)用功能的輸出端相連,此時輸出數(shù)據(jù)寄存器被從輸出通道斷開了,并和片上外設(shè)的輸出出數(shù)據(jù)寄存器被從輸出通道斷開了,并和片上外設(shè)的輸出信號相連接。我們將信號相連接。我們將GPIO配置成復(fù)用輸出功能后,如果外配置成復(fù)用輸出功能后,如果外設(shè)沒有被激活,那么它的輸出將不確定。設(shè)沒有被激活,那么它的輸出將不確定。其它部分與前述模式一直,包括對其它部分與前述模式一直,包括對“輸入數(shù)據(jù)寄存器輸入數(shù)據(jù)寄存器”的的讀取讀取之后內(nèi)容參考手冊之后內(nèi)容參考手冊P105-P106;P113- 5 5.1.1 GPIO的工作原理的工作原理二

34、、二、IO口的基本結(jié)構(gòu)口的基本結(jié)構(gòu)2、 GPIO的的8種設(shè)置模式種設(shè)置模式 推挽復(fù)用輸出模式推挽復(fù)用輸出模式復(fù)用功能配置復(fù)用功能配置(1)在開漏或推挽式配置中,輸出緩沖器被打開)在開漏或推挽式配置中,輸出緩沖器被打開(2)內(nèi)置外設(shè)的信號驅(qū)動輸出緩沖器(復(fù)用功能輸出)、)內(nèi)置外設(shè)的信號驅(qū)動輸出緩沖器(復(fù)用功能輸出)、(3)施密特觸發(fā)輸入被激活)施密特觸發(fā)輸入被激活(4)弱上拉和下拉電阻被禁止)弱上拉和下拉電阻被禁止(5)出現(xiàn)在)出現(xiàn)在I/O口上的數(shù)據(jù)在每個口上的數(shù)據(jù)在每個APB2時鐘被采樣到輸時鐘被采樣到輸入數(shù)據(jù)寄存器入數(shù)據(jù)寄存器(6)在開漏模式時,對輸入數(shù)據(jù)寄存器的讀訪問可得到在開漏模式時,對

35、輸入數(shù)據(jù)寄存器的讀訪問可得到I/O狀態(tài)狀態(tài)(7)在推挽模式時,對輸出數(shù)據(jù)寄存器的讀訪問得到最)在推挽模式時,對輸出數(shù)據(jù)寄存器的讀訪問得到最后一次寫的值后一次寫的值三、三、STM32 GPIO主要功能:主要功能: 5 5.1.1 GPIO的工作原理的工作原理5.1.1通用通用I/O(GPIO)用,輸入輸出;用,輸入輸出;最最基本的功能,可以驅(qū)動最最基本的功能,可以驅(qū)動LED、可以產(chǎn)生、可以產(chǎn)生PWM、可、可以驅(qū)動蜂鳴器等等以驅(qū)動蜂鳴器等等;5.1.2單獨的位設(shè)置或位清除;單獨的位設(shè)置或位清除;方便軟體作業(yè),程序簡單。端口配置好以后只需方便軟體作業(yè),程序簡單。端口配置好以后只需GPIO_SetBi

36、ts(GPIOx, GPIO_Pin_x)就可以實現(xiàn)對就可以實現(xiàn)對GPIOx的的pinx位為高電平;位為高電平;5.1.3外部中斷外部中斷/喚醒線:喚醒線:端口必須配置成輸入模式時,所有端口都有外部中斷端口必須配置成輸入模式時,所有端口都有外部中斷能力;能力;三、三、STM32 GPIO主要功能:主要功能: 5 5.1.1 GPIO的工作原理的工作原理5.1.4復(fù)用功能復(fù)用功能(AF),復(fù)用功能的端口兼有復(fù)用功能的端口兼有IO功能等。復(fù)位期間和剛復(fù)位后,功能等。復(fù)位期間和剛復(fù)位后,復(fù)用功能未開啟,復(fù)用功能未開啟,I/O 端口被配置成浮空輸入模式:端口被配置成浮空輸入模式:(1)復(fù)用的輸入功能,

37、可配置成(輸入浮空,上拉或下復(fù)用的輸入功能,可配置成(輸入浮空,上拉或下拉);拉);(2)復(fù)用的輸出功能:必須配置成復(fù)用輸出模式(推)復(fù)用的輸出功能:必須配置成復(fù)用輸出模式(推挽或開漏)挽或開漏)(3)雙向復(fù)用功能:必須配置成復(fù)用輸出模式(推挽)雙向復(fù)用功能:必須配置成復(fù)用輸出模式(推挽或開漏),輸入驅(qū)動器配置成浮空輸入模式或開漏),輸入驅(qū)動器配置成浮空輸入模式三、三、STM32 GPIO主要功能:主要功能:5.1.5軟件重新映射軟件重新映射I/O復(fù)用功能:復(fù)用功能:為了使不同器件封裝的外設(shè)為了使不同器件封裝的外設(shè)I/O 功能的數(shù)量達(dá)到最優(yōu),功能的數(shù)量達(dá)到最優(yōu),可以把一些復(fù)用功能重新映射到其他

38、一些腳上。這可可以把一些復(fù)用功能重新映射到其他一些腳上。這可以通過軟件配置相應(yīng)的寄存器來完成。這時,復(fù)用功以通過軟件配置相應(yīng)的寄存器來完成。這時,復(fù)用功能就不再映射到它們的原始引腳上了;能就不再映射到它們的原始引腳上了;5.1.6GPIO鎖定機制:鎖定機制:主要針對復(fù)位設(shè)定的,當(dāng)某端口位主要針對復(fù)位設(shè)定的,當(dāng)某端口位lock后,復(fù)位后將后,復(fù)位后將不改變的此端口的位配置。不改變的此端口的位配置。 5 5.1.1 GPIO的工作原理的工作原理通常有通常有5種方式使用某個引腳功能,它們的配置方式如下:種方式使用某個引腳功能,它們的配置方式如下:1)作為)作為普通普通GPIO輸入輸入:根據(jù)需要配置該

39、引腳為:根據(jù)需要配置該引腳為浮空輸入浮空輸入、帶帶弱上拉輸入弱上拉輸入或或帶弱下拉輸入帶弱下拉輸入,同時不要使能該引腳對應(yīng)的所有,同時不要使能該引腳對應(yīng)的所有復(fù)用功能模塊。復(fù)用功能模塊。2)作為)作為普通普通GPIO輸出輸出:根據(jù)需要配置該引腳為:根據(jù)需要配置該引腳為推挽輸出推挽輸出或或開開漏輸出漏輸出,同時不要使能該引腳對應(yīng)的所有復(fù)用功能模塊。,同時不要使能該引腳對應(yīng)的所有復(fù)用功能模塊。3)作為普通)作為普通模擬輸入模擬輸入:配置該引腳為:配置該引腳為模擬輸入模式模擬輸入模式,同時不要同時不要使能該引腳對應(yīng)的使能該引腳對應(yīng)的所有復(fù)用功能模塊所有復(fù)用功能模塊。4)作為)作為內(nèi)置外設(shè)的輸入內(nèi)置外

40、設(shè)的輸入:根據(jù)需要配置該引腳為:根據(jù)需要配置該引腳為浮空輸入浮空輸入、帶帶弱上拉輸入弱上拉輸入或或帶弱下拉輸入帶弱下拉輸入,同時使能該引腳對應(yīng)的某個復(fù)用,同時使能該引腳對應(yīng)的某個復(fù)用功能模塊。功能模塊。5)作為內(nèi)置外設(shè)的輸出:根據(jù)需要配置該引腳為)作為內(nèi)置外設(shè)的輸出:根據(jù)需要配置該引腳為復(fù)用推挽輸出復(fù)用推挽輸出或或復(fù)用開漏輸出復(fù)用開漏輸出,同時使能該引腳對應(yīng)的所有復(fù)用功能模塊。,同時使能該引腳對應(yīng)的所有復(fù)用功能模塊。注意如果有多個復(fù)用功能模塊對應(yīng)同一個引腳,只能使能其中注意如果有多個復(fù)用功能模塊對應(yīng)同一個引腳,只能使能其中之一,其它模塊保持非使能狀態(tài)。之一,其它模塊保持非使能狀態(tài)。5.2庫函數(shù)

41、庫函數(shù)具體函數(shù)用法詳情見具體函數(shù)用法詳情見STM32固件庫使用手冊固件庫使用手冊#include stm32f10 x.hGPIO_InitTypeDef GPIO_InitStructure;#define LED1_ON GPIO_SetBits(GPIOB, GPIO_Pin_5); #define LED1_OFF GPIO_ResetBits(GPIOB, GPIO_Pin_5); void Delay(_IO uint32_t nCount);Int main(void) SystemInit( ); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GP

42、IOB , ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; /將配置為通用推挽輸出 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;/速度為50MHz GPIO_Init(GPIOB, &GPIO_InitStructure);While(1) LED1_ON; Delay(0 xAFFFF); LED1_OFF; Delay(0 xAFFFF); 5 5.2.2 編程舉例編程舉例/* 名 稱:

43、void Delay(_IO uint32_t nCount)* 功 能:延時函數(shù)* 入口參數(shù):無* 出口參數(shù):無* 說 明:* 調(diào)用方法:無 */ void Delay(_IO uint32_t nCount) for(; nCount != 0; nCount-);5 5.2.2 編程舉例編程舉例(1)GPIO_Mode_AIN 模擬輸入 (2)GPIO_Mode_IN_FLOATING 浮空輸入 (3)GPIO_Mode_IPD 下拉輸入 (4)GPIO_Mode_IPU 上拉輸入 (5)GPIO_Mode_Out_OD 開漏輸出 (6)GPIO_Mode_Out_PP 推挽輸出 (7)

44、GPIO_Mode_AF_OD 復(fù)用開漏輸出 (8)GPIO_Mode_AF_PP 復(fù)用推挽輸出STM32 GPIO使用使用操作步驟:操作步驟:1.使能使能GPIO對應(yīng)的外設(shè)時鐘對應(yīng)的外設(shè)時鐘例如:例如:/使能使能GPIOA、GPIOB、GPIOC對應(yīng)的外設(shè)時鐘對應(yīng)的外設(shè)時鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB| RCC_APB2Periph_GPIOC , ENABLE);2.聲明一個聲明一個GPIO_InitStructure結(jié)構(gòu)體結(jié)構(gòu)體例如:例如:GPIO_InitTypeDef GPIO_I

45、nitStructure;3.選擇待設(shè)置的選擇待設(shè)置的GPIO管腳管腳例如:例如:/* 選擇待設(shè)置的選擇待設(shè)置的GPIO第第7、8、9管腳位管腳位 ,中間加,中間加“|”符號符號 */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;4. 設(shè)置選中設(shè)置選中GPIO管腳的速率管腳的速率例如:例如:/* 設(shè)置選中設(shè)置選中GPIO管腳的速率為最高速率管腳的速率為最高速率2MHz */GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;/最高速率最高速率2MHz5. 設(shè)置選中

46、設(shè)置選中GPIO管腳的模式管腳的模式例如:例如:/* 設(shè)置選中設(shè)置選中GPIO管腳的模式為開漏輸出模式管腳的模式為開漏輸出模式*/GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;/開漏輸出模式開漏輸出模式6. 根據(jù)根據(jù)GPIO_InitStructure中指定的參數(shù)初始化外設(shè)中指定的參數(shù)初始化外設(shè)GPIOX例如:例如:/* 根據(jù)根據(jù)GPIO_InitStructure中指定的參數(shù)初始化外設(shè)中指定的參數(shù)初始化外設(shè)GPIOC */GPIO_Init(GPIOC, &GPIO_InitStructure);7.其他應(yīng)用其他應(yīng)用例:例: 將端口將端口GP

47、IOAGPIOA的第的第1010、1515腳置腳置1 1(高電平)(高電平)GPIO_SetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);GPIO_SetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);例:例:將端口將端口GPIOAGPIOA的第的第1010、1515腳置腳置0 0(低電平)(低電平)GPIO_ResetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);GPIO_ResetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);操作實例操作實例 做個跑馬燈程序,做個跑

48、馬燈程序,PB.8PB.11口分別口分別4個個LED燈,當(dāng)燈,當(dāng)I/O為高電平時為高電平時LED燈點亮。見課本燈點亮。見課本P215#include stm32f10 x.h void RCC_Configuration(void); void Delay(_IO uint32_t nCount);int main(void) RCC-APB2ENR|=1CRL=0 x3ODR=0 x0;Delay(0 xAFFFF);GPIOB-ODR=0 x20;Delay(0 xAFFFF);5.2寄存器描述(詳見寄存器描述(詳見P205)例一:寄存器操作舉例)例一:寄存器操作舉例 /* 名 稱:voi

49、d RCC_Configuration(void)* 功 能:系統(tǒng)時鐘配置為72MHZ* 入口參數(shù):無* 出口參數(shù):無* 說 明:* 調(diào)用方法:無 */ void RCC_Configuration(void) SystemInit();/* 名 稱:void Delay(_IO uint32_t nCount)* 功 能:延時函數(shù)* 入口參數(shù):無* 出口參數(shù):無* 說 明:* 調(diào)用方法:無 */ void Delay(_IO uint32_t nCount) for(; nCount != 0; nCount-); #include “stm32f10 x.h“ 位帶操作的實例位帶操作的實例

50、/位綁定的定義 #define GPIOA_ODR_A (GPIOA_BASE+0 x0c) #define GPIOA_IDR_A (GPIOA_BASE+0 x08) #define GPIOB_ODR_B (GPIOB_BASE+0 x0c) #define GPIOB_IDR_B (GPIOB_BASE+0 x08) /位綁定的公式 #define BitBand(Addr,BitNum) *(volatile unsigned long*)(Addr&0 xf0000000)+0 x2000000+(Addr&0 xfffff)5)+(BitNumCRL=0 x33333333; G

51、PIOA-CRH=0 x44444444; /2.輸入狀態(tài)反應(yīng)到輸出引腳上 while(1) if(PAin(8)=1)PAout(0)=1; else PAout(0)=0;if(PAin(9)=1) PAout(1)=1; else PAout(1)=0; 5.3 GPIO5.3 GPIO復(fù)用功能復(fù)用功能 AFIO Alternative Function IO 同一管腳,不僅作為同一管腳,不僅作為GPIO,也可作為其他特殊功,也可作為其他特殊功能使用能使用 即即 同一管腳,多種應(yīng)用同一管腳,多種應(yīng)用5.3 GPIO5.3 GPIO復(fù)用功能復(fù)用功能當(dāng)當(dāng)LSE振蕩器關(guān)閉時,振蕩器關(guān)閉時,LS

52、E振蕩器引腳振蕩器引腳OSC32_IN/OSC32_OUT可以分別用做可以分別用做GPIO的的PC14/PC15,LSE功能始終優(yōu)先于通用功能始終優(yōu)先于通用I/O口的功能口的功能。5.3.2 BXCAN復(fù)用功能重映射復(fù)用功能重映射CAN信號可以被映射到端口信號可以被映射到端口A、端口、端口B或端口或端口D上,如下表所示。上,如下表所示。對于端口對于端口D,在,在36、48和和64腳的封裝上沒有重映射功能。腳的封裝上沒有重映射功能。5.3 GPIO5.3 GPIO復(fù)用功能復(fù)用功能JTAG/SWD復(fù)用功能重映射復(fù)用功能重映射調(diào)試接口信號被映射到GPIO端口上,如下表所示。表 調(diào)試接口信號5.3 G

53、PIO5.3 GPIO復(fù)用功能復(fù)用功能表 調(diào)試端口映像5.3 GPIO5.3 GPIO復(fù)用功能復(fù)用功能5.3.4 定時器復(fù)用功能重映射定時器復(fù)用功能重映射定時器4的通道1到通道4可以從端口B重映射到端口D。其他定時器的重映射列在下表。參見復(fù)用重映射和調(diào)試I/O配置寄存器(AFIO_MAPR)定時器4復(fù)用功能重映像5.3 GPIO5.3 GPIO復(fù)用功能復(fù)用功能定時器3復(fù)用功能重映像定時器2復(fù)用功能重映像5.3 GPIO5.3 GPIO復(fù)用功能復(fù)用功能定時器1復(fù)用功能重映像5.3 GPIO5.3 GPIO復(fù)用功能復(fù)用功能5.3 GPIO5.3 GPIO復(fù)用功能復(fù)用功能5.3 GPIO5.3 GP

54、IO復(fù)用功能復(fù)用功能5.3 GPIO5.3 GPIO復(fù)用功能復(fù)用功能5.3 GPIO5.3 GPIO復(fù)用功能復(fù)用功能使用默認(rèn)復(fù)用功能前必須對端口位配置寄存器編程。 對于復(fù)用的輸入功能復(fù)用的輸入功能,端口可以配置成: 輸入模式(浮空、上輸入模式(浮空、上或下或下) 復(fù)用功能輸出模式:輸入驅(qū)動器被配置成浮空輸入模式復(fù)用功能輸出模式:輸入驅(qū)動器被配置成浮空輸入模式 對于對于復(fù)用輸出功能復(fù)用輸出功能,端口必須配置成復(fù)用功能輸出模式,端口必須配置成復(fù)用功能輸出模式(推挽或開(推挽或開)。)。 對于雙向復(fù)用功能,端口位必須配置復(fù)用功能輸出模式對于雙向復(fù)用功能,端口位必須配置復(fù)用功能輸出模式(推挽或開(推挽

55、或開)。這時,輸入驅(qū)動器被配置成浮空輸入模式。)。這時,輸入驅(qū)動器被配置成浮空輸入模式。如果把一端口配置成復(fù)用輸出功能,將使引腳和輸出寄存器斷如果把一端口配置成復(fù)用輸出功能,將使引腳和輸出寄存器斷開,并和片上外設(shè)的輸出信號連接。開,并和片上外設(shè)的輸出信號連接。如果軟件把一個如果軟件把一個GPIO 腳配置成復(fù)用輸出功能,但是外設(shè)沒有腳配置成復(fù)用輸出功能,但是外設(shè)沒有被激活,它的輸出將被激活,它的輸出將確定。確定。5.3 GPIO5.3 GPIO復(fù)用功能復(fù)用功能STM32外部中斷外部中斷ARM Cortex-m3內(nèi)核支持內(nèi)核支持256個個“中斷通道中斷通道”(16個內(nèi)核個內(nèi)核+240個外部)和可編

56、程個外部)和可編程256級級中斷優(yōu)先級設(shè)置。中斷優(yōu)先級設(shè)置。 STM32采用采用Cortex-m3內(nèi)核,但是內(nèi)核,但是STM32并沒有使用并沒有使用Cortex-m3的全部資源。的全部資源。 STM32目前支持目前支持76個個“中斷通道中斷通道”(16個內(nèi)核個內(nèi)核+60個外部)個外部)和可編程和可編程16級級中斷優(yōu)先級設(shè)置。中斷優(yōu)先級設(shè)置。(參考書冊(參考書冊P132,表表55)STM32的外部中斷通道已經(jīng)固定分配給相應(yīng)的外設(shè)。的外部中斷通道已經(jīng)固定分配給相應(yīng)的外設(shè)。STM32外部中斷外部中斷NVIC在內(nèi)核中的位置在內(nèi)核中的位置1、NVIC相關(guān)知識回顧相關(guān)知識回顧STM32外部中斷外部中斷NV

57、IC在內(nèi)核中的位置在內(nèi)核中的位置1、NVIC相關(guān)知識回顧相關(guān)知識回顧NVIC的的NVIC_Init( )庫函數(shù)封裝在庫函數(shù)封裝在misc.c在在NVIC初始化,首先定義并填充一個初始化,首先定義并填充一個NVIC_InitTypeDef類型的類型的結(jié)構(gòu)體結(jié)構(gòu)體 4bit的中斷優(yōu)先級可以分成的中斷優(yōu)先級可以分成2組,從高位看,組,從高位看,前面定義的前面定義的是搶占式優(yōu)先級,后面是響應(yīng)優(yōu)先級是搶占式優(yōu)先級,后面是響應(yīng)優(yōu)先級。按照這種分組,。按照這種分組,4bit一共可以分成一共可以分成5組組 第第0組:所有組:所有4bit用于指定響應(yīng)優(yōu)先級;用于指定響應(yīng)優(yōu)先級; 第第1組:最高組:最高1位用于指

58、定搶占式優(yōu)先級,后面位用于指定搶占式優(yōu)先級,后面3位用于指定位用于指定響應(yīng)優(yōu)先級;響應(yīng)優(yōu)先級; 第第2組:最高組:最高2位用于指定搶占式優(yōu)先級,后面位用于指定搶占式優(yōu)先級,后面2位用于指定位用于指定響應(yīng)優(yōu)先級;響應(yīng)優(yōu)先級; 第第3組:最高組:最高3位用于指定搶占式優(yōu)先級,后面位用于指定搶占式優(yōu)先級,后面1位用于指定位用于指定響應(yīng)優(yōu)先級;響應(yīng)優(yōu)先級; 第第4組:所有組:所有4位用于指定搶占式優(yōu)先級。由以下函數(shù)實現(xiàn)位用于指定搶占式優(yōu)先級。由以下函數(shù)實現(xiàn):NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2)/2位搶占優(yōu)先級位搶占優(yōu)先級1、NVIC相關(guān)知識回顧相

59、關(guān)知識回顧2、STM32-GPIO外部中斷外部中斷相關(guān)知識回顧相關(guān)知識回顧中斷分類中斷分類STM32的EXTI控制器控制器支持19 個外部中斷個外部中斷/ 事件事件請求。每個中斷設(shè)有狀態(tài)位,每個中斷/ 事件都有獨立的觸發(fā)和屏蔽設(shè)置。STM32的19個外部中斷對應(yīng)著19路中斷線路中斷線,分別是EXTI_Line0-EXTI_Line18:線015:對應(yīng)外部 IO口的輸入中斷。線16:連接到 PVD 輸出。線17:連接到 RTC 鬧鐘事件。線18:連接到 USB 喚醒事件。觸發(fā)方式觸發(fā)方式:STM32 的外部中斷是通過邊沿來觸發(fā)通過邊沿來觸發(fā)的,不支持不支持電平觸發(fā)電平觸發(fā)。 外部中斷分組:外部中

60、斷分組:STM32 的每一個每一個GPIO都能配置成一個外部中都能配置成一個外部中斷觸發(fā)源斷觸發(fā)源,STM32 通過根據(jù)引腳的序號不同將眾多中斷觸發(fā)源分成不同的組,比如:PA0,PB0,PC0,PD0,PE0為第一組,那么依此類推,我們能得出一共有16 組,STM32 規(guī)定規(guī)定,每一組中同時只能有一個中斷觸發(fā)源工作,每一組中同時只能有一個中斷觸發(fā)源工作,那么,最多工作的也就是16個外部中斷。中斷和事件中斷和事件(續(xù))(續(xù)) 外部中斷外部中斷/事件線路映像事件線路映像 80(低密度(低密度STM32F10 x)或)或112個(個(中、高密度中、高密度STM32F10 x)GPIO端端口以口以左左

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論