国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

初學(xué)者入門:認識STM32單片機

這篇具有很好參考價值的文章主要介紹了初學(xué)者入門:認識STM32單片機。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

本教程含有較多專業(yè)詞匯,大部分時候,不完全理解并不影響繼續(xù)往下閱讀,大家只需要了解大致的概念即可。當(dāng)然,也鼓勵大家多查百度和多問chatgpt,讓自己學(xué)會的更多。

什么是單片機?

單片機,就是把中央處理器CPU、存儲器、等計算機的功能部件,和定時器、I/0(輸入輸出接口)、串口等外設(shè)集成在一塊集成電路芯片上的微型計算機。

單片機的特點:

1.體積小,集成度高,電源功耗低

2.控制功能強,易拓展外設(shè)

3.價格便宜,性價比高

STM32是意法半導(dǎo)體(ST)推出一款32位的單片機。STM32具有超低的價格、超多的外設(shè)、豐富的型號、優(yōu)異的實時性、極低的開發(fā)成本等優(yōu)勢。

既然大家已經(jīng)了解單片機了(bushi) ,那我們就一起走進STM32的世界吧!

如下圖,是STM32的系統(tǒng)結(jié)構(gòu)原理圖,是不是一臉懵,那就別看下面這個先

初學(xué)者入門:認識STM32單片機

讓我們簡化并翻譯一下:

初學(xué)者入門:認識STM32單片機

各部分功能如下:

  1. CPU:包含運算器,控制器及若干寄存器,是單片機的控制和指揮中心。

  2. ROM(STM32中稱為FLASH):用于存放程序和數(shù)據(jù),為只讀儲存器。更改(擦除)和寫入程序都較為麻煩,需要遵守FLASH相關(guān)的協(xié)議??梢哉J為是計算機的硬盤。

  3. RAM(STM32中稱為SRAM):用于存放運算的中間結(jié)果、數(shù)據(jù)暫存及數(shù)據(jù)緩沖等??梢噪S機讀入或讀出,讀寫速度快,讀寫方便;但是斷電或復(fù)位會丟失數(shù)據(jù)。可以認為是計算機的內(nèi)存。

  4. 總線矩陣:總線矩陣用于主控總線之間的訪問仲裁管理,提高了各部件交流的效率。

  5. 寄存器:雖然圖里面沒有寄存器,但是后續(xù)會經(jīng)常提到它。寄存器可以看成儲存0和1的一個指定名字和功能的地址。如果我們要在某個引腳輸出一個低電平,我們只要往相的引腳對應(yīng)的寄存器寫一個1,即可實現(xiàn).

  6. GPIO:通用型輸入輸出(接口),意思是你可以隨意使用它輸出或輸入0和1,甚至以115200次每秒的速度翻轉(zhuǎn)或接收0和1。

  7. 注意:上面的所有東西,都集成在了單片機的芯片上,因此說單片機集成度高,是真的很高。

雖然大家大致了解了STM32單片機的結(jié)構(gòu),但肯定還不清楚自己將要如何操控這個精妙裝置。接下來,讓我們一起了解一個程序如何實現(xiàn)整個運算過程。

一. 假設(shè)一個客戶需求

1. x=3???y=x+5?

2. 先計算出y的值,若y大于0則點亮位于GPIO_ PA0(也就是單片機上的A0接口)處的LED

看起來很簡單,但這是了解單片機運行原理的一個非常重要的案例:

二.?配置初始化文件

什么?你說你想直接把代碼寫了跑起來?

單片機還在睡覺呢,或者他腦袋里還想著上一個程序。

你輸入單片機的每一個程序,都必須要用很多很多的篇幅告訴它,腦干怎么指揮全身(各種CPU指令)、心臟該怎么跳動(配置時鐘樹)、血液該怎么流動(定義各種宏以方便數(shù)據(jù)傳輸),因為每次輸入新程序進去都完全擦除ROM再重寫,所以每個程序都必須包含初始化的內(nèi)容。不然,它當(dāng)場給你表演一個原地睡覺(卡死)。

配置初始化文件的方法有兩種:

1. 基于STM32庫函數(shù)的開發(fā)

STM32庫函數(shù)的開發(fā),可以避免大家對著數(shù)據(jù)手冊查并操作各種寄存器,而是直接用庫的函數(shù)來實現(xiàn)各種參數(shù)的初始化和功能。

如果你想點亮一個led。你需要準(zhǔn)備好一個包含整個單片機初始化的內(nèi)容的源代碼,如下圖所示(不用細看,我也也不熟)。

初學(xué)者入門:認識STM32單片機

然后再復(fù)制粘貼一個GPIO_init(初始化GPIO接口)的函數(shù)進去,然后再改成相應(yīng)的序號。當(dāng)然,如果你想啟動串口、定時器、ADC等其他功能,也需要把相應(yīng)的初始化代碼塊一個個塞進去,如下圖所示(不用細看,不是重點)。

初學(xué)者入門:認識STM32單片機

(上圖:GPIO,PB5和PE5的初始化代碼塊)

然后再在主函數(shù)中輸入相應(yīng)的代碼(見下一節(jié)),我們的程序才能完成。

使用標(biāo)準(zhǔn)庫開發(fā)有助于大家更了解底層的代碼和寄存器的使用,可以保證基礎(chǔ)更加的扎實。但是對新手來說不夠友好。

2.?基于STM32Cubemx(下面那個藍藍的軟件,你們的好幫手)的HAL庫開發(fā)

如果按照上面的方法,那當(dāng)我們遇到下面問題的時候,可能就有些棘手:

我們手上有STM32f103c8t6單片機的啟動文件,但是此次項目要求我們用STM32f427IIH單片機,且要求你打開CAN1、CAN2、USART1、USART2、TIM23456、和十路的PWM,并按照需求配置參數(shù)。那我們可要忙的屁股著火螺旋起飛啰,而且不好檢查參數(shù)是否正確。

因此,我們需要有更加高效、準(zhǔn)確的方法:使用STM32Cubemx配置文件

打開STM32Cubemx,并經(jīng)過操作,可以看到如下界面:

你可以直接生成相應(yīng)芯片(此時為F427iih)的初始化和配置文件,非常的舒服。

接下來,直接用圖形化界面即可設(shè)置好各種參數(shù)(可以跟著詳細的文檔做,一套做下來就能用了)

初學(xué)者入門:認識STM32單片機

(上圖:左邊為希望使用的功能,中間為功能的參數(shù)配置,右邊為圖形化的功能展示)

當(dāng)然,我也是從萌新走過來的,第一次看到上圖也很害怕,感覺自己根本駕馭不了這個恐怖的機器

下圖是做出遙控小車的STM32f103c8t6和引腳圖(僅供參考)。是不是感覺不算特別復(fù)雜?

初學(xué)者入門:認識STM32單片機

什么?看起來還復(fù)雜。那我們只能通過我們自己的努力,慢慢熟悉這個軟件。我也盡我的力把教程寫的有趣一點,讓大家愿意跟著一步一步走,收獲更多的知識。

跑題了,當(dāng)我們按下這個按鈕

初學(xué)者入門:認識STM32單片機

?我們就直接得到了一份結(jié)構(gòu)規(guī)范的啟動和初始化代碼。(如下)

初學(xué)者入門:認識STM32單片機

點幾下鼠標(biāo),我們給單片機寫的腦干、血液、心臟的程序就全部完成啦!

因此可以看出,STM32CubeMx是一個很便捷的圖形化配置軟件,可以快速配置、維護、修改工程。后續(xù)所有教程都將基于STM32Cubemx的開發(fā)。

三. 寫代碼

直接上干貨

需求如下:

x=3???y=x+5

計算出y的值,若大于0則點亮位于GPIO_ PA0(也就是單片機上的A0接口)處的LED

代碼是這個(基于HAL庫編程)要寫在主函數(shù)的無限循環(huán)中(為什么是無限循環(huán)呢,我們可以假設(shè)一個智能家居設(shè)備,即使你沒按下按鈕,他也會一直運行著,一直判斷你是否按下按鈕,或者監(jiān)測一些其他的數(shù)據(jù))

uint8_t x=3;      
uint8_t y=0;

while(1)
{
y=x+5;
if(y>0)
  GPIO_Writepin(GPIOA,GPIO_PIN_0,0);
}

代碼很好讀懂,定義x,y兩個unsigned int類型的變量(HAL庫有對數(shù)據(jù)類型單獨進行宏定義,感興趣的可以右擊uint8_t并進入definition

?然后做加法,然后判斷,若y>0,輸出低電平,電流從LED的正極流進PA0,LED點亮。

四. 編譯代碼

STM32是機器,他只聽得懂機器語言(匯編語言),因此我們需要把我們上面寫的給人看的代碼變成匯編語言,大概是下面的效果(別細看 不考)

初學(xué)者入門:認識STM32單片機

因此我們寫完代碼,要點一下編譯按鈕。

初學(xué)者入門:認識STM32單片機

此時的內(nèi)容不只是程序,而更應(yīng)該稱為 指令。

五. 燒錄代碼

我們用專門的燒錄器將代碼直接燒寫至單片機的FLASH內(nèi),即完成了代碼的燒錄。注:一般燒錄后需要按一下復(fù)位的按鈕單片機才會開始運行。

Keil這個軟件等于說自帶燒錄的環(huán)境,只需要按照教程選好型號即可將編譯好的代碼燒錄進單片機。

六.?代碼如何變成現(xiàn)實(略微介紹一下微機原理,感興趣可以看)

匯編語言的代碼燒寫至FLASH內(nèi)。

復(fù)位單片機!

單片機開始運行!

PC(程序計數(shù)器)從零開始累加,執(zhí)行以下循環(huán)

  1. 它數(shù)到n,F(xiàn)LASH里的n號指令被取出,拿去CPU執(zhí)行。

  2. 指令會涉及到一個地址,某個數(shù)字住在內(nèi)存的一個房間里,房間的號碼叫做地址。這一步只會將地址送去地址寄存器,并解出住在那的數(shù)字。

  3. 那個數(shù)字被拿去CPU,進行計算,計算結(jié)果將以變量放在某處

這三步,每步的時間,在STM32f103c8t6單片機中,大約為一至兩個機器周期,也就是10——40納秒。

在第n=114514時,CPU收到指令,將一個1塞進一個叫GPIOA->BRR寄存器的某一位中

隨著一個1塞進了那個位置,寄存器的電路所連接的一個三極管轟然導(dǎo)通,電流如泉涌一般沿著三極管導(dǎo)向了GND(可以理解為負極),如此,那個名為PA0的引腳變?yōu)榱说碗娖?,LED也隨之點亮。

初學(xué)者入門:認識STM32單片機

七. 總結(jié)

這就是我們?nèi)绾吸c亮一個led的全過程,寫的挺粗糙的。希望這篇教程能起到拋磚引玉的效果,讓大家能通過此教程了解到單片機工作的原理,并有興趣更進一步的深入學(xué)習(xí),在之后的學(xué)習(xí)中事半功倍。

其他的教程,由于CSDN插入圖片較為麻煩,因此我直接將生成的PDF文檔放入免費的資源中,可以進入我的主頁查找。

如下,包含IO、PWM控制舵機、電路搭建、電機控制的教程,代碼和演示視頻,都置于其中。

(80條消息) 基于STM32的機械臂遙控麥輪小車-之超級適合新手的教程-嵌入式文檔類資源-CSDN文庫

祝大家學(xué)業(yè)有成。文章來源地址http://www.zghlxwxcb.cn/news/detail-469214.html

到了這里,關(guān)于初學(xué)者入門:認識STM32單片機的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 初學(xué)者思路-實現(xiàn)獨立按鍵檢測(以STM32為例)

    初學(xué)者思路-實現(xiàn)獨立按鍵檢測(以STM32為例)

    ? ? ? ? 本文以初學(xué)者角度切入,詳細剖析按鍵檢測原理,實現(xiàn)按鍵短按、短按抬起、首次長按、持續(xù)長按次數(shù)、長按抬起功能; 目錄 前言 波形圖分析 抖動原因 為什么要消抖 如何消抖 原理圖分析 程序設(shè)計思路 代碼實踐 按鍵配置 按鍵檢測 實驗結(jié)果 留下反思 ? ? ? ? 如

    2024年01月16日
    瀏覽(22)
  • STM32初學(xué)者,到底選標(biāo)準(zhǔn)庫還是HAL庫?

    當(dāng)初學(xué)者嘗試學(xué)習(xí)STM32開發(fā)時,通常會面臨一個關(guān)鍵的選擇:是選擇STM32的標(biāo)準(zhǔn)庫,還是HAL庫?這兩個庫各自有著優(yōu)勢與適用場景,本文將從多個角度分析,幫助初學(xué)者更好地選擇適合自己的庫。 在開始之前,讓我們先搞清楚這兩個庫的基本概念。標(biāo)準(zhǔn)庫是一組用于STM32系列微

    2024年02月08日
    瀏覽(24)
  • 不怕沒項目做!github上的STM32 優(yōu)秀開源項目和初學(xué)者項目

    不怕沒項目做!github上的STM32 優(yōu)秀開源項目和初學(xué)者項目

    TinyGo - Go語言編譯器,適用于微控制器、WebAssembly、命令行工具,基于LLVM。 語言:Go 星標(biāo)數(shù):14,267+ 描述:TinyGo帶來了Go語言在嵌入式系統(tǒng)的實現(xiàn),使得STM32等微控制器編程更加多樣化。 Flipper Zero Firmware - Flipper Zero的固件源碼。 語言:C 星標(biāo)數(shù):10,699+ 描述:為Flipper Zero多功能

    2024年03月20日
    瀏覽(108)
  • 了解 ESP32 FreeRTOS:初學(xué)者指南

    了解 ESP32 FreeRTOS:初學(xué)者指南

    ESP32 FreeRTOS是針對ESP32微控制器的一個實時操作系統(tǒng)(RTOS),它采用了FreeRTOS內(nèi)核,可以幫助開發(fā)人員在ESP32芯片上進行多任務(wù)處理。簡單來說,F(xiàn)reeRTOS提供了一種方式來管理軟件任務(wù)并協(xié)調(diào)它們的執(zhí)行。 ESP32是一個功能強大的嵌入式系統(tǒng),可以用于構(gòu)建各種物聯(lián)網(wǎng)應(yīng)用程序。

    2023年04月14日
    瀏覽(18)
  • MATLAB初學(xué)者入門(8)—— 動態(tài)規(guī)劃

    ????????動態(tài)規(guī)劃是一種數(shù)學(xué)方法,用于解決具有遞歸結(jié)構(gòu)的決策問題,特別是那些涉及順序決策的問題。在MATLAB中實現(xiàn)動態(tài)規(guī)劃,可以通過定義狀態(tài)變量、決策變量、狀態(tài)轉(zhuǎn)移方程以及目標(biāo)函數(shù)來完成。以下是具體的案例分析。 案例分析:項目資源分配優(yōu)化 ???????

    2024年04月28日
    瀏覽(35)
  • Python爬蟲入門(一)(適合初學(xué)者)

    Python爬蟲入門(一)(適合初學(xué)者)

    關(guān)于爬蟲是什么,怎樣保證爬蟲的合法性小編在這就不再過多的闡述,從本章起,小編將和大家一起分享在學(xué)習(xí)python爬蟲中的所學(xué),希望可以和大家一起進步,也希望各位可以關(guān)注一下我! 首先我們來初步了解下如何使用開發(fā)者工具進行抓包。以 https://fanyi.baidu.com/ 為例。在

    2024年01月24日
    瀏覽(36)
  • MATLAB初學(xué)者入門(24)—— 聚類算法

    ????????聚類是一種廣泛使用的無監(jiān)督學(xué)習(xí)技術(shù),用于將數(shù)據(jù)集中的對象分組,使得同一組內(nèi)的對象比其他組的對象更為相似。MATLAB提供了多種工具和函數(shù)來實現(xiàn)和分析不同類型的聚類算法。 案例分析:使用K-均值聚類對數(shù)據(jù)進行分組 ????????假設(shè)我們有一組二維數(shù)據(jù)

    2024年04月29日
    瀏覽(242)
  • 電腦入門: 路由器初學(xué)者完全教程

    ?路由器初學(xué)者完全教程 ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? 本文以Cisco2620為例,講述了路由器的初始化配置以及遠程接入的配置方法,探討了如何使用內(nèi)部網(wǎng)絡(luò)的DHCP服務(wù)功能為遠程撥入的用戶分配地址信息以及路由器常見故障的排除技巧。? ? ? ? ? ? ? ? ? ? ? ? ?

    2024年02月09日
    瀏覽(97)
  • K8s 初學(xué)者入門教程

    K8s 初學(xué)者入門教程

    Kubernetes 簡稱為 K8s 最近想要通過 K8s 部署一些前端應(yīng)用。但苦于之前沒有接觸過集群相關(guān)的概念,操作時,對 Deployment、Pod、Service 和 Ingress 等概念不是很理解,導(dǎo)致對部署的流程不太清晰(例如,在創(chuàng)建 Deployment 時,不清楚要填哪些選項,那些選項有什么作用和區(qū)別, Pod,

    2024年02月07日
    瀏覽(911)
  • C++ 測試框架 GoogleTest 初學(xué)者入門篇 丙

    C++ 測試框架 GoogleTest 初學(xué)者入門篇 丙

    *以下內(nèi)容為本人的學(xué)習(xí)筆記,如需要轉(zhuǎn)載,請聲明原文鏈接 微信公眾號「ENG八戒」https://mp.weixin.qq.com/s/RIztusI3uKRnoHVf0sloeg 開發(fā)者雖然主要負責(zé)工程里的開發(fā)任務(wù),但是每個開發(fā)完畢的功能都是需要開發(fā)者自測通過的,所以經(jīng)常會聽到開發(fā)者提起單元測試的話題。那么今天我就

    2023年04月15日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包