第一節 硬件解讀
先看看原理圖:
和普通的開發板不同,藍橋杯嵌入式的開發板通過一個74HC573芯片之后,連接到LED和限流電阻。那么74HC573是什么呢?我們可以通過數據手冊找到他的真值表,如下:
從上表我們可以得到一個結論,只有在OE#和LE分別為L和H的時候,Output才會隨Input變化而變化,所以我們控制了OE#和LE,只要其中一個不符合條件,不管Input是什么,Output的狀態都不會改變,從而保護了Output的狀態,得到鎖存的效果,如果大家需要補充這里的知識,建議大家去看數電的知識,或者百度搜索“鎖存器”。
從上面的原理圖我們可以看出,OE#已經是低電平了,那么就只有LE了,也就是PD2引腳,當PD2引腳是高電平,單片機就可以控制LED了;如果是低電平,就無法控制了。例如,我們讓LD1點亮的流程應該是:單片機控制PD2為高電平,打開鎖存器,讓單片機可以控制LED->單片機控制PC8引腳為低電平,讓LD1亮->單片機控制PD2為低電平,關閉鎖存器,讓單片機無法控制LED。
第二節CubeMX配置
第一步:雙擊打開STM32CubeMX,,如下圖,新建項目。注意:新建項目本教程只介紹一次,以后項目的建立不在重復。
第二步:在英文狀態下搜索芯片:STM32G431RBT6,選后選擇對應的芯片即可。注意:搜索芯片時,確保輸入法在英文的狀態下;選擇芯片的時候,可以選擇后綴帶有“TR”的,2者芯片完全一致,不影響比賽。
第三步:配置下載器,如下圖。注意:本教程下載器配置是配置一遍,后續教程將不再重復。
第四步:配置STM32的時鐘,注意:本教程時鐘配置是配置一遍,后續教程將不再重復。如下:
第五步:選擇項目信息,如下配置:2處是項目的名字;3處是項目的路徑;4處是編譯器;5處是編譯器版本。注意:項目路徑不能包含中文等其他非法字符;編譯器一定要選擇MDK-ARM;編譯器版本一定要選擇v5。后續教程將不在重復本步操作。
第六步:如下圖,將3,4處的按鈕勾選,點擊5處,生成Keil工程。注意:后續教程將不在重復本步操作。
第七步:點擊上步的5處之后,會有一個對話框,意思分別是:打開項目文件夾位置;打開項目;關閉本窗口。注意:這里靈活處理,打開文件夾和項目都可以。后續教程將不在重復本步操作。
第八步:注意,以上操作是建立工程必備的操作,以后的教程不在重復?,F在重新打開STM32CubeMX,開始配置LED的相關引腳。
第九步:重新生成代碼。
第三節MDK代碼
第一步,編譯代碼,檢查STM32CubeMX生成的代碼是否正常。如下圖,點擊1處編譯,之后在2處可以看見:0錯誤,0警告。注意:后續教程將不在重復本步操作。
第二步:配置下載器,這一步很多步驟,希望大家仔細一點,一步一步來。注意:不要忘記點擊“OK”,后續教程將不在重復本步操作。
第三步:新建.h文件。在“項目名/Core/Inc”中新建一個“Zsdz.h”的文件。注意:后續教程將不在重復本步操作。
第四步:新建.c文件。在“項目名/Core/Src”中新建一個“Zsdz.c”的文件。注意:后續教程將不在重復本步操作。
第五步:添加“Zsdz.c”文件。點擊1處,可以看見項目的所有的文件,點擊2,3處,準備添加“Zsdz.c”文件,但是發現沒有“Zsdz.c”文件,如下圖:需要返回到上一層文件目錄中,點擊4處。注意:后續教程將不在重復本步操作。
如下圖:雖然沒有發現“Zsdz.c”文件,但是我們看見了Core文件夾,還記得我們的“Zsdz.c”文件保存在哪嗎?在“項目名/Core/Src”中,所以我們進入到“/Core/Src”,找到“Zsdz.c”文件即可。注意:后續教程將不在重復本步操作。
第六步:如下圖,代表添加成功。注意:后續教程將不在重復本步操作。
第七步:注意:如果利用STM32CubeMX生成MDK項目,“Zsdz.c”文件可能會從MDK項目中移除,請重新添加。
第八步:編寫“Zsdz.c”文件的代碼,如下:注意:后續教程將不在重復本步操作。
第九步:進入到“Zsdz.h”文件,右鍵,選擇“Go to Headerfile‘Zsdz.h’”。注意:后續教程將不在重復本步操作。
第十步:編寫“Zsdz.h”文件的代碼,如下:注意:后續教程將不在重復本步操作。
第十一步:在Main中添加“Zsdz.h文件”,如下:注意:只可以添加在“USER CODE END”和“USER CODE BEGIN”之間,否則等下次利用STM32CubeMX生成MDK項目時,不在“USER CODE END”和“USER CODE BEGIN”之間的代碼會被覆蓋。
第十二步:編寫LED的函數模板,具體如下:注意:不要忘記聲明gpio.c文件。注意:后續教程將不在重復本步操作。
第十三步:以上就是LED所有的封裝函數了,我們在“Zsdz.h”文件中聲明他們,如下圖:注意:后續教程將不在重復本步操作。
第十四步:現在隨便在main函數中寫幾個,看看效果。
第十五步:編譯檢查代碼并下載。點擊1處編譯代碼,之后在2處可以看見0錯誤0警告。代碼沒有問題之后,點擊3處下載代碼,在4處看見Flash Load finished at xxxx,就證明代碼下載成功。注意:后續教程將不在重復本步操作。
第四節實驗現象
現象:500ms為間隔的流水燈。
來源:撞上電子微信公眾號
-
led
+關注
關注
242文章
23297瀏覽量
661358 -
嵌入式
+關注
關注
5086文章
19140瀏覽量
305863 -
流水燈
+關注
關注
21文章
433瀏覽量
59737
發布評論請先 登錄
相關推薦
評論