色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

藍橋杯的第一個項目,點亮一個LED

撞上電子 ? 2025-01-02 21:02 ? 次閱讀

第一節 IO簡介

GPIO是通用輸入/輸出端口的簡稱,是STM32可控制的引腳。GPIO的引腳與外部硬件設備連接,可實現與外部通訊、控制外部硬件或者采集外部硬件數據的功能。每個GPIO內部都有這樣的一個電路結構:

d5c6ed70-c909-11ef-9434-92fbcf53809c.png


這邊的電路圖稍微提一下:

保護二極管:IO引腳上下兩邊兩個二極管用于防止引腳外部過高、過低的電壓輸入。當引腳電壓高于VDD時,上方的二極管導通;當引腳電壓低于VSS時,下方的二極管導通,防止不正常電壓引入芯片導致芯片燒毀。但是盡管如此,還是不能直接外接大功率器件,須加大功率及隔離電路驅動,防止燒壞芯片或者外接器件無法正常工作。

P-MOS管和N-MOS管:由P-MOS管和N-MOS管組成的單元電路使得GPIO具有“推挽輸出”和“開漏輸出”的模式。這里的電路會在下面很詳細地分析到。

Q-TTL肖特基觸發器:信號經過觸發器后,模擬信號轉化為0和1的數字信號。但是,當GPIO引腳作為ADC采集電壓的輸入通道時,用其“模擬輸入”功能,此時信號不再經過觸發器進行TTL電平轉換。ADC外設要采集到的原始的模擬信號。

這里需要注意的是,在查看數據手冊中,會看到有“FT”一列,這代表著這個GPIO口時兼容3.3V和5V的;如果沒有標注“FT”,就代表著不兼容5V。

GPIO支持4種輸入模式(浮空輸入、上拉輸入、下拉輸入、模擬輸入)和4種輸出模式(開漏輸出、開漏復用輸出、推挽輸出、推挽復用輸出)。同時,GPIO還支持三種最大翻轉速度。每個I/O口可以自由編程,但I/O口寄存器必須按32位字被訪問。下面將具體介紹GPIO的這八種工作方式。

1,浮空輸入模式

浮空輸入模式下,I/O端口的電平信號直接進入輸入數據寄存器。也就是說,I/O的電平狀態是不確定的,完全由外部輸入決定;如果在該引腳懸空(在無信號輸入)的情況下,讀取該端口的電平是不確定的。

2,上拉輸入模式

d5e3aea6-c909-11ef-9434-92fbcf53809c.png

上拉輸入模式下,I/O端口的電平信號直接進入輸入數據寄存器。但是在I/O端口懸空(無信號輸入)的情況下,輸入端的電平可以保持在高電平;并且在I/O端口輸入為低電平的時候,輸入端的電平也還是低電平。

3,下拉輸入模式

d60357c4-c909-11ef-9434-92fbcf53809c.png

下拉輸入模式下,I/O端口的電平信號直接進入輸入數據寄存器。但是在I/O端口懸空(在無信號輸入)的情況下,輸入端的電平可以保持在低電平;并且在I/O端口輸入為高電平的時候,輸入端的電平也還是高電平。

4,模擬輸入模式

d6217aba-c909-11ef-9434-92fbcf53809c.png

模擬輸入模式下,I/O端口的模擬信號(電壓信號,而非電平信號)直接模擬輸入到片上外設模塊,比如ADC模塊等等。

5,開漏輸出模式

d637a812-c909-11ef-9434-92fbcf53809c.png

開漏輸出模式下,通過設置位設置/清除寄存器或者輸出數據寄存器的值,途經N-MOS管,最終輸出到I/O端口。這里要注意N-MOS管,當設置輸出的值為高電平的時候,N-MOS管處于關閉狀態,此時I/O端口的電平就不會由輸出的高低電平決定,而是由I/O端口外部的上拉或者下拉決定;當設置輸出的值為低電平的時候,N-MOS管處于開啟狀態,此時I/O端口的電平就是低電平。同時,I/O端口的電平也可以通過輸入電路進行讀取;注意,I/O端口的電平不一定是輸出的電平。

6,開漏復用輸出模式

d64e808c-c909-11ef-9434-92fbcf53809c.png

開漏復用輸出模式,與開漏輸出模式很是類似。只是輸出的高低電平的來源,不是讓CPU直接寫輸出數據寄存器,取而代之利用片上外設模塊的復用功能輸出來決定的。

7,推挽輸出模式

d6551f46-c909-11ef-9434-92fbcf53809c.png

推挽輸出模式下,通過設置位設置/清除寄存器或者輸出數據寄存器的值,途經P-MOS管和N-MOS管,最終輸出到I/O端口。這里要注意P-MOS管和N-MOS管,當設置輸出的值為高電平的時候,P-MOS管處于開啟狀態,N-MOS管處于關閉狀態,此時I/O端口的電平就由P-MOS管決定:高電平;當設置輸出的值為低電平的時候,P-MOS管處于關閉狀態,N-MOS管處于開啟狀態,此時I/O端口的電平就由N-MOS管決定:低電平。同時,I/O端口的電平也可以通過輸入電路進行讀??;注意,此時I/O端口的電平一定是輸出的電平。

8,推挽復用輸出模式

d675a8ce-c909-11ef-9434-92fbcf53809c.png

推挽復用輸出模式,與推挽輸出模式很是類似。只是輸出的高低電平的來源,不是讓CPU直接寫輸出數據寄存器,取而代之利用片上外設模塊的復用功能輸出來決定的。

第二節 硬件解讀

先看看原理圖:

d69600ce-c909-11ef-9434-92fbcf53809c.png

開發板上面一共有3顆可編程LED,控制的引腳分別是PB2,PB5和PB12,LED右側通過一共限流電阻上拉到3.3V,所有stm32給一個低電平就會點亮LED,反之則熄滅。

第三節 CubeMX配置

第一步:雙擊打開STM32CubeMX,如下圖,新建項目。【注意:新建項目本教程只介紹一次,以后項目的建立不在重復】

d6a76940-c909-11ef-9434-92fbcf53809c.png

第二步:在英文狀態下搜索芯片:STM32WLE5CCU6【注意:盡可能靠近該芯片,不一定是STM32WLE5CCU6,不同STM32CubeMX版本,芯片的名字不一樣的】選后選擇對應的芯片即可。

d6c3a876-c909-11ef-9434-92fbcf53809c.png

第三步:在1處查看芯片的視圖,選擇2處后可以看見芯片所有的功能,選擇3處的RCC時鐘,在4處配置外部高速時鐘,一切配置完了之后,會在5處看見GPIO變綠色。,如下圖。【注意:本教程晶振配置僅配置一遍,后續教程將不再重復】

d6e16a8c-c909-11ef-9434-92fbcf53809c.png

第四步:在1處切換到時鐘樹頁面,在2處配置外部晶振大小,藍橋杯物聯網開發板外接高速晶振為32MHZ,所以這里配置成32MZH,在3處配置HCLK時鐘為最大時鐘,最大時鐘為48MHZ。如下圖。【注意:本教程時鐘樹配置僅配置一遍,后續教程將不再重復】

d6fa23ce-c909-11ef-9434-92fbcf53809c.png

d719137e-c909-11ef-9434-92fbcf53809c.png

第五步:配置下載器,在3處選擇DEBUG,在4處選擇JTAG模式,之后就可以看見5處和6處的GPIO變綠色了。【注意:本教程下載器配置僅配置一遍,后續教程將不再重復】

d73486c2-c909-11ef-9434-92fbcf53809c.png

第六步:配置STM32的PB2引腳為GPIO_Output,如下圖:

d75d21b8-c909-11ef-9434-92fbcf53809c.png

第七步:以同樣配置STM32的PB5和PB12引腳為GPIO_Output,如下圖:

d77d7d82-c909-11ef-9434-92fbcf53809c.png

第八步:在1處可以看見選中GPIO的配置,在2處看見GPIO的輸入輸出的引腳,在3處選擇PB2,在4處配置GPIO的默認高低電平,因為低電平LED亮,我們默認低電平,在5處配置為上拉,和硬件配置保持一致,在6處配置用戶標簽,便于管理。如下圖:

d7b51134-c909-11ef-9434-92fbcf53809c.png

其中:具體配置信息如下:

GPIO output leve:表示上電的默認電平,可配置高(High)或者低(Low);

GPIO mode:表示輸出模式,可為Output Push Pull(推挽輸出)或Output Open Drain(開漏輸出);

GPIO Pull-up/Pull-down:表示是否上下拉,可配置為上拉(Pull-up)或者下拉(Pull-down)或不上拉也不下拉(No Pull-up and no Pull-down);

Maximum output speed:表示輸出速度,可配置為低速(Low)或者中速(Medium)或高速(High)或超高速(Very High);

User Label:表示用戶標簽,可修改IO口名稱,比如可寫入LED,把IO口名稱變為LED;

第九步:和PB2一樣配置其他2個GPIO。

第十步:選擇項目信息,如下配置:2處是項目的名字;3處是項目的路徑;4處是編譯器;5處是編譯器版本。【注意:項目路徑不能包含中文等其他非法字符;編譯器一定要選擇MDK-ARM;編譯器版本要選擇最新的,本教程為v5.37。后續教程將不在重復本步操作】

d7ca4810-c909-11ef-9434-92fbcf53809c.png

第十一步:如下圖,將3,4處的按鈕勾選,點擊5處,生成Keil工程。注意:后續教程將不在重復本步操作】

d7e1762a-c909-11ef-9434-92fbcf53809c.pngd810f71a-c909-11ef-9434-92fbcf53809c.png

第十二步:點擊上步的5處之后,會有一個對話框,意思分別是:打開項目文件夾位置;打開項目;關閉本窗口。注意:這里靈活處理,打開文件夾和項目都可以。后續教程將不在重復本步操作】

d824f3b4-c909-11ef-9434-92fbcf53809c.png

第四節 MDK代碼

第一步,編譯代碼,檢查STM32CubeMX生成的代碼是否正常。如下圖,點擊1處編譯,之后在2處可以看見一個警告,是因為MDK版本太新,高于CubeMX選擇的V5.37,導致編譯器不一樣,但是不影響程序運行。注意:后續教程將不在重復本步操作】

d83559fc-c909-11ef-9434-92fbcf53809c.png

第二步:配置下載器,這一步很多步驟,希望大家仔細一點,一步一步來。注意:不要忘記點擊“OK”,后續教程將不在重復本步操作】

d8436e52-c909-11ef-9434-92fbcf53809c.png

第三步:新建.h文件。在“項目名/Core/Inc”中新建一個“zsdz.h”的文件。注意:后續教程將不在重復本步操作】

d86dff00-c909-11ef-9434-92fbcf53809c.png

第四步:新建.c文件。在“項目名/Core/Src”中新建一個“zsdz.c”的文件。注意:后續教程將不在重復本步操作】

d881fa32-c909-11ef-9434-92fbcf53809c.png

第五步:添加“zsdz.c”文件。點擊1處,可以看見項目的所有的文件,點擊2,3處,準備添加“zsdz.c”文件,但是發現沒有“zsdz.c”文件,如下圖:需要返回到上一層文件目錄中,點擊4處。注意:后續教程將不在重復本步操作】

d8930188-c909-11ef-9434-92fbcf53809c.png

如下圖:雖然沒有發現“zsdz.c”文件,但是我們看見了Core文件夾,還記得我們的“zsdz.c”文件保存在哪嗎?在“項目名/Core/Src”中,所以我們進入到“/Core/Src”,找到“zsdz.c”文件即可。注意:后續教程將不在重復本步操作】

d8ad1500-c909-11ef-9434-92fbcf53809c.pngd8cfedf0-c909-11ef-9434-92fbcf53809c.png

第六步:如下圖,代表添加成功。注意:后續教程將不在重復本步操作】

d8e2e220-c909-11ef-9434-92fbcf53809c.png

第七步:如下,點擊1處,可以看見MDK中的“zsdz.c”文件。注意:如果利用STM32CubeMX生成MDK項目,“zsdz.c”文件可能會從MDK項目中移除,請重新添加】

d8fe7026-c909-11ef-9434-92fbcf53809c.png

第八步:編寫“zsdz.c”文件的代碼,如下:注意:后續教程將不在重復本步操作】

d91a45da-c909-11ef-9434-92fbcf53809c.png

第九步:進入到“zsdz.h”文件,右鍵,選擇“Go to Headerfile‘zsdz.h’”。注意:后續教程將不在重復本步操作】

d9362110-c909-11ef-9434-92fbcf53809c.png

第十步:編寫“Zsdz.h”文件的代碼,如下:注意:后續教程將不在重復本步操作】

d94d2bda-c909-11ef-9434-92fbcf53809c.png

第十一步:在Main中添加“zsdz.h文件”,如下:注意:只可以添加在“USER CODE BEGIN”和“USER CODE BEGINEND”之間,否則等下次利用STM32CubeMX生成MDK項目時,不在“USER CODE BEGIN”和“USER CODE END”之間的代碼會被覆蓋】

d9619cd2-c909-11ef-9434-92fbcf53809c.png

第十二步:編寫LED的函數模板,具體如下:注意:不要忘記聲明gpio.c文件。注意:后續教程將不在重復本步操作】

d9719786-c909-11ef-9434-92fbcf53809c.png

第十三步:以上就是LED所有的封裝函數了,我們在“zsdz.h”文件中聲明他們,如下圖:注意:后續教程將不在重復本步操作】

d9806252-c909-11ef-9434-92fbcf53809c.png

第十四步:現在隨便在main函數中寫幾個,看看效果。

d990b9ea-c909-11ef-9434-92fbcf53809c.png

第十五步:編譯檢查代碼并下載。點擊1處編譯代碼,之后在2處可以看見0錯誤0警告。代碼沒有問題之后,點擊3處下載代碼,在4處看見Flash Load finished at xxxx,就證明代碼下載成功。注意:后續教程將不在重復本步操作】

d9988bc0-c909-11ef-9434-92fbcf53809c.png


第五節 實驗現象

注意:

1,請用USB線連接電腦與開發板。

2,請選擇A開發板。

現象:AL2以400ms為間隔閃爍。

來源:撞上電子微信公眾號

版權:東莞市東城墨竹公子電子工作室

日期:2024.11.03


第六節 課后作業

請讓AL1長亮,AL2以500ms為間隔閃爍,AL3以1000ms為間隔閃爍。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • led
    led
    +關注

    關注

    242

    文章

    23299

    瀏覽量

    661446
  • STM32
    +關注

    關注

    2270

    文章

    10906

    瀏覽量

    356480
  • GPIO
    +關注

    關注

    16

    文章

    1205

    瀏覽量

    52163
  • 藍橋杯
    +關注

    關注

    1

    文章

    128

    瀏覽量

    10158
收藏 人收藏

    評論

    相關推薦

    請問點亮第一個led使用的遠程怎么操作?

    我選的橋接模式,unbanto 不能上網,和視屏中不樣,還有就是關于點亮第一個led中使用的遠程怎末操作,必須使用有線嗎?無線行不行
    發表于 04-22 05:20

    如何使用STM32CUBEMX點亮你的第一個LED?

    如何使用STM32CUBEMX點亮你的第一個LED?
    發表于 10-11 09:35

    如何使用寄存器點亮第一個LED?

    如何使用寄存器點亮第一個LED
    發表于 11-30 07:44

    如何用stm32cubeMX+MDK在藍橋物聯網開發板上面點亮LED

    第一節硬件解讀任何實驗都是從點亮LED開始的
    發表于 01-06 07:51

    如何去實現點亮第一個LED的設計呢

    點亮第一個LED/**************************************************************************************實驗現象
    發表于 01-07 08:16

    點亮人生中的第一個流水燈

    上期回顧:上篇文章我寫了單片機入門(二):點亮奇數位/偶數位LED燈**單片機入門(4):點亮人生中的第一個流水燈、需求分析做
    發表于 01-19 07:59

    如何點亮第一個LED燈?

    如何點亮第一個LED燈?
    發表于 01-20 06:58

    點亮第一個閃亮led

    單片機點亮第一個
    發表于 03-28 14:26 ?1次下載

    51單片機基礎點亮第一個LED實驗

    點亮第一個LED實驗
    發表于 11-23 16:36 ?15次下載
    51單片機基礎<b class='flag-5'>點亮</b><b class='flag-5'>第一個</b><b class='flag-5'>LED</b>實驗

    藍橋嵌入式主板G4】第三章 點亮LED

    第一節硬件解讀任何實驗都是從點亮LED開始的
    發表于 11-23 18:21 ?7次下載
    【<b class='flag-5'>藍橋</b><b class='flag-5'>杯</b>嵌入式主板G4】第三章 <b class='flag-5'>點亮</b><b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>LED</b>

    STM32+cubeMX第一個工程,點亮LED

    STM32+cubeMX第一個工程,點亮LED打開cubeMX選擇new project創建stm32工程,芯片選擇stm32f103c
    發表于 12-03 13:06 ?0次下載
    STM32+cubeMX<b class='flag-5'>第一個</b>工程,<b class='flag-5'>點亮</b><b class='flag-5'>LED</b>

    單片機點亮第一個小燈

    點亮第一個小燈1、設計要求用開關控制LED亮滅。2、硬件設計Proteus ISIS 仿
    發表于 12-17 18:25 ?14次下載
    單片機<b class='flag-5'>點亮</b><b class='flag-5'>第一個</b>小燈

    第一個STM32CubeIDE項目

    使用STM32CubeIDE的第一個項目開始第一個項目添加代碼今天開始做一個STM32CubeIDE的
    發表于 12-29 19:29 ?11次下載
    <b class='flag-5'>第一個</b>STM32CubeIDE<b class='flag-5'>項目</b>

    藍橋物聯網】第四章 ?點亮LED

    點擊上方「撞上電子」關注我們第一節硬件解讀任何實驗都是從點亮
    的頭像 發表于 08-10 18:22 ?772次閱讀
    【<b class='flag-5'>藍橋</b><b class='flag-5'>杯</b>物聯網】第四章 ?<b class='flag-5'>點亮</b><b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>LED</b>

    藍橋嵌入式主板G4】第三章 點亮LED

    點擊上方「撞上電子」關注我們第一節硬件解讀任何實驗都是從點亮
    的頭像 發表于 08-17 09:52 ?1328次閱讀
    【<b class='flag-5'>藍橋</b><b class='flag-5'>杯</b>嵌入式主板G4】第三章 <b class='flag-5'>點亮</b><b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>LED</b>
    主站蜘蛛池模板: 免费被靠视频动漫| 俄罗斯大肥BBXX| 欧美精品AV精品一区视频| 动漫美女人物被黄漫在线看| 夜夜穞狠狠穞| 少妇仑乱A毛片| 免费在线观看国产| 国模玲玲自拍337p| 成人亚洲视频在线观看| 中国老太60old mantv| 午夜剧场1000| 皮皮在线精品亚洲| 久久黄色免费| 国产精品高清视频在线| www.x日本| 最近2018年手机中文字幕| 亚洲高清无在码在线无弹窗| 日韩美一区二区| 蜜芽在线播放免费人成日韩视频| 国产在线精品亚洲| 国产成人精品综合在线| wwwwxxxxx中国| 60老妇性xxxxhd| 一本到道免费线观看| 性欧美video另类hd高清| 色一情一乱一伦一区二区三区| 男人J桶进男人屁股过程| 久久视热频国产这里只有精品23| 黑色丝袜美女被网站| 国产午夜视频在线| 国产3级在线| 产传媒61国产免费| chinese帅哥gv在线看| 91嫩草国产在线观看免费| 又亲又揉摸下面视频免费看| 亚洲精品一区二区在线看片| 午夜福利32集云播| 无码专区无码专区视频网网址| 日韩精品 电影一区 亚洲高清| 欧洲最强rapper潮水喷视频| 欧美男男网站免费观看videos|