stm32學習(1)——GPIO

  1. 引腳說明
  2. 基本結構
  3. 工作方式
  4. 相關寄存器

**

一、引腳說明(以正點原子精英版所用stm32f103zet6爲例)

**
在這裏插入圖片描述
STM32F103ZET6:

  1. 一共有7組IO口——GPIOA~GPIOG
  2. 每組IO口有16個IO——PA0~PA15…PG0~PG15
  3. 一共有7X16=112個IO口

這是一個ZET6芯片IO口的數量位置分佈,在不同的芯片IO口數量也不同

**

二、基本結構

**
在這裏插入圖片描述
先把這張圖放在這裏

**

三、工作方式

**
輸入模式4種:

  1. 輸入浮空
  2. 輸入上拉
  3. 輸入下拉
  4. 模擬輸入

輸出模式4種:

  1. 開漏輸出
  2. 開漏複用功能
  3. 推輓式輸出
  4. 推輓式複用功能

輸入浮空模式:
在這裏插入圖片描述
IO端口的狀態傳到施密特觸發器,經過施密特觸發器處理進入輸入數據寄存器,由CPU讀取輸入數據寄存器得到這個引腳的狀態。
需要注意的是:在輸入浮空下引腳的狀態僅有外部所加的電平有關,具有不確定性。

輸入上拉模式:
在這裏插入圖片描述
相當於在浮空輸入的基礎上加了一個上拉電阻,因爲在浮空輸入模式且未加外部電壓的情況下下IO口的電平狀態是不確定的,加上拉電阻,就把不確定的電平鉗制在了高電平,所以在上拉輸入模式下,默認IO口的狀態爲高電平。

輸入下拉模式:
在這裏插入圖片描述
與上拉模式唯一的不同是輸入下拉模式中加的是下拉電阻,將不確定的狀態鉗制在了低電平。
輸入上拉與輸入下拉模式一個最常見的應用就是在讀取按鍵狀態上。如果按鍵是低電平有效,那麼需要接上拉電阻,默認狀態就是高電平,只有在按鍵被按下的時候纔是低電平的有效狀態,鬆開立刻回到高電平狀態。

模擬輸入模式:
在這裏插入圖片描述
將外部讀取到的模擬信號傳入到外設模塊AD/DA上完成模數轉換。

開漏輸出模式:
在這裏插入圖片描述
當CPU寫入一個電平值時,經過前兩個寄存器到達輸出控制電路,寫入高電平1時,M-MOS管截止,IO口狀態不由寫入的值決定,僅有外部上下拉電阻決定,寫入低電平0時,N-MOS管導通,整條線路被拉低到VSS,IO口輸出低電平。
總的來說,在開漏輸出下,寫高無效,寫低有效。

開漏複用輸出模式:
在這裏插入圖片描述
與開漏輸出唯一的區別在於控制信號的來源不同,開漏輸出的來源是內部CPU,而開漏複用的來源來自外設模塊。

推輓輸出模式
在這裏插入圖片描述
與開漏輸出類似,當寫入高電平1時,P-MOS管導通,N-MOS管截止,整條線路就處在VDD高電平,IO口輸出高電平。當寫入低電平0時,P-MOS管截止,N-MOS管導通,整條線路被拉低到VSS,IO口輸出低電平。
推輓輸出輸出強高低電平。

推輓複用輸出:
在這裏插入圖片描述
和開漏與開漏複用的對比類似,也是來源與推輓輸出不同。

**

四、相關寄存器

**
每組IO口由7個寄存器控制,它們是:
兩個32位配置寄存器(GPIOx_CRL ,GPIOx_CRH)
兩個32位數據寄存器 (GPIOx_IDR和GPIOx_ODR)
一個32位置位/ 復位寄存器(GPIOx_BSRR)
一個16位復位寄存器(GPIOx_BRR)
一個32位鎖定寄存器(GPIOx_LCKR)

GPIOx_CRL :端口配置低寄存器
在這裏插入圖片描述
GPIOx_CRH:端口配置高寄存器
在這裏插入圖片描述
GPIOx_IDR:端口輸入寄存器
在這裏插入圖片描述
GPIOx_ODR:端口輸出寄存器
在這裏插入圖片描述
GPIOx_BSRR:端口位設置/清除寄存器
在這裏插入圖片描述
GPIOx_BRR :端口位清除寄存器
在這裏插入圖片描述

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