stm32f407引腳相關配置

2021-09-10 03:57:18 字數 1328 閱讀 7339

stm32f407的io口可由軟體配置成8種模式:輸入浮空、輸入上拉、輸入下拉、模擬輸入、開漏輸出、推挽輸出、推挽式復用功能、開漏式復用功能。

下列分別是gpiox常用配置相關的暫存器:

1、moder暫存器(埠模式)

32位暫存器,每兩位控制乙個io口的模式,總共16組。00:輸入、01:通用輸出模式、10、復用功能模式、11:模擬模式,該暫存器在復位後,一般都是0,也就是預設條件下一般是輸入狀態。

2、otyper暫存器(輸出型別)

32位暫存器,高16位保留,必須保持復位值,低16位,每位控制乙個io口輸出型別。0:輸出推挽、1:輸出開漏,該暫存器僅用於輸出模式,復位後各位為0,預設輸出型別是推挽輸出。

3、ospeedr暫存器(輸出速度)

32位暫存器,每兩位控制乙個io口的模式,總共16組。00:2mhz、01:25mhz、10、50mhz、11:100mhz,該暫存器僅用於輸出模式,復位後各位為0

4、pupdr 暫存器(上拉下拉)

32位暫存器,每 2 個位控制乙個 io 口,用於設定上下拉。00:無上拉下拉、01:上拉、10、下拉、11:保留。

庫函式的gpiox配置函式:

void rcc_ahb1periphclockcmd(uint32_t rcc_ahb1periph, functionalstate newstate)引腳時鐘使能

void gpio_init(gpio_typedef* gpiox, gpio_inittypedef* gpio_initstruct)
引腳初始化

下列分別是gpiox常用引數設定相關的暫存器

odr暫存器,控制io口的輸出狀態,與讀取io口的輸出狀態,改變整組io口狀態,一般不用此暫存器,相關庫函式如下

void gpio_write(gpio_typedef* gpiox,uint_t portval)
idr暫存器,讀取io口的輸入狀態,相關庫函式如下

uint16_t gpio_readinputdata(gpio_typedef* gpiox) 讀取某組io口

uint8_t gpio_readinputdatabit(gpio_typedef* gpiox, uint16_t gpio_pin)讀取某個io口

void gpio_setbits(gpio_typedef* gpiox, uint16_t gpio_pin)  置1

void gpio_resetbits(gpio_typedef* gpiox, uint16_t gpio_pin)置0,pxout()

基於stm32f407建立stm32F427工程

分為三個部分 1.啟動檔案 2.fwilib 包含兩個資料夾inc和src。src裡面是stm32資源的c檔案,inc則是32資源的h檔案 3.user這也是我不太理解的部分 ddbugconfig只包含了用於debug的初始化,則是f4的系統檔案。我是在f407的基礎上改的 總的來說 1.改了晶元...

STM32F407上除錯freeRTOS問題

是在正點原子的阿波羅stm32f429開發板上的例子改來的,他們的編譯沒有問題,我編譯時出現如下問題 定位到出錯的地方,是 再追 configmax syscall interrupt priority 的定義是 define configmax syscall interrupt priority...

STM32F407 驅動外部SRAM

需要驅動的sram型號為is61lv25616al,價效比比51216的高很多 配置cubemx 這幾個時序比較關鍵,可以按照手冊來計算,我用下來這幾個數值比較合適。然後就沒有然後了,生成 就可以用了。檢查sram內容是否正確 uint8 t bsp testextsram void 寫sram p...