正點原子戰艦v3筆記(0)GPIO暫存器配置介紹

2021-10-06 17:03:30 字數 2550 閱讀 7713

gpioa 下有十六個 口 從pa0----pa15

每組gpio口都有7個暫存器

如果你的裝置有 7 組gpio口 , 那麼暫存器就有, 7 * 7 = 49個暫存器,

比如:gpioa 有16個gpio 那就是由這7個暫存器進行控制

gpiox_crl : 埠配置低暫存器 (模式配置) 配置 0–7 io口的模式和速度

gpiox_crh : 埠配置高暫存器 (模式配置) 配置 8–15 io口的模式和速度

為什麼需要兩組呢 ? 因為是32位的暫存器 ,一共只有32個位 ,但是我們配置每乙個io口, 32個位配置 16個io口, 每個io口配置需要4個位 , 32 /4 = 8 一共暫存器最多控制8個,但是我們有16個口, 所以說 需要兩個暫存器來控制 , 64位 / 4 =16 . gpiox_crl 控制 低位 8個, 0—7. gpiox_crh控制高位 8個, 8—15 .

每個io口 由4個位來控制, 每一位分成兩半 , 一半用來配置輸入輸出模式和速度, 一半用來配置到底是哪個模式, 低暫存器和高暫存器是一樣的.

gpiox_idr : 埠輸入資料暫存器 (控制io口輸出高低電頻)

因為每一組io 只有16個io口, 所以這個暫存器只用到 16位, 0—15 後面16位不用,是無效的,

第0位 對應 pa0 … 我們把這個位的值讀出來 是0的話說明我們這個pa0輸入是低電頻, 1的話代表pa0輸入的是高電頻,

gpiox_odr : 埠輸出資料暫存器

第0位 對應 pa0 … 我們往相應的位設定為 1的話 那麼這個io口就輸出為高電頻, 如果我們設定為 0的話那麼這個io 口輸出為低電頻,跟輸入資料暫存器是對應的, 後16無效保留,還可以用來配置輸入模式下的上拉還是下拉, 也就是說我們 把gpiox_crl 或 gpiox_crh配置成輸入模式下, 如果我們模式配置為 10上拉/下拉輸入模式, ,那到底是上拉還是下拉,那麼我們可以通過這個odr暫存器來配置,

我們以gpioa_0為例,我們配置為 10 00 也就是輸入模式的 上拉/下拉輸入模式,到底是上拉還是下拉, 我們去配置gpioa的odr暫存器, pa0就對應的 odr 第0位, 把他配置為0的話就是下拉, 如果配置為1的話就是上拉,

也就是說在輸入模式下也可以配置上拉或者下拉, 對於輸出模式下就是配置輸出的電頻

gpiox_bsrr : 埠位設定/清除暫存器

也是用來配置io口的輸出高電頻或者 低電頻, 它是乙個32位的暫存器, 低16位是用來設定埠對應的位, 如果設定為1的話,對應的io口就輸出為高電頻, 如果設定為0的話就不產生任何影響, , 實際上它是最終來控制odr暫存器的,

以開漏為例: 我們cpu寫暫存器的時候我們可以先寫 這個 位設定/清除暫存器, 通過它來達到設定輸出暫存器的目的odr 最終是用來設定odr, 直接設定odr 達到間接設定odr的內容

這樣有什麼好處呢 ?

bsrr暫存器, 我們要設定某乙個io口,比如 pa0高電頻, 我們只要設定它為1 ,把其他的設定為0 ,就可以直接達到, pa0設定為1 其他的不變,其他為都設定為0是不受影響的, ,

但是odr暫存器是實實在在的, 如果你把它 pa0設定為1 ,輸出高電頻, 其他位設定為0 那麼其他位也是會輸出低電頻的. 但是bsrr是設定為0的話是不影響的,

這有什麼好處呢 ?

在實時系統裡面我們的odr 暫存器經常要,我們要先把odr裡得值,讀取進來取分析它,然後再去把它賦乙個值, 然後再寫入到odr暫存器,達到設定io電頻的目的, 因為我們經常的話只設定某一部分的io ,還有io 口不變,所以對odr暫存器我們需要這樣乙個過程,

那麼對於bsrr暫存器操作就非常簡單了,如果要設定為高電頻, 我們只需要設定對應的位為1 其他位 為0, 這樣就達到 了, 只設定對應的位的這個io口, 一次就能達到這樣的目的, 不會像odr暫存器要先讀入,分析,再去寫, 因為對bsrr暫存器的話,它這個

bsrr高位是用來設定清除odr暫存器 , 1 為清除輸出低電頻, 0 為不影響, 正好和低位相反

gpiox_brr : 埠位清除暫存器

跟bsrr高位是一樣的, 我們用的時候 經常只用bsrr的低16位, 然後再用brr的它的低16位,

對於f4晶元的話, 它就只有乙個bsrr暫存器.

戰艦stm32 正點原子 OLED的中文顯示

問題描述 學習完正點原子的oled顯示實驗,很多人會發現只能使螢幕顯示英文,即使顯示中文也只能是2n n畫素,或是亂碼。本文將向您介紹如何解決這個問題。開發工具 正點原子戰艦開發板v3 keil 5 pctolcd2002完美版 解決方法 1 開啟 pctolcd2002完美版 軟體,開啟 選項 面...

openssl 生成v3證書

今天一下午都在調這個,網上也到處搜帖子,提問的一大票,能解決的暫時沒有發現 想使用openssl生成乙個只能用於簽名的證書,即證書的擴充套件屬性 金鑰用途,只能用於數字簽名 但是我們一般使用openssl生成證書時,生成的證書都是v1證書,是不帶擴充套件屬性的 方法 在使用ca證書進行簽署證書時 o...

1110 距離之和最小 V3

x軸上有n個點,每個點除了包括乙個位置資料x i 還包括乙個權值w i 點p到點p i 的帶權距離 實際距離 p i 的權值。求x軸上一點使它到這n個點的帶權距離之和最小,輸出這個最小的帶權距離之和。input 第1行 點的數量n。2 n 10000 第2 n 1行 每行2個數,中間用空格分隔,分別...