stm32學習筆記 F1系列GPIO相關暫存器的配置
對於stm32 F1系列每組GPIO埠的暫存器包括:GPIOx_CRL ,GPIOx_CRH,GPIOx_IDR,GPIOx_ODR,GPIOx_BSRR,GPIOx_BRR和GPIOx_LCKR七個暫存器
其中:
GPIOx_CRL為埠配置低暫存器;
GPIOx_CRH為埠配置高暫存器;
GPIOx_IDR為埠輸入暫存器;
GPIOx_ODR為埠輸出暫存器;
GPIOx_BSRR為埠位設定/清除暫存器;
GPIOx_BRR為埠位清除暫存器;
GPIOx_LCKR為配置鎖存暫存器。
通過以上7個暫存器可以控制一組GPIO的16個IO口。
GPIOx_CRL 與GPIOx_CRH各32位,從0位開始每4位完成對一個IO口的配置,即通過設定GPIOx_CRL
以GPIOx_CRL的0-3位配置埠0為例:
0-1位設定埠0的模式00:輸入模式 01:輸出模式,最大速率為10MHz 10:輸出模式,最大速率為2MHz 11:輸出模式,最大速率為50MHz
2-3位設定埠0的配式
在輸入模式下 00:模擬輸入模式01:浮空輸入模式10:上拉/下拉輸入模式(下拉輸入ODR暫存器相對應位設定為0,上拉輸入ODR暫存器相對應位設定為1)11:保留
在輸出模式下 00:通用推輓輸出模式01:通用開漏輸出模式10:複用功能推輓輸出模式11:複用功能開漏輸出模式
GPIOx_IDR 32位其中16-31位保留始終為0,0-15位為只讀模式,讀出值為對應IO口的狀態。
GPIOx_ODR 32位其中16-31位保留始終為0,0-15位可讀可寫,可以分別對各個ODR位進行獨立的設定/清除,
注:下拉輸入ODR暫存器相對應位設定為0,上拉輸入ODR相對應位設定為1。
GPIOx_BSRR 32位,其中:
0-15位為設定對應埠位,當值為0時對對應埠的ODR位不產生影響,當值為1時設定對應的ODR位為1。
16-31位為清除對應埠的位,當值為0時對對應埠的ODR位不產生影響,當值為1時清除對應的ODR位為0。
注:如果同時對同一埠對應的0-15位與16-31位進行了設定,0-15位起作用。
GPIOx_BRR 32位,16-31位保留,0-15位為清除對應埠的位,當值為0時對對應埠的ODR位不產生影響,當值為1時清除對應的ODR位為0。