在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

如何快速成為點燈大師?

dyquk4xk2p3d ? 來源:良許Linux ? 作者:良許Linux ? 2022-12-13 09:48 ? 次閱讀

大家好,我是良許。

隨著疫情的平穩,最近全國各地都陸續放開了。但很不幸,我的幾個號主朋友不小心中招了,成了「陽過」。

良許在此提醒各位朋友,放開不等于躺平,該做的防護一個都不能少。雖然現在病毒沒有剛爆發時的可怕,但也絕不是大號的感冒。根據身邊的陽大俠反饋,一旦中招那是相當不舒服的,千萬不要以身試毒。

好了,回歸正題。最近在錄制一套 STM32 的課程,導致公眾號的原創變少了,跟各位朋友說聲抱歉哈。從現在開始,我也在公眾號連更一些 STM32 相關的內容,畢竟俺是嵌入式開發工程師哦(不是你們以為的運維哈)~

學習嵌入式,最經典的第一個實驗就是點亮一顆 LED 燈。別小看這個實驗,從我輔導的學員來看,不少初學者連這么簡單的案例都做不出來。

想要成這一名優秀的點燈大師,第一步就是要學會 STM32 最基礎的外設——GPIO。

1. 什么是GPIO?

1.1 定義

GPIO是通用輸入輸出(general-purpose input/output)端口的簡稱,簡單來說就是STM32可控制的引腳STM32芯片的GPIO引腳與外部設備連接起來,從而實現與外部通訊、控制以及數據采集的功能。

這是比較正式的說法,是不是聽得一愣一愣的?

再簡單一點,就是芯片里拉出一堆引腳,這些引腳在我們的控制下可以輸出高電平/低電平,或者可以通過這些引腳向芯片輸入一些信號,從而實現你們的一些目的。

1.2 命名規則

以 STM32F103C8T6 這顆芯片為例,它的 GPIO 口一共有 37 個,如何對它們進行命名呢?總不能叫翠花、二蛋、狗剩吧?

咱有正規的命名規則,那就是組編號+引腳編號。

什么是組編號?那就是 GPIOA, GPIOB, GPIOC, GPIOD .. GPIOG,一般最多到 GPIOG 。

什么是引引腳編號?那就是 0,1,2,3 ... 15。

所以組合起來,就是:

PA0, PA1, PA2 .. PA15

PB0, PB1, PB2 .. PB15

PC0, PC1, PC2 .. PC15

...

但并不是所有的芯片都有 A 到 G 個組,就比如咱這顆芯片就只有 A~D 四組。而且也不是每組都有 15 個引腳,就比如 D 組就只有 0 和 1 兩個引腳。

1.3 內部框架

6a772586-7a1d-11ed-8abf-dac502259ad0.jpg

上面這張圖來自于官方手冊,看起來是不是有點嚇人?

嚇到你就對了,第一次看到的時候我也嚇哭了。但是,作為初學者,可以先不用研究太底層的內容,咱先把燈點起來再說,否則你學會了一堆理論知識,結果到頭來連顆燈都點不起來,豈不是本末倒置了?

1.4 推挽輸出與開漏輸出

咱先看下這兩種輸出的電路圖。

6a8c9a10-7a1d-11ed-8abf-dac502259ad0.jpg

從電路圖可以看出,這兩種輸出有著本質的區別:

推挽輸出: 可以真正的輸出高電平和低電平

開漏輸出: 開漏輸出無法真正輸出高電平,即高電平時沒有驅動能力,需要借助外部上拉電阻完成對外驅動。

2. 如何點亮一顆 LED 燈?

我們先看下 LED 燈的接線。

6a9df896-7a1d-11ed-8abf-dac502259ad0.jpg

可以看到,LED 燈都是一側通過電阻拉高,另一側接到 GPIO 腳。所以,GPIO腳必須拉低,這樣才會產生電壓,對應的 LED 燈才會亮起來。

以 LED1 為例,它又接到了哪個引腳上呢?咱看原理圖,一定要遵循一個原則:標號一樣的導線在物理上是連接在一起的。

6aae01e6-7a1d-11ed-8abf-dac502259ad0.jpg

很明顯,LED1 引腳是連接在 PB8 這個 GPIO 口的。所以,我們只要編程將 PB8 拉低,就可以實現將 LED1 燈點亮。

3. 編程實現點燈

3.1 常用 GPIO HAL 庫函數

對于單片機編程,一般有三種方式:寄存器編程、標準庫編程、HAL 庫編程。目前,HAL 庫編程方式是 ST 公司主推的編程方式,這也是時代的潮流,所以我們主要介紹的還是 HAL 庫編程。

GPIO 常用 HAL 庫函數有以下這幾個:

voidHAL_GPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_Init);
voidHAL_GPIO_WritePin(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin,GPIO_PinStatePinState);
GPIO_PinStateHAL_GPIO_ReadPin(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin)
voidHAL_GPIO_TogglePin(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);

HAL_GPIO_Init 這個函數是初使化一個 GPIO 引腳的,如果你使用 CubeMX 的話,那么初始化的代碼將自動生成,你甚至都不需要自己動手寫。

HAL_GPIO_WritePin 就是可以將對應的引腳拉高或拉低,我們點燈的時候用的就是這個函數。而它的兄弟 HAL_GPIO_ReadPin 就是獲取某個引腳的狀態(拉高 or 拉低)。

最后的 HAL_GPIO_TogglePin 可以實現引腳電平的翻轉,比如原來是高電平,則會被翻轉為低電平;原來是低電平,則會被翻轉為高電平。

3.2 CubeMX 配置

配置debug模式

6aca0724-7a1d-11ed-8abf-dac502259ad0.jpg

配置 PB8 引腳

右側選中 PB8 引腳,然后選擇 GPIO_Output 模式。

6ae428de-7a1d-11ed-8abf-dac502259ad0.jpg

在中間欄里,點擊對應的 GPIO 管腳,然后屬性按圖中所示設置。特別要注意,咱剛開始要將 PB8 拉高,否則一上電 LED1 就亮了。我們要在代碼中將它點亮。

6af72e66-7a1d-11ed-8abf-dac502259ad0.jpg

配置工程

注意哈,一定不要將工程放在有中文路徑的地方,否則將出現異常情況!

6b115250-7a1d-11ed-8abf-dac502259ad0.jpg6b2e2f42-7a1d-11ed-8abf-dac502259ad0.jpg

都配置完成之后,就可以點擊右上角的 GENERATE CODE 來生成工程了。

3.3 編寫代碼

到這邊,我們的工作已經完成大半了。CubeMX 的強大之處,就是它可以通過簡單的幾次點擊,就可以自動生成初始化代碼。

比如下面的這段 GPIO 口初始化代碼,如果自己寫的話,至少需要幾分鐘時間,但它都已經自動幫你寫好了,非常方便!

voidMX_GPIO_Init(void)
{

GPIO_InitTypeDefGPIO_InitStruct={0};

/*GPIOPortsClockEnable*/
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();

/*ConfigureGPIOpinOutputLevel*/
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_SET);

/*ConfigureGPIOpin:PB8*/
GPIO_InitStruct.Pin=GPIO_PIN_8;
GPIO_InitStruct.Mode=GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull=GPIO_NOPULL;
GPIO_InitStruct.Speed=GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB,&GPIO_InitStruct);

}

接下來,我們就可以在 main 函數的 while 循環里寫自己的這么一段代碼,就可以實現 LED1 隔 1 秒點亮 1 秒的效果了。

一定要注意哈,要把代碼放在 USER CODE BEGIN 和 USER CODE END 里,否則你修改了 cubemx 的配置,自動生成的代碼會將你寫好的代碼覆蓋掉,那你的代碼就白寫了!

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_RESET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_SET);
HAL_Delay(1000);

點燈操作就到此結束了,后面我還會繼續更新 STM32 的其它干貨內容,敬請期待哦~

我也建了個嵌入式交流群,專門進行技術交流,而且也會發一發小福利,到時候也會將源碼放在群里,想要進群的小伙伴可以掃描下面二維碼進群哈:

4. 小結

千里之行,始于足下。點亮 LED 燈不難,但這是你學習 STM32 的第一步。千萬不要過于自大,覺得這個太簡單,然后就不自己動手操作。

很多小伙伴學習編程,都是覺得這個簡單,然后不自己動手,結果學了一段時間后,突然發現,貌似自己啥也沒學會~

所以,動手才是硬道理,千萬不要自大,盲目自信!!

審核編輯:湯梓紅

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

    關注

    242

    文章

    23277

    瀏覽量

    660895
  • STM32
    +關注

    關注

    2270

    文章

    10900

    瀏覽量

    356046
  • GPIO
    +關注

    關注

    16

    文章

    1204

    瀏覽量

    52104

原文標題:如何快速成為點燈大師?

文章出處:【微信號:良許Linux,微信公眾號:良許Linux】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    電子元器件快速銷售 快速成為優質商家

    醒目標識 浮層展示實體認證信息 三大權威認證 保證金額度 工商認證情況 誠信積分 加入華強電子網會員:幫助公司做推廣 幫助公司快速營銷 幫助公司快速網絡接單華強電子網電話 華強電子網會員申請 華強電子網咨詢熱線咨詢電話:*** 0755-83796808QQ:969295
    發表于 08-04 22:26

    一本讓你成為開關電源大師的書,非常經典!!!!

    本帖最后由 sjsazm 于 2015-9-9 21:51 編輯 一本讓你成為開關電源大師的書,非常經典!!!!
    發表于 09-09 21:46

    emwin福利來了,emWin實例速成教程_如何快速入門ucGUI_emWin

    想學emwin的網友,福利來了emWin實例速成教程000_如何快速入門ucGUI_emWin
    發表于 03-30 16:27

    Altium designer PCB畫板速成 鄭振宇

    哪位大師有“Altium designer PCB畫板速成 鄭振宇 ”這本書籍的PDF資料和視頻啊??有的話可以共享下嗎?非常感謝的!!!!!!!!!!!
    發表于 07-10 11:49

    emWin實例速成教程000_如何快速入門ucGUI_emWin

    emWin實例速成教程000_如何快速入門ucGUI_emWin
    發表于 11-06 10:52

    速成Cadence Allegro的方法概述

    4周小白成為大神,速成Cadence Allegro 讓你走向職場巔峰!.pdf(114.83 KB)
    發表于 10-08 07:49

    如何實現快速點燈并延長燈的使用壽命?

    本文提出了一種新型啟動電路,并采用了電流積分作為識別冷熱啟動的判據,可靠地實現了快速點燈并延長了燈的使用壽命。
    發表于 05-17 06:02

    什么是3D打印?什么是快速成型?主流快速成型工藝的成型原理及優缺點分析

    3D打印機 , 快速成型 , 快速制造 若談到近年來的制造業,3D打印、3D打印機、三維打印、快速成型、快速制造、數字化制造等等都是幾大熱詞。這些名詞,如同一股旋風,仿佛一夜之間就在學
    的頭像 發表于 06-06 09:06 ?3.3w次閱讀

    人工智能芯片市場有望快速成長 架構彈性成為關注焦點

    訓練芯片邃思DTU及加速卡云燧T10。2019年人工智能技術加快滲透進入實際應用當中,成為業內公認的AI落地之年。而其中關鍵在于AI芯片,算力的支撐成為人工智能發展的“發動機”。這也使得人工智能芯片市場有望快速成長。
    的頭像 發表于 12-17 11:50 ?2651次閱讀

    2020年底中國將會快速成為全球用戶規模最大的5G市場

    根據運營商業務發展目標規劃,2020年底國內5G用戶預計將發展到兩億,中國也將快速成為全球用戶規模最大的5G市場。
    發表于 04-01 09:57 ?1285次閱讀

    什么是3d打印快速成型技術與其優點及原理

    3d打印技術是什么?確切的說,3D快速成型技術是眾多快速成型技術之一,速成型技術大致可分為7大類,包括立體印刷、疊層實體制造、選擇性激光燒結、熔融沉積成型、三維焊接、三維打印、數碼累積成型等。
    的頭像 發表于 04-03 17:24 ?1.3w次閱讀

    快速IO鏈接PHY大師決議

    快速IO鏈接PHY大師決議
    發表于 04-18 19:36 ?9次下載
    <b class='flag-5'>快速</b>IO鏈接PHY<b class='flag-5'>大師</b>決議

    嵌入式驅動程序(5-1)點燈大師①之74HC595

    控制幾十盞燈。所以會出一系列“點燈”文章。勵志成為一個“點燈大師點燈大師①之74HC9591
    發表于 11-24 10:51 ?37次下載
    嵌入式驅動程序(5-1)<b class='flag-5'>點燈</b><b class='flag-5'>大師</b>①之74HC595

    STM32_按鍵點燈

    學習32是一個循序漸進的過程,通過點燈可以了解到許許多多的知識,今天先講解按鍵點燈,明天會通過對比按鍵,寫中斷控制點燈的程序。直接通過原理圖
    發表于 01-12 20:42 ?6次下載
    STM32_按鍵<b class='flag-5'>點燈</b>

    51點燈與Linux驅動點燈的區別

    嵌入式初學者入門的第一個“項目”就是LED點燈,那么,本文帶你看看51、STM32、Linux點燈有什么區別?
    的頭像 發表于 03-10 17:37 ?2973次閱讀
    主站蜘蛛池模板: 刺激一区| 天天综合射| 手机免费黄色网址| 国产三级在线视频观看| 美国一级大黄香蕉片| 男人的j桶女人的j视频| 欧美高清在线观看视频| 天天天干干干| 亚洲高清视频一区| 日本经典在线三级视频| 午夜无遮挡怕怕怕免费视频| 狠狠躁夜夜躁人人爽天天miya| 特别毛片| 97综合网| 69xxx网站| 青草99| 日本一区二区三区不卡在线视频| 色综合天天综久久久噜噜噜久久〔 | 国模娜娜扒开嫩木耳| 伊人久久成人成综合网222| 韩剧天堂| 亚洲人成在线精品不卡网| 天天色天天射天天干| 在线观看深夜观看网站免费| 一区二区影视| 女人张腿让男子桶免费动态图| 日韩第十页| 一级毛片在线| 99久精品| 亚洲欧美一区二区三区图片| 欧美精品1| 久久精品夜夜夜夜夜久久| 亚欧成人乱码一区二区| 亚洲综合五月天欧美| 男女交性视频免费| 国产一二三区精品| dyav午夜片| 激情玖玖| 34看网片午夜理| 久久亚洲免费视频| 日本xxxxxxx69xx|