目錄
前言
一、ARM和STM32是什么?
二、STM32的開發(fā)方式
三、GPIO----寄存器開發(fā)方式
1.八種輸入輸出模式分析
2.寄存器?
四、stm32芯片圖片
五、怎么學(xué)好stm32?
總結(jié)
前言
stm32的廣泛含義及背景:
STM32是一款由意法半導(dǎo)體(ST)公司開發(fā)的32位微控制器,其全稱是意法半導(dǎo)體32位系列微控制器芯片。STM32是基于Cortex-M內(nèi)核的32位單片機(jī),分為多個(gè)系列以滿足不同應(yīng)用場景的需求。
STM32微控制器是將微型計(jì)算機(jī)的主要部分集成在一個(gè)芯片上的單芯片微型計(jì)算機(jī),其誕生于20世紀(jì)70年代中期,經(jīng)過多年的發(fā)展,其成本越來越低,性能越來越強(qiáng)大,應(yīng)用已經(jīng)無處不在,遍及各個(gè)領(lǐng)域。
STM32系列是ST公司專為要求高性能、低成本、低功耗的嵌入式應(yīng)用設(shè)計(jì)的ARMCortex-M3內(nèi)核的32位單片機(jī)。STM32有很多系列,從內(nèi)核上分有Cortex-M0、M3、M4和M7等幾種,每個(gè)內(nèi)核又大概分為主流、高性能和低功耗等不同類型。其中STM32F系列有多個(gè)子系列,如STM32F103“增強(qiáng)型”系列、STM32F101“基本型”系列、STM32F105和STM32F107“互聯(lián)型”系列等。
一、ARM和STM32是什么?
(1)什么ARM?
?? ??? ?1,ARM是一家公司名字------專門做IP核------依靠專利授權(quán)盈利
?? ??? ?2,ARM是一系列基于ARM內(nèi)核設(shè)計(jì)的芯片的代稱
(2)ARM內(nèi)核的分類?
?? ??? ?ARM7,ARM9,ARM11
?? ??? ?Cortex-A ? ? ?主要應(yīng)用于計(jì)算量比較大,有交互性界面的領(lǐng)域 ?------電視機(jī),手機(jī),平板,投影儀,車載中控
?? ??? ?Cortex-R ? ? ?主要應(yīng)用實(shí)時(shí)性要求比較高的領(lǐng)域-----航空航天,汽車剎車
?? ??? ?Cortex-M ? ? ?主要用于微控制器(MCU)領(lǐng)域?
?(3)什么STM32?
? ? ? ? 單片機(jī)
?? ??? ?它是ARM Cortex-M3的芯片
?? ??? ?我們學(xué)習(xí)的芯片全稱:
?? ??? ??? ?STM32F103RCT6
?? ??? ??? ?STM32F407ZET6
? ? ? ? ??
(4)STM32F103RCT6的含義
?? ??? ?ST:意法半導(dǎo)體公司
?? ??? ?M:MCU
?? ??? ?32:32bit的CPU一次性處理數(shù)據(jù)的多少
?? ??? ?F103:編號
?? ??? ?R:引腳數(shù)量 pin ?64pin
?? ??? ?C:flash的大小----256KB ?注意:flash的大小和啟動(dòng)文件的選擇有關(guān)系
?? ??? ?T:封裝
?? ??? ?6:溫度等級
二、STM32的開發(fā)方式
? ? ? ? 常用的為以下四種開發(fā)方式:
? ? ? (1) 寄存器開發(fā):寄存器----具有特殊功能的內(nèi)存單元------寄存器開發(fā)是所有可編程邏輯芯?片所支持的一種開發(fā)方式
? ? ? ?(2)標(biāo)準(zhǔn)外設(shè)庫開發(fā):ST公司不再維護(hù)這種開發(fā)方式
? ? ? ?(3)Cube庫開發(fā):STM32CubeMX圖形化界面的軟件-----目前這種開發(fā)方式有兩個(gè)缺點(diǎn):? ?一,只支持ST公司的芯片,二代碼冗余特別多
? ? ? ?(4)LL庫開發(fā):不成熟
開發(fā)方式 | 開發(fā)難度 | 可維護(hù)性 | 代碼可執(zhí)行效率 |
---|---|---|---|
寄存器開發(fā) | 最難 | 最低 | ?最高 |
標(biāo)準(zhǔn)外設(shè)庫開發(fā) | 適中 | 適中 | 適中 |
Cube庫開發(fā) | 最簡單 | 最高 | 最低 |
LL庫開發(fā) | 較難 | 較低 | 較高 |
芯片里面有什么?
(1)內(nèi)核 ?----CPU
(2)片上外設(shè):外設(shè)位于芯片的內(nèi)部,內(nèi)核的外部
?? ??? ?(片外外設(shè):外設(shè)位于芯片的外部)
?? ??? ?單片機(jī)的開發(fā)實(shí)質(zhì):和內(nèi)核溝通,利用片上外設(shè)驅(qū)動(dòng)片外外設(shè)
?? ??? ?
?? ??? ?補(bǔ)充:
?? ??? ??? ?Cortex-M3的內(nèi)核是哈弗架構(gòu):數(shù)據(jù)和指令是分開存儲(chǔ)的
?? ??? ??? ??? ??? ??? ? ? ? 馮若依曼架構(gòu):數(shù)據(jù)和指令是不分開的
三、GPIO----寄存器開發(fā)方式
1.八種輸入輸出模式分析
? ? ? ? ?組件的作用:
? ? ? ? ?施密特觸發(fā)器----糾正電平
?? ??? ?上拉電阻:一個(gè)電阻,一端接到電源正極,一端接到信號線,這個(gè)電阻稱為這根信號線上的上拉電阻-----如果信號線沒有其他輸入,上拉電阻無壓降
?? ??? ?下拉電阻:一個(gè)電阻,一端接到電源負(fù),一端接到信號線,這個(gè)電阻稱為這根信號線上的下拉電阻? ? ? ? 八種輸入輸出模式:
? ? ? ? (1)輸入浮空: ?沒有上拉電阻,沒有下拉電阻
?? ??? ??? ??? ??? ?輸入0: ?輸入數(shù)據(jù)寄存器中的值為0
?? ??? ??? ??? ??? ?輸入1: ?輸入數(shù)據(jù)寄存器中的值為1
?? ??? ??? ??? ??? ?沒有輸入時(shí): 輸入數(shù)據(jù)寄存器中的值為上一次狀態(tài)或者是復(fù)位值
? ? ? ? (2)輸入上拉: ?有上拉電阻,沒有下拉電阻
?? ??? ??? ??? ??? ?輸入0: ?輸入數(shù)據(jù)寄存器中的值為0
?? ??? ??? ??? ??? ?輸入1: ?輸入數(shù)據(jù)寄存器中的值為1
?? ??? ??? ??? ??? ?沒有輸入時(shí): 輸入數(shù)據(jù)寄存器中的值為1
? ? ? ? (3)輸入下拉: ?沒有上拉電阻,有下拉電阻
?? ??? ??? ??? ??? ?輸入0: ?輸入數(shù)據(jù)寄存器中的值為0
?? ??? ??? ??? ??? ?輸入1: ?輸入數(shù)據(jù)寄存器中的值為1
?? ??? ??? ??? ??? ?沒有輸入時(shí): 輸入數(shù)據(jù)寄存器中的值為0?? ?
? ? ? ?(4)模擬輸入:(是專門為ADC這個(gè)片上外設(shè)準(zhǔn)備的模式)?? ?,不經(jīng)過施密特觸發(fā)器,沒有上拉電阻,也沒有下拉電阻
?? ??? ??? ??? ??? ?電壓從芯片的引腳進(jìn)來后直接輸入到ADC片上外設(shè),由ADC片上外設(shè)處理
?? ??? ??? ??? ??? ?ADC的作用:用于讀取電壓值;當(dāng)需要讀不是0v或3.3v之外的電壓值時(shí)使用
?? ??? ??? ??? ??? ?
? ? ? ? (5)推挽輸出: 輸出數(shù)據(jù)寄存器寫0: 對應(yīng)引腳輸出低電平0V?? ??? ??? ?
?? ??? ??? ??? ? ? 輸出數(shù)據(jù)寄存器寫1: 對應(yīng)引腳輸出高電平3.3V
?? ??? ??? ??? ? ??
? ? ? ? (6)開漏輸出:不能輸出高電平
?? ??? ??? ??? ? ? 輸出數(shù)據(jù)寄存器寫0: 對應(yīng)引腳輸出低電平0V?? ??? ??? ?
?? ??? ??? ??? ? ? 輸出數(shù)據(jù)寄存器寫1: 對應(yīng)引腳輸出高阻
?? ??? ??? ??? ? ??
?? ??? ?復(fù)用:引腳受片上外設(shè)控制
?? ??? ?通用:引腳受CM3控制的輸出數(shù)據(jù)寄存器控制
?? ??? ?
? ? ? ? (7)復(fù)用推挽輸出: 片上外設(shè)的輸出數(shù)據(jù)寄存器寫0: 對應(yīng)引腳輸出低電平0V?? ??? ??? ?
?? ??? ??? ??? ? ? ? ? 片上外設(shè)的輸出數(shù)據(jù)寄存器寫1: 對應(yīng)引腳輸出高電平3.3V
?? ??? ??? ??? ? ??
? ? ? ? (8)復(fù)用開漏輸出:不能輸出高電平
?? ??? ??? ??? ? ? 片上外設(shè)的輸出數(shù)據(jù)寄存器寫0: 對應(yīng)引腳輸出低電平0V?? ??? ??? ?
?? ??? ??? ??? ? ? 片上外設(shè)的輸出數(shù)據(jù)寄存器寫1: 對應(yīng)引腳輸出高阻?? ?
2.寄存器?
(1)
? ? ? ?最大速度:電平翻轉(zhuǎn)的速度
?? ??? ?f(頻率)=1/T(周期)
?? ??? ?f(單位是HZ)
?? ??? ?T(單位是s)(2)
? ? ? ?將寄存器reg的第n位清零: ?reg ?&=~(1<<n);
?? ? ? 將寄存器reg的第n位置1: ? reg ?|=(1<<n);?? ?
?? ??? ?判斷寄存器reg的第n位為0還是為1
?? ??? ?if(reg&(1<<n)){
?? ??? ??? ?reg的第n位為1;
?? ??? ?}else{
?? ??? ??? ?reg的第n位為0;
?? ??? ?}(3)
? ? ? ? 如果點(diǎn)亮紅色的燈
?? ??? ?1,配置GPIOC的CRH寄存器的第3---0位配置成0010
?? ??? ?2,配置GPIOC的ODR寄存器的第8位配置成0
四、stm32芯片圖片
五、怎么學(xué)好stm32?
學(xué)好STM32需要掌握以下基本技能和步驟:
- 熟練掌握C語言:STM32開發(fā)的核心語言是C語言,因此熟練掌握C語言是學(xué)好STM32開發(fā)的基礎(chǔ)。
- 學(xué)習(xí)并掌握一種開發(fā)環(huán)境:常見的STM32開發(fā)環(huán)境有Keil、IAR等,選擇適合自己的開發(fā)環(huán)境,并熟練掌握其使用方法。
- 學(xué)習(xí)并掌握一種調(diào)試工具:常用的調(diào)試工具包括JTAG、SWD等,熟練掌握這些調(diào)試工具的使用方法,可以幫助你更好地調(diào)試代碼。
- 學(xué)習(xí)庫函數(shù)和寄存器:STM32的庫函數(shù)和寄存器是實(shí)現(xiàn)其功能的關(guān)鍵,因此需要深入學(xué)習(xí)并理解庫函數(shù)和寄存器的使用方法。
- 學(xué)習(xí)基本外設(shè)和高級功能:STM32有許多基本外設(shè)和高級功能,如GPIO、定時(shí)器、串口、SPI、IIC、WDG、FSMC、ADC/DAC等,需要了解并掌握這些外設(shè)和功能的基本原理和使用方法。
- 系統(tǒng)學(xué)習(xí):可以通過購買開發(fā)板、開發(fā)板配套視頻教程、開發(fā)板配套源碼和芯片官方手冊進(jìn)行系統(tǒng)學(xué)習(xí)。同時(shí),要善于利用網(wǎng)絡(luò)資源,如論壇、博客等,進(jìn)行學(xué)習(xí)交流。
- 多實(shí)踐、多動(dòng)手:學(xué)習(xí)STM32開發(fā)不能只停留在理論層面,需要多動(dòng)手實(shí)踐,編寫代碼、調(diào)試程序,從實(shí)踐中學(xué)習(xí)和積累經(jīng)驗(yàn)。
- 注重學(xué)習(xí)方法:學(xué)習(xí)STM32開發(fā)需要注重學(xué)習(xí)方法,例如如何查找資料、如何提問、如何解決問題等。要學(xué)會(huì)獨(dú)立思考和解決問題,避免過度依賴他人。
總之,學(xué)好STM32需要付出努力和時(shí)間,需要掌握基本技能和知識,同時(shí)注重實(shí)踐和學(xué)習(xí)方法,不斷提高自己的編程和調(diào)試能力。文章來源:http://www.zghlxwxcb.cn/news/detail-756505.html
總結(jié)
關(guān)于C/C++ stm32基礎(chǔ)知識的超詳細(xì)講解,懶大王就先分享到這里了,如果你認(rèn)為這篇文章對你有幫助,請給懶大王點(diǎn)個(gè)贊點(diǎn)個(gè)關(guān)注吧,如果發(fā)現(xiàn)什么問題,歡迎評論區(qū)留言?。????????文章來源地址http://www.zghlxwxcb.cn/news/detail-756505.html
到了這里,關(guān)于C/C++ stm32基礎(chǔ)知識超詳細(xì)講解(系統(tǒng)性學(xué)習(xí)day14)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!