對stm32f10c gpio c的學習

2021-10-01 09:08:09 字數 3611 閱讀 2735

1、gpio 暫存器

每組io口含下面7個暫存器。也就是7個暫存器,一共可以控制一組gpio的16個io口。

gpiox->crl :埠配置低暫存器

gpiox->crh:埠配置高暫存器

gpiox->idr:埠輸入暫存器

gpiox->odr:埠輸出暫存器

gpiox->bsrr:埠位設定/清除暫存器

gpiox->brr :埠位清除暫存器

gpiox->lckr:埠配置鎖存暫存器

功能:將gpiox外設暫存器初始化為預設值

注釋:判斷gpiox具體為哪個埠,再通過操作rcc_apb2rstr(apb2外設復位暫存器)對其暫存器進行復位

例如:gpio_deinit(gpioa);

2.void gpio_afiodeinit(void)

功能:將復用功能(重對映與exti設定)重設為預設值

注釋:通過操作rcc_apb2rstr(apb2外設復位暫存器)對其暫存器進行復位

例如:gpio_afiodeinit();

3.void gpio_init(gpio_typedef* gpiox, gpio_inittypedef* gpio_initstruct)

功能:按照gpio_initstruct結構體變數所配置的引數來初始化gpiox暫存器

注釋:將結構體內成員所賦的值取出並賦給對應的暫存器

例如:gpio_init(gpioa,&gpio_initstructure);

4.void gpio_structinit(gpio_inittypedef* gpio_initstruct)

功能:將gpio結構體各個成員填充為預設值

注釋:未涉及暫存器操作,直接向結構體成員賦預設值

例如:gpio_structinit(&gpio_initstructure);

5.uint8_t gpio_readinputdatabit(gpio_typedef* gpiox, uint16_t gpio_pin)

功能:讀取指定埠引腳的輸入電平,針對pin

注釋:通過訪問gpiox_idr(埠輸入資料暫存器)可獲知某一引腳的輸入電平

例如: readvalue = gpio_readinputdatabit(gpiob, gpio_pin_7);

6.uint16_t gpio_readinputdata(gpio_typedef* gpiox)

功能:讀取指定gpio埠的輸入電平,針對port

注釋:通過訪問gpiox_idr(埠輸入資料暫存器)可獲知某一埠的輸入電平

例如:readvalue = gpio_readinputdata(gpioc);

7.uint8_t gpio_readoutputdatabit(gpio_typedef* gpiox, uint16_t gpio_pin)

功能:讀取指定埠引腳的輸出電平,針對pin

注釋:通過訪問gpiox_odr(埠輸出資料暫存器)可獲知某一引腳的輸出電平

例如:readvalue = gpio_readoutputdatabit(gpiob, gpio_pin_7);

8.uint16_t gpio_readoutputdata(gpio_typedef* gpiox)

功能:讀取指定gpio埠的輸出電平,針對port

注釋:通過訪問gpiox_odr(埠輸出資料暫存器)可獲知某一埠的輸出電平

例如:readvalue = gpio_readoutputdata(gpioc);

9.void gpio_setbits(gpio_typedef* gpiox, uint16_t gpio_pin)

功能:設定選定的資料埠位,置「1」,乙個或多個

注釋:使用gpiox_bsrr的埠位設定功能來達到設定引腳輸出為「1」的目的,bsrr同樣具備brr功能

例如:gpio_setbits(gpioa, gpio_pin_10 | gpio_pin_15);

10.void gpio_resetbits(gpio_typedef* gpiox, uint16_t gpio_pin)

功能:清除指定的資料埠位,清「0」,乙個或多個

注釋:通過操作brr暫存器來實現埠引腳的低電平輸出

例如:gpio_resetbits(gpioa, gpio_pin_10 | gpio_pin_15);

11.void gpio_writebit(gpio_typedef* gpiox, uint16_t gpio_pin, bitaction bitval)

功能:對某乙個埠管腳實現清「0」或置「1」操作,乙個

注釋:判斷電平,進而對應操作brr或者bsrr

例如:gpio_writebit(gpioa, gpio_pin_15, 1);

12.void gpio_write(gpio_typedef* gpiox, uint16_t portval)

功能:向某一埠寫入指定資料

注釋:將資料寫入gpiox_odr暫存器,odr可讀可寫,但只能字操作

例如:gpio_write(gpioa, 0x1234);

13.void gpio_pinlockconfig(gpio_typedef* gpiox, uint16_t gpio_pin)

功能:鎖定gpio管腳的配置,下次系統復位之前將不能再更改埠位的配置,乙個或多個

注釋:根據鍵寫入序列,通過操作lckk與lckx來進行設定

例如:gpio_pinlockconfig(gpioa, gpio_pin_0 | gpio_pin_1);

14.void gpio_eventoutputconfig(uint8_t gpio_portsource, uint8_t gpio_pinsource)

功能: 選擇gpio管腳用作事件輸出

注釋:對afio_evcr的操作

例如:gpio_eventoutputconfig(gpio_portsourcegpioe, gpio_pinsource5);

15.void gpio_eventoutputcmd(functionalstate newstate)

功能:使能或失能事件輸出

注釋:與gpio_eventoutputconfig配合使用

例如:gpio_eventoutputcmd(enable);

16.void gpio_pinremapconfig(uint32_t gpio_remap, functionalstate newstate)

功能:改變管腳對映

注釋:沒有重映像,部分重映像,完全重映像

例如:gpio_pinremapconfig(gpio_remap_i2c1, enable);

17.void gpio_extilineconfig(uint8_t gpio_portsource, uint8_t gpio_pinsource)

功能:選擇gpio管腳作為中斷線路

注釋:16個管腳占用了4個暫存器

例如:gpio_extilineconfig(gpio_portsource_gpiob, gpio_pinsource8);

18.void gpio_eth_mediainte***ceconfig(uint32_t gpio_eth_mediainte***ce)

功能:選擇乙太網**介面

注釋:未知

STM32F10x系列 中斷

概念問題 中斷與事件有什麼聯絡與區別?stm32之中斷與事件 中斷與事件的區別 簡單概括下。中斷 cpu單執行緒情況下只能處理單一任務,在有零時任務需要處理時,可以暫時放下當前任務,優先處理零時任務,再回過來處理之前的任務。多個中斷可以進行巢狀,比如產生了多個零時任務,那麼就可以按照優先順序處理這多...

基於stm32f407建立stm32F427工程

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

STM32F10X USART傳送詳解,測試無誤

硬體平台 stm32f10x usart模組 jlink usb轉ttl小板 軟體平台 keil 4 一 基礎知識 串列埠 通用同步非同步收發器 usart 支援同步單向與半雙工單線,允許多處理器通訊,可用dma。任何usart雙向通訊至少要3個引腳 rx tx gnd rx 序列輸入,通過取樣技術...