STM32F2 GPIO 配置問題

2021-06-07 17:11:14 字數 1059 閱讀 5048

在編寫gpio模擬i2c時,下面兩個初始化有不同

第一種方法:

gpio_initstructure.gpio_pin = gpio_pin_9;

gpio_initstructure.gpio_speed = gpio_speed_50mhz;

gpio_initstructure.gpio_mode = gpio_mode_out;

gpio_initstructure.gpio_otype = gpio_otype_od;

gpio_initstructure.gpio_pupd = gpio_pupd_up;

gpio_init(gpioc, &gpio_initstructure);

gpio_writebit(gpioc, gpio_pin_9, bit_set);  //zyboy

第二種方法:

gpio_writebit(gpioc, gpio_pin_9, bit_set);  //zyboy

gpio_initstructure.gpio_pin = gpio_pin_9;

gpio_initstructure.gpio_speed = gpio_speed_50mhz;

gpio_initstructure.gpio_mode = gpio_mode_out;

gpio_initstructure.gpio_otype = gpio_otype_od;

gpio_initstructure.gpio_pupd = gpio_pupd_up;

gpio_init(gpioc, &gpio_initstructure);

通過示波器觀察 第一種方法:會出現gpio瞬間有個低電平,之後變成高電平,第二種方法:一直為高電平

原因:gpio上電預設輸入模式,gpio暫存器值為0,高阻懸浮狀態,gpio電平由外圍電路決定。

由於i2c匯流排,gpio外接上拉電阻,故上電時gpio表現為高電平。如果程式初始化開始設定gpio為輸出,再設定gpio為高,由於gpio暫存器值預設上電是0,故gpio會是有個瞬間的低電平然後變高。如果事先把gpio 暫存器設定為1,再設定gpio為輸出,則gpio一直為高。

STM32F103的GPIO配置方式

一 gpio的配置過程 1 開啟外設時鐘 2 初始化gpio 配置成輸出模式程式 void gpio config void 說明 1.1在stm32中選用io模式 1 浮空輸入 in floating 浮空輸入,可以做key識別,rx1 2 帶上拉輸入 ipu io內部上拉電阻輸入 3 帶下拉輸入...

STM32F4的GPIO口配置模式

stm32f4 每組通用 i o 埠包括 4 個 32 位配置暫存器 moder otyper ospeedr 和 pupdr 2 個 32 位資料暫存器 idr 和 odr 1 個 32 位置位 復位暫存器 bsrr 1 個 32 位鎖定暫存器 lckr 和 2 個 32 位復用功能選擇暫存器 a...

STM32f1學習筆記 GPIO

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