stm32管腳初始化時請給所有可操作狀態賦值

2021-09-27 12:01:28 字數 1259 閱讀 5055

微控制器初始化時,需要注意將初始化中各項明確賦值,不能忽略,如以如下**對gpio進行初始化,

gpio_inittypedef gpio_initstructure;

rcc_apb2periphclockcmd(rcc_apb2periph_gpiob,enable);

gpio_initstructure.gpio_pin = gpio_pin_4;

gpio_initstructure.gpio_mode = gpio_mode_out_pp; //設定成推挽輸出

gpio_init(gpiob, &gpio_initstructure);

gpio_resetbits(gpiob,gpio_pin_4);

初始化是失敗的,復位操作也無法執行,查閱stm32f103的韌體庫手冊,可見gpio初始化函式的使用方法,

官方的gpio初始化示例為

則以如下**對gpio進行初始化,

gpio_inittypedef gpio_initstructure;

rcc_apb2periphclockcmd(rcc_apb2periph_gpiob,enable);

gpio_initstructure.gpio_pin = gpio_pin_4;

gpio_initstructure.gpio_mode = gpio_mode_out_pp; //設定成推挽輸出

gpio_initstructure.gpio_speed = gpio_speed_50mhz;

gpio_init(gpiob, &gpio_initstructure);

gpio_resetbits(gpiob,gpio_pin_4);

該初始化是成功的,能夠復位管腳電平,與之前的初始化差別僅是多了一行設定管腳輸出速率的**,

gpio_initstructure.gpio_speed=gpio_speed_50mhz;
可見,進行管腳初始化時,對管腳的每個可操作狀態進行賦值是非常有必要的,這樣可以避免許多莫名其妙的錯誤。

一般不建議以gpio_inittypedef定義全域性變數,可能會因為少賦值而引起不必要的錯誤。

stm32埠初始化

今天上課,點亮數碼管,gpio初始化後,數碼管上有一段亂碼。要讓這亂碼消失掉,需要改變gpio初始化的順序。在gpio埠使能後,要加odr 埠暫存器 控制 gpio inittypedef gpio initstructure 定義乙個結構體 rcc apb2periphclockcmd rcc a...

STM32初始化SD卡流程

1,初始化sdio外設,關閉sdio時鐘。2,上電,開啟時鐘,注意此時時鐘應不能超過400khz,且此時是只有一位資料線,要到初始化完成後再調時鐘與資料線寬度。3,延時最低74個時鐘週期。使時鐘與sd卡穩定,否則會出錯。4,傳送cmd0,需要返回0x01,進入idle狀態 5,為了區別sd卡是2.0...

stm32外設初始化和設定過程

1.主應用檔案中宣告ppp inittypedef結構體變數。例 gpio inittypedef gpio initstructure 2.為定義的結構體變數設定需要的值。設定變數中所有的值 ppp initstructure.member1 value1 ppp initstructure.me...