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 序列輸入,通過取樣技術...