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...