剛到公司實習,要學習stm32開發,boss給了一塊戰艦開發板,讓我自己寫乙個功能要用在公司的產品上。難啊。。。以前根本沒接觸過stm32,只能一步一步慢慢來,利用晚上利用週末惡補一下。哎,算是為了大學前兩年還債吧。
一~跑馬燈實驗(gpio輸出)
實驗環境:keil4
實驗平台:戰艦stm32開發板
gpio口的高低電平控制是stm32最簡單的外設控制。stm32的i/o口共有八種配置模式,四種輸入,四種輸出,分別是浮空輸入,上拉輸入,下拉輸入,模擬輸入,開漏輸出,推挽輸出,推挽式復用功能,開漏復用功能。其中常用的有,浮空輸入,上/下拉輸入,推挽輸出(串列埠),復用輸出。
要配置gpio口必須用到gpio初始化函式void gpio_init(gpio_typedef* gpiox,gpio_inittypedef*gpio_initstruct),這裡有兩個引數,第乙個用來指示gpio範圍,第二個為結構體指標,結構體型別為gpio_inittypedef。其中配置內容有三個,gpio_initstructure.gpio_pin(引腳號),gpio_initstructure.gpio_mode(輸入輸出模式)gpio_initstructure.gpio_speed(輸出速度,只有10mhz,2mhz,50mhz三種),到此關於gpio的初始化算是完成。
但是,在初始化gpio之前必須先通過rcc_apb2pperiphclockcmd()函式使能i/o口時鐘。
使用格式為rcc_apb2pperiphclockcmd(gpiox,enable)。
最後gpio口輸出是通過函式gpio_setbits()和gpio_resetbits()兩個函式控制的。例如要將gpioa的引腳5設定為高電平:
gpio_setbits(gpioa,gpio_pin_5);
將其設為低電平的方法:
gpio_resetbits(gpioa,gpio_pin_5);
i/o操作的具體步驟為:
1.使能i/o口時鐘,呼叫rcc_apb2pperiphclockcmd()函式
2.初始化i/o引數,呼叫gpio_init()函式
3.操作i/o口
注:原始碼當中mian.c中操作gpio用的是位操作的辦法,初學者不建議
用。附上較為簡易的庫函式操作語句如下:
gpio_setbits(gpiob,gpio_pin_5);
gpio_setbits(gpioe,gpio_pin_5);
delay_ms(500);
gpio_resetbits(gpiob,gpio_pin_5);
gpio_resetbits(gpioe,gpio_pin_5);
delay_ms(500);
stm32學習筆記
開漏模式輸出 輸出暫存器上的 0 啟用 n mos,而輸出暫存器上的 1 將埠 置於高阻狀態 p mos從 被啟用 推挽模式輸出 輸出暫存器上的 0 啟用 n mos,而輸出暫存器上的 1 將啟用 p mos。上拉輸入 輸入高電平,然後接乙個 上拉電阻 保護作用 讀取此時的引腳電平為高電平 下拉輸入...
學習筆記 stm32
簡介cortex核心 cortex m4核心 庫開發與暫存器開發的關係 stm32 韌體庫與 cmsis 標準 內部結構 最小系統 小馬哥四軸原始碼學習 新建工程 點燈!gpio 按鍵暫存器對映 時鐘系統 systick定時器 埠復用和重對映 串列埠串列埠試驗函式分析 中斷看門狗 通用定時器 階段性...
STM32 學習筆記
axf error l6218e undefined symbol referred from x.o 例如 mdk 報錯 stm32f103.axf error l6218e undefined symbol time1 8 init referred from led.o 分析 undefine...