欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

藍(lán)橋杯的第一個項目,點亮一個LED

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

第一節(jié) IO簡介

GPIO是通用輸入/輸出端口的簡稱,是STM32可控制的引腳。GPIO的引腳與外部硬件設(shè)備連接,可實現(xiàn)與外部通訊、控制外部硬件或者采集外部硬件數(shù)據(jù)的功能。每個GPIO內(nèi)部都有這樣的一個電路結(jié)構(gòu):

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


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

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

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

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

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

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

1,浮空輸入模式

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

2,上拉輸入模式

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

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

3,下拉輸入模式

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

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

4,模擬輸入模式

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

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

5,開漏輸出模式

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

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

6,開漏復(fù)用輸出模式

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

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

7,推挽輸出模式

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

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

8,推挽復(fù)用輸出模式

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

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

第二節(jié) 硬件解讀

先看看原理圖:

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

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

第三節(jié) CubeMX配置

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

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

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

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

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

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

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

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

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

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

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的默認(rèn)高低電平,因為低電平LED亮,我們默認(rèn)低電平,在5處配置為上拉,和硬件配置保持一致,在6處配置用戶標(biāo)簽,便于管理。如下圖:

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

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

GPIO output leve:表示上電的默認(rèn)電平,可配置高(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:表示用戶標(biāo)簽,可修改IO口名稱,比如可寫入LED,把IO口名稱變?yōu)長ED;

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

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

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

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

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

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

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

第四節(jié) MDK代碼

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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的函數(shù)模板,具體如下:注意:不要忘記聲明gpio.c文件。注意:后續(xù)教程將不在重復(fù)本步操作】

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

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

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

第十四步:現(xiàn)在隨便在main函數(shù)中寫幾個,看看效果。

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

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

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


第五節(jié) 實驗現(xiàn)象

注意:

1,請用USB線連接電腦與開發(fā)板。

2,請選擇A開發(fā)板。

現(xiàn)象:AL2以400ms為間隔閃爍。

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

版權(quán):東莞市東城墨竹公子電子工作室

日期:2024.11.03


第六節(jié) 課后作業(yè)

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • led
    led
    +關(guān)注

    關(guān)注

    242

    文章

    23375

    瀏覽量

    663388
  • STM32
    +關(guān)注

    關(guān)注

    2272

    文章

    10925

    瀏覽量

    357706
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1217

    瀏覽量

    52411
  • 藍(lán)橋杯
    +關(guān)注

    關(guān)注

    1

    文章

    129

    瀏覽量

    10202
收藏 人收藏

    評論

    相關(guān)推薦

    請問點亮第一個led使用的遠(yuǎn)程怎么操作?

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

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

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

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

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

    如何用stm32cubeMX+MDK在藍(lán)橋物聯(lián)網(wǎng)開發(fā)板上面點亮LED

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

    如何去實現(xiàn)點亮第一個LED的設(shè)計呢

    點亮第一個LED/**************************************************************************************實驗現(xiàn)象
    發(fā)表于 01-07 08:16

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

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

    如何點亮第一個LED燈?

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

    點亮第一個閃亮led

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

    51單片機基礎(chǔ)點亮第一個LED實驗

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

    藍(lán)橋嵌入式主板G4】第三章 點亮LED

    第一節(jié)硬件解讀任何實驗都是從點亮LED開始的
    發(fā)表于 11-23 18:21 ?7次下載
    【<b class='flag-5'>藍(lán)橋</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創(chuàng)建stm32工程,芯片選擇stm32f103c
    發(fā)表于 12-03 13:06 ?0次下載
    STM32+cubeMX<b class='flag-5'>第一個</b>工程,<b class='flag-5'>點亮</b><b class='flag-5'>LED</b>

    單片機點亮第一個小燈

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

    第一個STM32CubeIDE項目

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

    藍(lán)橋物聯(lián)網(wǎng)】第四章 ?點亮LED

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

    藍(lán)橋嵌入式主板G4】第三章 點亮LED

    點擊上方「撞上電子」關(guān)注我們第一節(jié)硬件解讀任何實驗都是從點亮
    的頭像 發(fā)表于 08-17 09:52 ?1534次閱讀
    【<b class='flag-5'>藍(lán)橋</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>