在編寫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...