国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

淺談STM32和51單片機(jī)的寄存器編程異同

2021-05-10 01:52
關(guān)鍵詞:固件寄存器二極管

楊 宇

(昆明冶金高等??茖W(xué)校電氣與機(jī)械學(xué)院,云南 昆明 650033)

0 引 言

現(xiàn)在市面上常用的單片機(jī)可以分為兩大類:基礎(chǔ)性能單片機(jī)和高性能單片機(jī)?;A(chǔ)性能單片機(jī)中最常用的就是51單片機(jī),它是眾多單片機(jī)學(xué)習(xí)者進(jìn)行入門學(xué)習(xí)的首選。但隨著社會的發(fā)展、科技的進(jìn)步,單片機(jī)需要具備更強(qiáng)的性能和更低的功耗,51單片機(jī)已經(jīng)不能滿足一些新的要求。高性能單片機(jī)的出現(xiàn)彌補(bǔ)了51單片機(jī)的不足,在眾多的高性能單片機(jī)中,STM32憑借其在開發(fā)方式、技術(shù)支持、性價(jià)比等方面的優(yōu)勢,成為了市場占有率最高的一種高性能單片機(jī)。

對于許多具有51單片機(jī)基礎(chǔ)的學(xué)習(xí)者,繼續(xù)學(xué)習(xí)STM32可以說是一種必然趨勢。但由于種種原因,很多人的STM32學(xué)習(xí)之路都半途而廢,因?yàn)槠毡檎J(rèn)為學(xué)習(xí)STM32難度太大。究其原因,筆者認(rèn)為他們只是單純地學(xué)習(xí)STM32,而沒有將51單片機(jī)和STM32結(jié)合起來學(xué)習(xí)。本文正是以此為出發(fā)點(diǎn),將STM32的基本開發(fā)方式——寄存器編程,與51單片機(jī)的寄存器編程進(jìn)行比較和分析,使學(xué)習(xí)者能更好地理解STM32的寄存器編程。

1 實(shí)例硬件原理圖

本文主要闡述51單片機(jī)和STM32對GPIO(General Purpose Input Output,通用型輸入輸出端口)的操作原理,以分別用這2種單片機(jī)點(diǎn)亮一個LED(發(fā)光二極管)為實(shí)例來比較和分析2種寄存器編程方式的異同。本實(shí)例中51單片機(jī)采用的型號為AT89C51, STM32采用的型號為STM32F103R6。AT89C51通過引腳 P 2.0 連接發(fā)光二極管,輸出低電平點(diǎn)亮發(fā)光二極管,如圖1所示;STM32F103R6通過引腳 PC 0 連接發(fā)光二極管,輸出低電平點(diǎn)亮發(fā)光二極管,如圖2所示。

圖1 AT89C51驅(qū)動LED原理圖 圖2 STM32F103R6驅(qū)動LED原理圖Fig.1 Schematic diagram of AT89C51 Fig.2 Schematic diagram of STM32F103R6

2 實(shí)例編程異同分析

AT89C51和STM32F103R6的程序開發(fā)都是以創(chuàng)建項(xiàng)目的形式來完成,AT89C51驅(qū)動發(fā)光二極管的項(xiàng)目文件如圖3所示,STM32F103R6驅(qū)動發(fā)光二極管的項(xiàng)目文件如圖4所示。2個項(xiàng)目都包括3種文件:啟動程序文件、主程序文件和頭文件。本文首先對2個項(xiàng)目的啟動程序文件和頭文件進(jìn)行比較,再對主程序文件進(jìn)行對比。

圖3 AT89C51驅(qū)動LED項(xiàng)目文件 圖4 STM32F103R6驅(qū)動LED項(xiàng)目文件Fig.3 Project files of AT89C51 Fig.4 Project files of STM32F103R6

2.1 啟動程序文件異同分析

2個項(xiàng)目都具有啟動程序文件,AT89C51的啟動程序文件名稱為STARTUP.A51, STM32F103R6的啟動程序文件名稱為startup_stm32f10x_hd.s。兩者的作用相同:當(dāng)單片機(jī)上電啟動時(shí),首先會執(zhí)行啟動程序,從而建立起執(zhí)行主程序的運(yùn)行環(huán)境。并且兩者都采用匯編語言編寫,但文件后綴名不同。兩者的主要區(qū)別是,STARTUP.A51文件是單片機(jī)開發(fā)軟件(比如Keil c51)自帶的;而startup_stm32f10x_hd.s文件是單片機(jī)制造商ST(意法半導(dǎo)體)官方提供的,用戶需要從官方固件庫中找到該文件,并添加到自己的編程里。

2.2 頭文件異同分析

2個項(xiàng)目都具有頭文件,AT89C51的頭文件名稱為reg51.h, STM32F103R6的頭文件名稱為stm32f10x.h。兩者的作用相同:用于存放寄存器映射的程序,為主程序中對寄存器編程做準(zhǔn)備;并且兩者都采用C語言編寫,文件后綴名也相同。兩者的主要區(qū)別是,reg51.h文件是單片機(jī)開發(fā)軟件(比如Keil c51)自帶的,而stm32f10x.h文件需要用戶創(chuàng)建。

2.3 主程序文件異同分析

圖5 AT89C51驅(qū)動LED主程序Fig.5 Main file of AT89C51

圖6 STM32F103R6驅(qū)動LED主程序Fig.6 Main file of STM32F103R6

2個項(xiàng)目中的主程序文件名稱均為main.c,AT89C51驅(qū)動發(fā)光二極管的主程序如圖5所示,STM32F103R6驅(qū)動發(fā)光二極管的主程序如圖6所示。2個主程序的作用相同:都是對單片機(jī)的GPIO進(jìn)行操作,使單片機(jī)輸出相應(yīng)的信號。它們的主要區(qū)別在于STM32F103R6對GPIO的操作比AT89C51對GPIO的操作更復(fù)雜。從圖5可以看出,AT89C51對GPIO的操作很簡單,只需要直接對端口寄存器P2賦值就可以使單片機(jī)的 P 2.0 引腳輸出低電平。STM32F103R6對GPIO的操作需要開啟端口時(shí)鐘以及配置端口寄存器CRL和ODR,如圖6所示,首先開啟GPIOC端口時(shí)鐘,接著對GPIOC_CRL寄存器中的相關(guān)位清零;然后設(shè)置GPIOC_CRL寄存器將PC0引腳配置為推挽輸出;最后設(shè)置GPOIC_ODR寄存器讓PC0引腳輸出需要的電平。此外,STM32F103R6對GPIO操作還需要編寫系統(tǒng)初始化函數(shù),如圖4中的SystemInit(),用于初始化系統(tǒng)時(shí)鐘,AT89C51對GPIO的操作則不需要該函數(shù)。

3 結(jié) 語

由于51單片機(jī)的寄存器編程和STM32的寄存器編程既有相同點(diǎn)又有差異性,所以將兩者結(jié)合起來對比學(xué)習(xí)比單純學(xué)習(xí)STM32更容易理解STM32的寄存器編程原理。STM32的編程方式分為基礎(chǔ)的寄存器編程和高階的固件庫編程,固件庫編程也是STM32領(lǐng)先于其他高性能單片機(jī)的一大優(yōu)勢,很多人想學(xué)但學(xué)不好STM32的固件庫編程,其實(shí)是沒有打好寄存器編程的基礎(chǔ)。通過本文的方法對理解STM32的寄存器編程及后續(xù)學(xué)習(xí)固件庫編程會有很大幫助。

猜你喜歡
固件寄存器二極管
快恢復(fù)二極管在高頻電路中的選型應(yīng)用
尼康旗艦Z9升級新固件延長高速連拍時(shí)間
基于國產(chǎn)化IT 基礎(chǔ)設(shè)施的通用固件安全模型研究
常用電子測速法在某數(shù)字信號處理器中的應(yīng)用*
飛思卡爾單片機(jī)脈寬調(diào)制模塊用法研究
移位寄存器及算術(shù)運(yùn)算應(yīng)用
目標(biāo)教學(xué)法在中職校電子電工專業(yè)教學(xué)中的實(shí)踐
含理想二極管電路的疑難問題辨析お
Smart Shirts Generate Electricity
英特爾發(fā)布免費(fèi)固件引擎
文昌市| 新龙县| 邯郸县| 东光县| 九寨沟县| 龙游县| 隆昌县| 金山区| 繁昌县| 新丰县| 德庆县| 佛坪县| 五峰| 河曲县| 静乐县| 五大连池市| 黄冈市| 云浮市| 广元市| 烟台市| 张北县| 蒙山县| 进贤县| 斗六市| 南召县| 察哈| 泗洪县| 惠州市| 新营市| 新建县| 乐山市| 台东市| 灌云县| 珠海市| 色达县| 碌曲县| 峨山| 定襄县| 交口县| 景东| 新乡市|