微控制器初始化時,需要注意將初始化中各項明確賦值,不能忽略,如以如下**對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...