STM32f1學習筆記 GPIO

2021-10-09 08:56:02 字數 3144 閱讀 5390

參考文章:「stm32自學筆記」

stm32可以提供很多gpio,一般分別在5個埠(port)(gpioa-gpioe),每個埠有16個gpio,最大耐壓值為5v。每個埠有32為寬頻的設定暫存器,一共64位,每個gpio占用4位配置位。其中兩位設定gpio的方向,另外兩位設定gpio的工作模式

1、gpio_pin定義

gpio_pin引數

描述gpio_pin_none

無引腳被選中

gpio_pin_0~15

選中引腳1~15(其中乙個)

gpio_pin_all

選中全部引腳

2、gpio_mode定義

gpio_mode引數

描述gpio_mode_ain

模擬輸入

gpio_mode_floating

浮空輸入

gpio_mode_ipd

下拉輸入

gpio_mode_ipu

上拉輸入

gpio_mode_out_od

開漏輸出

gpio_mode_out_pp

推挽輸出

gpio_mode_af_od

復用開漏輸出

gpio_mode_af_pp

復用推挽輸出

3、gpio_speed定義

gpio_speed引數

描述gpio_speed_2mhz

最高輸出頻率2mhz

gpio_speed_10mhz

最高輸出頻率10mhz

gpio_speed_50mhz

最高輸出頻率50mhz

關於引數的一些說明:

上下拉輸入:即在將輸入值在沒有低/高平訊號給到時,穩定在高/低平

模擬輸入:用adc時,將模擬訊號送個mcu

浮空輸入:一般用於i2c與uasrt的輸入管腳

開漏輸出:只能輸出低電平

推挽輸出:既可以輸出高電平也可以輸出低電平

gpio_speed:字面意思就是變換電平所需的時間;在gpio設定成輸入模式時,不需要設定翻轉速度

// gpio 說明

/*設為預設狀態*/

void

gpio_deinit

(gpio_typedef* gpiox)

;/*gpio_init(gpio_typedef * gpiox,gpio_type_inittypedef * gpio_initstruct)*/

gpio_init

(gpioa,

&gpio_initstructure)

;void

gpio_structinit

(gpio_inittypedef* gpio_initstruct)

/*埠置位*/

void

gpio_setbits

(gpio_typedef* gpiox, uint16_t gpio_pin)

;#define gpio_pin_0 ((uint16_t)0x0001)

/*!< pin 0 selected */

#define gpio_pin_1 ((uint16_t)0x0002)

/*!< pin 1 selected */

#define gpio_pin_2 ((uint16_t)0x0004)

/*!< pin 2 selected */

#define gpio_pin_3 ((uint16_t)0x0008)

/*!< pin 3 selected */

#define gpio_pin_4 ((uint16_t)0x0010)

/*!< pin 4 selected */

#define gpio_pin_5 ((uint16_t)0x0020)

/*!< pin 5 selected */

#define gpio_pin_6 ((uint16_t)0x0040)

/*!< pin 6 selected */

#define gpio_pin_7 ((uint16_t)0x0080)

/*!< pin 7 selected */

#define gpio_pin_8 ((uint16_t)0x0100)

/*!< pin 8 selected */

#define gpio_pin_9 ((uint16_t)0x0200)

/*!< pin 9 selected */

#define gpio_pin_10 ((uint16_t)0x0400)

/*!< pin 10 selected */

#define gpio_pin_11 ((uint16_t)0x0800)

/*!< pin 11 selected */

#define gpio_pin_12 ((uint16_t)0x1000)

/*!< pin 12 selected */

#define gpio_pin_13 ((uint16_t)0x2000)

/*!< pin 13 selected */

#define gpio_pin_14 ((uint16_t)0x4000)

/*!< pin 14 selected */

#define gpio_pin_15 ((uint16_t)0x8000)

/*!< pin 15 selected */

/*清楚埠資料,即置0*/

void

gpio_resetbits

(gpio_typedef* gpiox, uint16_t gpio_pin)

;

STM32f1學習筆記 USART

typedef struct usart inittypedef usart stopbits usart stopbits引數 描述usart stopbits 1 在幀尾傳輸1個停止位 usart stopbits 0.5 在幀尾傳輸0.5個停止位 usart stopbits 2 在幀尾傳輸2...

STM32F4與STM32F1的區別

作為cortex m3市場的最大佔有者,st公司在2011年又推出基於cortex m4核心的stm32f4系列產品,相對與stm32f1 f2等cortex m3產品,stm32f4最大的優勢,就是新增了硬體fpu單元以及dsp指令,同時,stm32f4的主頻也提高了很多,達到168mhz 可獲得...

STM32F1外部中斷例項

使用外部中斷的基本步驟如下 1.設定好相應的時鐘 2.設定相應的中斷 3.io口初始化 4.把相應的io口設定為中斷線路 要在設定外部中斷之前 並初始化 5.在選擇的中斷通道的響應函式中中斷函式。1 開啟時鐘 void rcc config void 設定相應的時鐘所需要的rcc函式在stm32f1...