實驗 1 LED 閃爍實驗
STM32 最簡單的外設莫過于 IO 口的高低電平控制了,本章將通過一個經典
的 LED 閃爍程序,帶大家開啟 STM32 之旅, 通過本章的學習, 你將了解到
STM32 的 IO 口作為輸出使用的方法。在本章中我們將通過代碼控制普中科技
STM32 開發板上的 8個 LED,實現閃爍燈的效果。 本章分為以下學習目標:
1、 了解 STM32用有幾種 GPIO模式。
2、 怎么學會設置 STM32的GPIO輸出控制 LED燈。
1.1 硬件設計
首先我們來看一下我們開發板上面 LED的接線圖:
LED 燈接線圖
從上面的圖,我們可以看到 LED 燈是接到單片機的 PC 口的 PC0 到 PC7。而
點 亮一盞LED的原理就是把相應LED接到單片機的相應的IO口輸出低電平, IO
口 輸出為高電平就能夠熄滅 LED,所以要實現 LED閃爍也就是將單片機 PC管腳
每間隔一段時間不輸出一個高低電平脈沖即可。
1.2: STM32 的IO 口簡介
本章將要實現的是控制普中科技 STM32開發板上的8個 LED 實現LED燈閃
爍的效果, 該實驗的關鍵在于如何控制 STM32 的 IO 口輸出。了解了 STM32 的
IO 口如何輸出的,就可以實現閃爍燈了。通過這一章的學習, 你將初步掌握
STM32 基本 IO 口的使用,而這是邁向 STM32 的第一步。這一章節因為是第一
個實驗章節,所以我們在這一章將講解一些知識為后面的實驗做鋪墊。在講解
STM32 的 GPIO之前,首先打開我們光盤的第一個實驗工程 LED 閃爍實驗,可以
看到我們的實驗工程目錄:
接下來我們逐一講解一下我們的工程目錄下面的組以及重要文件。
① StdPeriph_Driver 下面存放的是 ST 官方提供的固件庫函數,里面的函數我
們可以根據需要添加和刪除,這里面的文件內容用戶不需要修改。
② Startup 下面存放的是固件庫必須的啟動文件。這里面的文件用戶不需要修
改。
③ cmsis 下面存放的是固件庫必須的核心文件。這里面的文件用戶不需要修改。
④ APP 下面存放的是每個實驗的外設驅動代碼,他的實現是通過調用
StdPeriph_Driver 內 的 固 件 庫 文 件 實 現 的 , 比 如 led.c 里 面 調 用
stm32f10x_gpio.c 里面的函數對 led 進行初始化,這里面的函數是講解的重
點。 后面的實驗中可以看到會引入多個源文件。
⑤ user 下面存放的主要是用戶代碼。 stm32f10x_it.c 里面存放的是中斷服
務函數,public存放的是公用函數,Main.c 函數主要存放的是主函數了,這個
大家應該很清楚。
準備內容我們就講解到這里,接下來我們就要進入我們 LED 閃爍實驗的講解
部分了。 這里需要說明一下,我們在講解固件庫之前會首先對重要寄存器進行
一個講解,這樣是為了大家對寄存器有個初步的了解。大家學習固件庫,并不需
要記住每個寄存器的作用,而只是通過了解寄存器來對外設一些功能有個大致的
了解,這樣對以后的學習也很有幫助。
首先要提一下,在固件庫中,GPIO 端口操作對應的庫函數函數以及相關定
義在文件 stm32f10x_gpio.h 和 stm32f10x_gpio.c 中。STM32 的 IO 口相比
51 而言要復雜得多,所以使用起來也困難很多。 首先 STM32 的 IO 口可以由
軟件配置成如下 8 種模式:
余下內容請下載附件
源碼:
- *
- --------------------------------------------------------------------------------
- * 實 驗 名 : LED燈閃爍實驗
- * 實驗說明 : 通過delay延時實現LED燈閃爍效果
- * 連接方式 :
- * 注 意 : 延時函數及顯示函數在led.c文件內
- *******************************************************************************/
- #include "public.h" //公共函數頭文件
- /****************************************************************************
- * Function Name : main
- * Description : Main program.
- * Input : None
- * Output : None
- * Return : None
- ****************************************************************************/
- int main()
- {
- LED_Init(); //LED端口及時鐘初始化
- while(1)
- {
- led_display(); //led顯示
- }
- }
復制代碼
余下內容請下載附件:
32單片機LED閃爍.zip
(2.08 MB, 下載次數: 52)
2017-5-6 09:28 上傳
點擊文件名下載附件
|