版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
任務(wù)1安裝開(kāi)發(fā)工具任務(wù)要求查閱相關(guān)資料,弄清楚STM32的開(kāi)發(fā)方式、應(yīng)用開(kāi)發(fā)所需要的軟件工具,了解各軟件工具的主要功能,并填寫(xiě)好開(kāi)發(fā)工具準(zhǔn)備清單,然后在網(wǎng)上搜索并下載或購(gòu)買(mǎi)這些工具軟件,再在計(jì)算機(jī)中安裝MDK、STM32CubeMX等STM32開(kāi)發(fā)工具軟件、程序燒錄軟件、仿真器和USB轉(zhuǎn)串口的驅(qū)動(dòng)程序,檢查軟件的安裝是否正確,為后續(xù)STM32的應(yīng)用開(kāi)發(fā)作好準(zhǔn)備。知識(shí)儲(chǔ)備
1.STM32微控制器STM32是意法半導(dǎo)體公司(ST公司)生產(chǎn)的基于ARMCortex-M內(nèi)核的32位微控制器。其中,ST代表ST公司(意法半導(dǎo)體公司)M代表微控制器(MicrocontrollerUnit)32表示這種微處理器的字長(zhǎng)為32位。1.STM32微控制器
STM32的產(chǎn)品可查閱ST公司的官網(wǎng),其網(wǎng)址為/content/st_com/zh.htmlSTM32有許多產(chǎn)品,主要分為高性能微控制器主流微控制器超低功耗微控制器無(wú)線微控制器每一類(lèi)產(chǎn)品包含若干系列的產(chǎn)品1.STM32微控制器
每一個(gè)系列按其應(yīng)用特性又分為若干子系列,如下面左圖所示。每個(gè)子系列按照其封裝形式、存儲(chǔ)器的大小、引腳數(shù)等又分為若干型號(hào)的產(chǎn)品,如右圖所示。1.STM32微控制器
STM32產(chǎn)品的名字由9部分組成,最主要的是前7部分,不同部分用不同的字母或數(shù)字表示,代表不同的含義,STM32產(chǎn)品的命名規(guī)則如下圖所示。序號(hào)字符含義1STM32ST公司的32位的微控制器2F基礎(chǔ)型3103STM32基礎(chǔ)型4R64引腳5BFlash存儲(chǔ)器容量為128KB6T封裝形式為QFP76溫度范圍為-40~85度2.STM32的軟件開(kāi)發(fā)方式
(1)基于寄存器的開(kāi)發(fā)方式編程方法是直接訪問(wèn)STM32的寄存器,編程難度比較大編寫(xiě)的程序與底層硬件密切相關(guān),程序的可移植性較差早期的STM32程序開(kāi)發(fā)主要采用這種開(kāi)發(fā)方式 (2)基于標(biāo)準(zhǔn)外設(shè)庫(kù)的開(kāi)發(fā)方式可以不了解STM32底層硬件原理,只需了解API函數(shù)的功能、使用方法就可以實(shí)現(xiàn)外設(shè)的驅(qū)動(dòng)基于標(biāo)準(zhǔn)外設(shè)庫(kù)的開(kāi)發(fā)方式是目前比較多的開(kāi)發(fā)方式只提供了早期生產(chǎn)的微控制的標(biāo)準(zhǔn)外設(shè)庫(kù),近期推出的MCU,無(wú)法使用這種開(kāi)發(fā)方式
(3)基于STM32CubeMX的開(kāi)發(fā)方式只需在STM32CubeMX的示意圖中作一些簡(jiǎn)單的選擇和配置,就可以生成STM32的硬件驅(qū)動(dòng)程序開(kāi)發(fā)方式非常簡(jiǎn)單,生成的程序具有很好的可移植性是現(xiàn)在和今后的開(kāi)發(fā)方式,本書(shū)采用這種方式介紹STM32的應(yīng)用開(kāi)發(fā)技術(shù)實(shí)現(xiàn)方法與步驟STM32應(yīng)用開(kāi)發(fā)常用的工具軟件主要有MDK集成開(kāi)發(fā)工具Keil軟件包STM32CubeMXJRE程序下載軟件串口調(diào)試助手仿真器驅(qū)動(dòng)程序USB轉(zhuǎn)串口驅(qū)動(dòng)程序
1.準(zhǔn)備開(kāi)發(fā)工具1.準(zhǔn)備開(kāi)發(fā)工具M(jìn)DK集成開(kāi)發(fā)工具主要用于程序的編輯和調(diào)試,是STM32應(yīng)用開(kāi)發(fā)使用最頻繁的工具軟件,MDK集成開(kāi)發(fā)工具是Keil公司提供的,其下載地址為:/download/product/,下載頁(yè)面如圖所示。
1.準(zhǔn)備開(kāi)發(fā)工具Keil軟件包也叫MDK軟件包,它是MDK所支持芯片的數(shù)據(jù)文件。用MDK開(kāi)發(fā)STM32應(yīng)用程序時(shí)需要在MDK中先安裝MDK所要支持的MCU數(shù)據(jù)包,即對(duì)應(yīng)的Keil軟件包。Keil軟件包由Keil公司提供,其下載地址為:/dd2/pack/,下載頁(yè)面如圖所示。
1.準(zhǔn)備開(kāi)發(fā)工具Keil軟件包下載頁(yè)面比較長(zhǎng),向下拖動(dòng)頁(yè)面,在下載列表中找到Keil欄,再找到我們所需要的型號(hào),例如STM32F1系列,然后下載即可,如圖所示。
1.準(zhǔn)備開(kāi)發(fā)工具STM32CubeMX用于系統(tǒng)配置和初始化代碼的生成,它是ST公司開(kāi)發(fā)的一款圖形化編程工具,其下載地址為:/en/development-tools/stm32cubemx.html。下載頁(yè)面如圖所示。
1.準(zhǔn)備開(kāi)發(fā)工具JRE(JavaRuntimeEnvironment)軟件的作用是為STM32CubeMX提供運(yùn)行環(huán)境。STM32CubeMX軟件必須在Jave環(huán)境下運(yùn)行,在安裝STM32CubeMX軟件之前需要先安裝JRE軟件,要求JRE的最低版是1.7.0_45。JRE可從ORACLE官網(wǎng)上下載,其下載地址為:/technetwork/java/javase/downloads/java-archive-javase8-2177648.html,下載頁(yè)面如圖所示。
1.準(zhǔn)備開(kāi)發(fā)工具程序下載軟件的功能是將MDK產(chǎn)生的hex文件燒寫(xiě)至STM32中。進(jìn)行STM32應(yīng)用開(kāi)發(fā)時(shí)對(duì)該軟件并無(wú)特殊要求,只要能下載程序就可以了。目前比較常用的程序下載軟件主要是FLASHER-STM32和mcuisp等2款軟件。
FLASHER-STM32下載頁(yè)面mcuisp軟件下載頁(yè)面ST公司開(kāi)發(fā),要求苛刻,兼容性差目前全國(guó)物聯(lián)網(wǎng)大賽和“1+x”傳感網(wǎng)應(yīng)用開(kāi)發(fā)中使用的是這款軟件深圳鵬遠(yuǎn)電通科技有限公司開(kāi)發(fā)的,其兼容性要好一些,在實(shí)際應(yīng)用中,STM32開(kāi)發(fā)工程師們常用這款軟件。1.準(zhǔn)備開(kāi)發(fā)工具串口調(diào)試助手是一種監(jiān)控調(diào)試計(jì)算機(jī)串口的軟件,用于計(jì)算機(jī)與單片機(jī)之間串行通信。STM32應(yīng)用開(kāi)發(fā)中對(duì)該軟件沒(méi)有特殊要求,只要能實(shí)現(xiàn)計(jì)算機(jī)串口收發(fā)數(shù)據(jù)即可。在本書(shū)中,我們使用的串口調(diào)試助手是SSCOM,讀者可在網(wǎng)上下載。仿真器驅(qū)動(dòng)程序用來(lái)驅(qū)動(dòng)所使用的仿真器,目前仿真STM32的仿真器主要有STLink、JLink等幾種,本書(shū)中使用的是STLink仿真器,其驅(qū)動(dòng)程序可從ST公司的網(wǎng)站上下載。USB轉(zhuǎn)串口的芯片主要有CH34x、PL2303、CP21xx等幾種,本書(shū)中選用的USB轉(zhuǎn)串口芯片為CH340,是南京沁恒公司生產(chǎn)的,可到公司網(wǎng)站/下載其驅(qū)動(dòng)程序。按照上述要求,到網(wǎng)上下載MDK等8個(gè)工具軟件,并保存至某個(gè)文件夾中,例如保存至“D:\STM32開(kāi)發(fā)工具”文件夾中。
2.解壓工具軟件收集到STM32應(yīng)用開(kāi)發(fā)工具軟件后,需要將這些工具軟件解壓,再在計(jì)算機(jī)中安裝這些工具軟件。
解壓文件解壓后的文件3.安裝MDK安裝MDK524的方法如下:第1步:以管理員身份運(yùn)行MDK安裝文件,如圖所示,打開(kāi)歡迎對(duì)話(huà)框。
以管理員身份運(yùn)行MDK安裝文件歡迎安裝對(duì)話(huà)框3.安裝MDK第2步:在歡迎對(duì)話(huà)框中點(diǎn)擊“Next”按鈕,打開(kāi)如圖所示的許可協(xié)議對(duì)話(huà)框。第3步:在許可協(xié)議對(duì)話(huà)框中勾選“IagreetoallthetermsofprecedingLicenseAgreement”復(fù)選框,點(diǎn)擊“Next”按鈕,打開(kāi)選擇安裝文件夾對(duì)話(huà)框。
許可協(xié)議選擇安裝文件夾3.安裝MDK第4步:在選擇安裝文件夾對(duì)話(huà)框中分別選擇Keil和Keil包安裝的文件夾,然后單擊“Next”按鈕,打開(kāi)填寫(xiě)用戶(hù)信息對(duì)話(huà)框。第5步:在填寫(xiě)用戶(hù)信息對(duì)話(huà)框中填寫(xiě)我們的一些信息,然后點(diǎn)擊“Next”按鈕,計(jì)算機(jī)就開(kāi)始安裝Keil。如果計(jì)算機(jī)中安裝了360安全衛(wèi)士,則在安裝過(guò)程中會(huì)彈出如圖所示的文件防護(hù)對(duì)話(huà)框。
填寫(xiě)用戶(hù)信息文件防護(hù)對(duì)話(huà)框3.安裝MDK第6步:在文件防護(hù)對(duì)話(huà)框中單擊“”按鈕,在展開(kāi)的選項(xiàng)中選擇“允許本次操作”選項(xiàng),計(jì)算機(jī)繼續(xù)安裝Keil,在安裝的過(guò)程中會(huì)彈出安裝ULINK驅(qū)動(dòng)程序窗口和安裝ULINK驅(qū)動(dòng)程序?qū)υ?huà)框,如下圖所示。
安裝ULINK驅(qū)動(dòng)程序窗口安裝ULINK驅(qū)動(dòng)程序?qū)υ?huà)框3.安裝MDK第7步:在安裝ULINK驅(qū)動(dòng)程序?qū)υ?huà)框中點(diǎn)擊“不安裝”按鈕,計(jì)算機(jī)會(huì)關(guān)閉安裝窗口,并彈出下圖所示的完成安裝對(duì)話(huà)框。第8步:在完成安裝對(duì)話(huà)框中點(diǎn)擊“Finish”按鈕,結(jié)束Keil的安裝。這時(shí)會(huì)自動(dòng)彈出包安裝窗口和歡迎安裝對(duì)話(huà)框,同時(shí)桌面上會(huì)出現(xiàn)Keil5的快捷圖標(biāo)“”,至此MDK安裝結(jié)束。
完成安裝包安裝窗口和歡迎安裝對(duì)話(huà)框4.安裝Keil包本書(shū)所使用的STM32是STM32F103VET6,屬于STM32F1系列的MCU,使用MDK開(kāi)發(fā)STM32F1系列MCU應(yīng)用程序時(shí)需安裝STM32F1系列的Keil包,其安裝方法如下:第1步:在包安裝窗口和歡迎安裝對(duì)話(huà)框中,關(guān)閉歡迎安裝對(duì)話(huà)框,保留包安裝窗口。若用戶(hù)關(guān)閉了下圖所示的包安裝窗口,可以打開(kāi)Keil5的工作窗口,點(diǎn)擊包安裝圖標(biāo)按鈕“”,系統(tǒng)就會(huì)打開(kāi)包安裝窗口。
包安裝窗口和歡迎安裝對(duì)話(huà)框Keil工作窗口4.安裝Keil包第2步:在包安裝窗口中點(diǎn)擊菜單欄上的【File】→【Import…】菜單項(xiàng),如圖所示,打開(kāi)輸入包對(duì)話(huà)框。
Import菜單項(xiàng)輸入包對(duì)話(huà)框【說(shuō)明】在KeilPack文件夾中,我們提供了3個(gè)Keil安裝包,若開(kāi)發(fā)板中的STM32是其他系列的MCU,則需要根據(jù)所使用的STM32的型號(hào)來(lái)選擇對(duì)應(yīng)的Keil包。4.安裝Keil包第3步:在輸入包對(duì)話(huà)框的左邊窗格中找到并打開(kāi)“D:\STM32開(kāi)發(fā)工具\(yùn)KeilPack”文件夾,點(diǎn)擊Keil.STM32F1xx_DFP.2.2.0.pack文件,再點(diǎn)擊對(duì)話(huà)框中的“打開(kāi)”按鈕,系統(tǒng)就會(huì)開(kāi)始安裝我們所選擇的STM32F1系列的Keil包。Keil包安裝結(jié)束后,包安裝窗口的Device欄中會(huì)增加一個(gè)“STMicroelectronics”條目,點(diǎn)擊“STMicroelectronics”條目前面的“+”號(hào),就可以看到“STM32F1Series”子條目,如圖所示。第4步:關(guān)閉包安裝窗口,結(jié)束Keil包安裝。
STM32F1系列的Keil包安裝結(jié)果5.激活MDK從Keil公司網(wǎng)站上下載的MDK開(kāi)發(fā)工具存在2KB代碼量限制問(wèn)題,若用戶(hù)代碼量超過(guò)2KB,則MDK開(kāi)發(fā)工具不能正常使用。激活MDK的方法如下:第1步:雙擊桌面上的快捷圖標(biāo)“”,啟動(dòng)Keil5。第2步:在Keil5的工作窗口中點(diǎn)擊菜單欄上的【File】→【LicenseManagement】菜單項(xiàng),如下圖所示,打開(kāi)許可證管理對(duì)話(huà)框。
許可證菜單項(xiàng)許可證管理對(duì)話(huà)框5.激活MDK第3步:在許可證管理對(duì)話(huà)框中點(diǎn)擊“Single-UserLicense”標(biāo)簽,然后在“NewLicenseIDCode”文本框中輸入新的許可證號(hào),然后點(diǎn)擊“AddLIC”按鈕,將許可證號(hào)添加到系統(tǒng)中,然后點(diǎn)擊“Close”按鈕,完成MDK的激活。【說(shuō)明】不同計(jì)算機(jī)的許可證號(hào)并不相同,圖中的許可證號(hào)是作者所使用計(jì)算機(jī)上的許可證號(hào),許可證號(hào)需向Keil公司購(gòu)買(mǎi)。
許可證管理對(duì)話(huà)框6.安裝JRESTM32CubeMX軟件必須在Jave環(huán)境下運(yùn)行,在安裝STM32CubeMX軟件之前需要先安裝JRE(JavaRuntimeEnvironment)軟件。下面以安裝1.8.0_112版的JRE為例介紹JRE的安裝步驟:第1步:右鍵點(diǎn)擊jre-8u112-windows-i586.exe文件圖標(biāo),在彈出的快捷菜單中點(diǎn)擊“以管理員身份運(yùn)行”菜單項(xiàng),打開(kāi)如圖所示的歡迎對(duì)話(huà)框。
歡迎對(duì)話(huà)框6.安裝JRE第2步:在歡迎對(duì)話(huà)框中點(diǎn)擊“安裝”按鈕,計(jì)算機(jī)就開(kāi)始安裝JRE,并出現(xiàn)下圖所示的安裝進(jìn)度,JRE安裝結(jié)束后會(huì)出現(xiàn)“完成”對(duì)話(huà)框。第3步:點(diǎn)擊完成對(duì)話(huà)框中的“關(guān)閉”按鈕,完成JRE的安裝。
安裝進(jìn)度完成對(duì)話(huà)框7.安裝STM32CubeMX第1步:用鼠標(biāo)右鍵點(diǎn)擊安裝文件SetupSTM32CubeMX-5.3.0.exe,在彈出的快捷菜單中點(diǎn)擊“以管理員身份運(yùn)行”菜單項(xiàng),計(jì)算機(jī)中就會(huì)運(yùn)行STM32CubeMX的安裝程序,過(guò)一會(huì)就會(huì)出現(xiàn)如圖所示的安裝向?qū)?duì)話(huà)框。
STM32CubeMX的安裝文件安裝向?qū)У臍g迎對(duì)話(huà)框7.安裝STM32CubeMX第2步:在安裝向?qū)g迎對(duì)話(huà)框中單擊“Next”按鈕,打開(kāi)許可協(xié)議對(duì)話(huà)框。第3步:在許可協(xié)議對(duì)話(huà)框中,勾選“Iacceptthetermsofthislicenseagreement”復(fù)選框,再點(diǎn)擊“Next”按鈕,打開(kāi)如下圖所示的隱私和條款對(duì)話(huà)框。
許可協(xié)議隱私和條款7.安裝STM32CubeMX第4步:在隱私和條款對(duì)話(huà)框中勾選“IhavereadandunderstoodtheSTPrivacyPolicyandSTTermsofUse”復(fù)選框,然后點(diǎn)擊“Next”按鈕,打開(kāi)設(shè)置安裝路徑對(duì)話(huà)框。第5步:在設(shè)置安裝路徑對(duì)話(huà)框中我們選擇默認(rèn)安裝路徑,直接點(diǎn)擊“Next”按鈕,出現(xiàn)下圖所示的創(chuàng)建目錄消息框。
設(shè)置安裝路徑創(chuàng)建目錄消息框7.安裝STM32CubeMX第6步:在創(chuàng)建目錄消息框中點(diǎn)擊“確定”按鈕,打開(kāi)創(chuàng)建快捷方式對(duì)話(huà)框。第7步:在創(chuàng)建快捷方式對(duì)話(huà)框中選擇默認(rèn)的設(shè)置,然后單擊“Next”按鈕,計(jì)算機(jī)就開(kāi)始安裝STM32CubeMX,并顯示安裝進(jìn)度,安裝結(jié)束后,安裝進(jìn)度對(duì)話(huà)框中的“Next”變?yōu)榭捎脿顟B(tài),如下圖所示。
創(chuàng)建快捷方式安裝進(jìn)度7.安裝STM32CubeMX第8步:在安裝進(jìn)度對(duì)話(huà)框中點(diǎn)擊“Next”,打開(kāi)如圖所示的安裝完成對(duì)話(huà)框。第9步:在安裝完成對(duì)話(huà)框中點(diǎn)擊“Done”按鈕,結(jié)束STM32CubeMX的安裝,桌面會(huì)出現(xiàn)快捷圖標(biāo)“”。
安裝完成對(duì)話(huà)框8.安裝STM32CubeMX庫(kù)安裝STM32CubeMX庫(kù)的實(shí)質(zhì)是選擇STM32CubeMX所要支持的STM32產(chǎn)品并安裝它們的固件支持包。STM32CubeMX庫(kù)的安裝有在線安裝、導(dǎo)入離線包和解壓離線包3種方式,這3種方式基本相同,只是固件包的來(lái)源不同而已,下面以在線安裝方式為例介紹STM32CubeMX庫(kù)的安裝過(guò)程。安裝STM32CubeMX庫(kù)的步驟如下:第1步:在D盤(pán)新建“D:\STM32_PACK”文件夾,用來(lái)存放在網(wǎng)上下載的STM32CubeMX數(shù)據(jù)包,并作STM32CubeMX庫(kù)安裝文件夾。第2步:在桌面上雙擊STM32CubeMX的快捷圖標(biāo)“”,啟動(dòng)STM32CubeMX,并打開(kāi)STM32CubeMX工作窗口,如果是第1次啟動(dòng)STM32CubeMX,則工作窗口中會(huì)彈出一個(gè)使用統(tǒng)計(jì)對(duì)話(huà)框。
8.安裝STM32CubeMX庫(kù)第3步:在使用統(tǒng)計(jì)對(duì)話(huà)框中點(diǎn)擊“Nothanks”按鈕,關(guān)閉使用統(tǒng)計(jì)對(duì)話(huà)框。第4步:在STM32CubeMX工作窗口中單擊菜單欄上的“Help”→“UpdaterSettings”菜單項(xiàng),如下圖所示,打開(kāi)“UpdaterSettings”對(duì)話(huà)框。
STM32CubeMX工作窗口和使用統(tǒng)計(jì)對(duì)話(huà)框UpdaterSettings菜單項(xiàng)8.安裝STM32CubeMX庫(kù)第5步:在“UpdaterSettings”對(duì)話(huà)框中點(diǎn)擊“UpdaterSettings”標(biāo)簽名,然后在UpdaterSettings標(biāo)簽中點(diǎn)擊“Browse”按鈕,在彈出的選擇固件安裝文件夾對(duì)話(huà)框中,將安裝目錄設(shè)置為D:\STM32_PACK,如下圖所示。
UpdaterSettings對(duì)話(huà)框選擇固件安裝文件夾8.安裝STM32CubeMX庫(kù)第6步:在右圖的“UpdaterSettings”對(duì)話(huà)框中點(diǎn)擊“CheckandUpdateSettings”框架中的“ManualCheck”單選鈕,將檢查更新方式設(shè)置成人工檢查,點(diǎn)擊“DataAuto-Refresh”框架中的“NoAuto-RefreshatApplicationstart”單選鈕,將數(shù)據(jù)更新方式設(shè)置為應(yīng)用開(kāi)始時(shí)不自動(dòng)更新,如右圖所示。然后點(diǎn)擊“OK”按鈕,完成更新設(shè)置。
UpdaterSettings對(duì)話(huà)框8.安裝STM32CubeMX庫(kù)第7步:在“UpdaterSettings菜單項(xiàng)”窗口中單擊菜單欄上的“Help”→“Manageembeddedsoftwarepackages”菜單項(xiàng),打開(kāi)如下圖所示的“EmbeddedSoftwarePackagesManager”對(duì)話(huà)框。
EmbeddedSoftwarePackagesManager對(duì)話(huà)框UpdaterSettings菜單項(xiàng)8.安裝STM32CubeMX庫(kù)第8步:在“EmbeddedSoftwarePackagesManager對(duì)話(huà)框”中,點(diǎn)擊“STM32CubeMCUPackages”標(biāo)簽名,然后在標(biāo)簽下面的列表框中找到STM32F1,再點(diǎn)擊STM32F1左邊的“”符號(hào),從展開(kāi)的列表項(xiàng)中勾選最新版的MCU數(shù)據(jù)包,再點(diǎn)擊“InstallNow”按鈕,系統(tǒng)就自動(dòng)地下載并安裝所選擇數(shù)據(jù)包,并彈出“Downloadingselectedsoftwarepackages”對(duì)話(huà)框。
EmbeddedSoftwarePackagesManager對(duì)話(huà)框8.安裝STM32CubeMX庫(kù)第9步:軟件包下載完畢后點(diǎn)擊下圖中的“OK”按鈕,結(jié)束STM32CubeMX庫(kù)的安裝。
下載所選的軟件包9.安裝CH340驅(qū)動(dòng)程序安裝CH340驅(qū)動(dòng)程序的方法如下:第1步:打開(kāi)“D:\STM32開(kāi)發(fā)工具\(yùn)串口驅(qū)動(dòng)-CH340_Windows”文件夾,然后雙擊CH340的驅(qū)動(dòng)程序圖標(biāo)“”,打開(kāi)驅(qū)動(dòng)安裝對(duì)話(huà)框。第2步:在“驅(qū)動(dòng)安裝”對(duì)話(huà)框的“選擇INF文件”下拉列表框中選擇“CH341SER.INF”列表項(xiàng),然后單擊“安裝”按鈕,系統(tǒng)就開(kāi)始執(zhí)行安裝程序,驅(qū)動(dòng)程序安裝結(jié)束后會(huì)自動(dòng)彈出驅(qū)動(dòng)安裝成功提示框,單擊提示框中的“確定”按鈕,結(jié)束CH340驅(qū)動(dòng)程序的安裝。
CH340的驅(qū)動(dòng)程序驅(qū)動(dòng)安裝對(duì)話(huà)框提示框10.查看USB口映射的串口號(hào)查看串口號(hào)的操作方法如下:第1步:用USB線將計(jì)算機(jī)的USB口與開(kāi)發(fā)板上的USB口相接。第2步:在桌面上右擊“計(jì)算機(jī)”圖標(biāo),在彈出的快捷菜單中單擊“屬性”菜單命令,打開(kāi)如圖所示的系統(tǒng)窗口。第3步:在系統(tǒng)窗口中單擊“設(shè)備管理”超連接,打開(kāi)“設(shè)備管理器”窗口。
系統(tǒng)窗口10.查看USB口映射的串口號(hào)第4步:在“設(shè)備管理器”窗口中單擊“端口”左邊的“”符號(hào),展開(kāi)“端口”項(xiàng),“端口”項(xiàng)下面會(huì)出“USB-SERIALCH340”項(xiàng)。該項(xiàng)右邊的COMX就是當(dāng)前USB口所映射的串口號(hào),例如右圖中所表示的是當(dāng)前的USB口所映射的串口號(hào)為COM3,后續(xù)計(jì)算機(jī)通過(guò)該USB口與STM32進(jìn)行串行通信時(shí),串口編號(hào)就應(yīng)該選擇COM3。
設(shè)備管理器窗口11.安裝STLink驅(qū)動(dòng)程序安裝STLink驅(qū)動(dòng)程序的方法如下:第1步:在系統(tǒng)窗口中查看“系統(tǒng)類(lèi)型”,查看操作系統(tǒng)的位數(shù)。本機(jī)中的操作系統(tǒng)為64位的操作系統(tǒng)。第2步:打開(kāi)“STLINK驅(qū)動(dòng)”文件夾,然后雙擊STLink驅(qū)動(dòng)程序dpinst_amd64,打開(kāi)歡迎安裝對(duì)話(huà)框。STLink驅(qū)動(dòng)程序系統(tǒng)窗口11.安裝STLink驅(qū)動(dòng)程序第3步:在歡迎安裝對(duì)話(huà)框中點(diǎn)擊“下一步”按鈕,計(jì)算機(jī)就準(zhǔn)備安裝STLink驅(qū)動(dòng)程序,并彈出Windows安全對(duì)話(huà)框。第4步:在安全對(duì)話(huà)框中點(diǎn)擊“安裝”按鈕,系統(tǒng)就開(kāi)始安裝STLink驅(qū)動(dòng)程序,程序安裝結(jié)束后就會(huì)彈出完成驅(qū)動(dòng)安裝對(duì)話(huà)框。歡迎安裝Windows安全對(duì)話(huà)框11.安裝STLink驅(qū)動(dòng)程序第5步:在完成驅(qū)動(dòng)安裝對(duì)話(huà)框中點(diǎn)擊“完成”按鈕,結(jié)束STLink驅(qū)動(dòng)程序的安裝。第6步:將STLink插入計(jì)算機(jī)的USB口中,然后在“系統(tǒng)窗口”中點(diǎn)擊“設(shè)備管理”超鏈接,打開(kāi)“設(shè)備管理器”窗口。完成驅(qū)動(dòng)安裝系統(tǒng)窗口11.安裝STLink驅(qū)動(dòng)程序第7步:在“設(shè)備管理器”窗口中點(diǎn)擊“UniversalSerialBusdevices”左邊的“”符號(hào),就可以看到“STMicroelectronicsSTLinkdongle”符號(hào),表明STLink驅(qū)動(dòng)安裝成功?!菊f(shuō)明】如果設(shè)備名稱(chēng)旁邊顯示的是黃色感嘆號(hào),則表明設(shè)備的驅(qū)動(dòng)程序安裝有問(wèn)題,請(qǐng)直接點(diǎn)擊設(shè)備名,然后在彈出的界面中點(diǎn)擊更新設(shè)備驅(qū)動(dòng)程序。設(shè)備管理器窗口12.安裝程序下載軟件在STM32開(kāi)發(fā)工具文件夾中我們提供了2個(gè)常用的STM32程序下載軟件,一個(gè)是mcuisp,這個(gè)軟件是一個(gè)綠色軟件,不需要安裝就可以使用。另一個(gè)是FLASHER-STM32軟件,這個(gè)軟件需要安裝后才能使用。安裝FLASHER-STM32軟件的方法如下:第1步:打開(kāi)“flasher-stm32”所在文件夾,然后雙擊圖中程序下載軟件flash_loader_demo_v2.8.0.exe,計(jì)算機(jī)就準(zhǔn)備安裝FLASHER-STM32軟件,過(guò)一會(huì)就會(huì)打開(kāi)歡迎安裝對(duì)話(huà)框。FLASHER-STM32安裝程序12.安裝程序下載軟件第2步:在歡迎對(duì)話(huà)框中點(diǎn)擊“Next”按鈕,打開(kāi)如圖所示的輸入用戶(hù)信息對(duì)話(huà)框。第3步:在輸入用戶(hù)信息對(duì)話(huà)框中填寫(xiě)我們的一些信息,然后點(diǎn)擊“Next”按鈕,打開(kāi)選擇安裝文件夾對(duì)話(huà)框。歡迎安裝輸入用戶(hù)信息12.安裝程序下載軟件第4步:在選擇安裝文件夾中我們選擇默認(rèn)的安裝文件夾,直接點(diǎn)擊“Next”按鈕,打開(kāi)準(zhǔn)備安裝程序?qū)υ?huà)框。如果用戶(hù)打算在其他文件夾中安裝FLASHER-STM32軟件,可點(diǎn)擊“Change”按鈕,然后在打開(kāi)的選擇文件夾對(duì)話(huà)框中選擇安裝文件夾。選擇安裝文件夾12.安裝程序下載軟件第5步:在準(zhǔn)備安裝程序?qū)υ?huà)框中點(diǎn)擊“Install”按鈕,計(jì)算機(jī)中就開(kāi)始安裝FLASHER-STM32軟件,并顯示安裝的進(jìn)度,程序安裝結(jié)束后會(huì)打開(kāi)完成安裝對(duì)話(huà)框。準(zhǔn)備安裝程序12.安裝程序下載軟件第6步:在完成安裝對(duì)話(huà)框中點(diǎn)擊“Finish”按鈕,完成FLASHER-STM32軟件的安裝。此時(shí)打開(kāi)“開(kāi)始”菜單,就可以看到在“STMicroelectronics”項(xiàng)中增加了一個(gè)“FlashLoader”子項(xiàng),“FlashLoader”子項(xiàng)中有一個(gè)“DemonstratorGUI”子項(xiàng),這個(gè)子項(xiàng)就是FLASHER-STM32程序下載軟件的快捷菜單項(xiàng),如圖所示,點(diǎn)擊“DemonstratorGUI”子項(xiàng)就可以啟動(dòng)FLASHER-STM32程序下載軟件。完成安裝FLASHER-STM32快捷菜單實(shí)踐總結(jié)與拓展
STM32是ST公司生產(chǎn)的32位微控制器,是目前最為流行的MCU,STM32的應(yīng)用開(kāi)發(fā)主要有3種方式,目前和今后的軟件開(kāi)發(fā)方式主要是基于STM32CubeMX的開(kāi)發(fā)方式。STM32應(yīng)用開(kāi)發(fā)常用的工具軟件主要有MDK集成開(kāi)發(fā)工具、Keil軟件包、STM32CubeMX、JRE、程序下載軟件、串口調(diào)試助手、仿真器驅(qū)動(dòng)程序、USB轉(zhuǎn)串口驅(qū)動(dòng)程序等8個(gè),其中程序下載軟件主要是FLASHER-STM32和mcuisp等2款軟件,這些軟件都可以從各自的官網(wǎng)上下載,在選擇驅(qū)動(dòng)程序時(shí)要注意驅(qū)動(dòng)程序要與所用的硬件以及計(jì)算機(jī)操作系統(tǒng)相匹配。實(shí)踐總結(jié)與拓展
在STM32應(yīng)用開(kāi)發(fā)的8個(gè)工具軟件中,MDK集成開(kāi)發(fā)工具、Keil軟件包、STM32CubeMX、JRE和FLASHER-STM32程序下載軟件安裝方法相似,在安裝過(guò)程中需要允許修改Windows注冊(cè)表或者在安裝工具軟件之前關(guān)閉注冊(cè)表防護(hù)軟件。這幾個(gè)工具軟件的安裝比較簡(jiǎn)單,只需要按照安裝提示一步一步地操作就可以完成。串口調(diào)試助手和mcuisp程序下載軟件是綠色軟件,不需安裝。仿真器驅(qū)動(dòng)程序和USB轉(zhuǎn)串口驅(qū)動(dòng)程序的安裝方法相同,需要接入所要驅(qū)動(dòng)的硬件后才能完成驅(qū)動(dòng)程序的安裝,程序安裝結(jié)束后還需要檢查驅(qū)動(dòng)程序安裝是否正確。本任務(wù)到此結(jié)束,謝謝!任務(wù)2 點(diǎn)亮LED燈任務(wù)要求STM32的主時(shí)鐘源為外部晶體振蕩電路,程序的調(diào)試模式為SWD模式,GPIO口的PE口外接8只發(fā)光二極管的控制電路,發(fā)光二極管采用低電平有效控制,8只發(fā)光二極管的編號(hào)依次為L(zhǎng)ED1~LED8。要求用STM32CubeMX對(duì)STM32進(jìn)行適當(dāng)配置,然后生成Keil工程代碼,再在Keil中對(duì)程序進(jìn)行編譯連接,生成hex文件,然后用STM32的程序下載軟件將hex文件下載至STM32中,使LED1點(diǎn)亮,其他發(fā)光二極管熄滅。知識(shí)儲(chǔ)備
1.初識(shí)GPIO口GPIO是GeneralPurposeInputOutput的縮寫(xiě),其含義是通用的輸入輸出。不同型號(hào)的STM32,其GPIO口的數(shù)量不同,STM32最多有7個(gè)GPIO口,依次定義為GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF、GPIOG。每個(gè)GPIO口16個(gè)引腳,依次為PX0~PX15(X=A~G)。例如,GPIOA口的16個(gè)引腳為PA0~PA15。STM32F103RBT6有4個(gè)GPIO口,分別為GPIOA~GPIOD,STM32F103VET6有5個(gè)GPIO口,分別為GPIOA~GPIOE。1.初識(shí)GPIO口
STM32的GPIO口的功能與51單片機(jī)的并行口的功能相似,GPIO口的引腳一般具有多種功能?;镜墓δ苁禽斎?輸出高低電平,另外還具備其他功能,例如模擬輸入功能,外部中斷輸入功能、串口數(shù)據(jù)輸入/輸出功能等復(fù)用功能。GPIO口作基本的輸出口使用時(shí),STM32可控制GPIO口的引腳輸出高電平或者低電平,從而實(shí)現(xiàn)開(kāi)關(guān)控制功能。例如,在GPIO口的引腳上接入發(fā)光二極管控制電路,STM32就可以通過(guò)GPIO口的引腳輸出高電平或低電平來(lái)實(shí)現(xiàn)發(fā)光二極管的點(diǎn)亮或熄滅控制。1.初識(shí)GPIO口
GPIO口作基本的輸入口使用時(shí),STM32可以通過(guò)檢測(cè)GPIO口引腳的電平狀態(tài)來(lái)獲知外部輸入狀態(tài)。例如,GPIO口的引腳上接入開(kāi)關(guān)轉(zhuǎn)換電路,STM32就可以通過(guò)檢測(cè)GPIO口引腳是否為高電平來(lái)識(shí)別開(kāi)關(guān)是否閉合。GPIO口作基本的輸入/輸出口使用時(shí),可以以16位的方式并行輸入/輸出高低電平,每個(gè)引腳也可以以一位的方式輸入/輸出高低電平。1.初識(shí)GPIO口
GPIO口作基本的輸入/輸出口使用時(shí),輸入有:上拉輸入、下拉輸入、浮空輸入(既無(wú)上拉也無(wú)下拉輸入)3種輸入方式。輸出有:開(kāi)漏輸出、推挽輸出2種輸出方式。在STM32CubeMX中,這些輸入/輸出方式的表示如表所示。輸入/輸出模式STM32CubeMX中的表示說(shuō)明上拉輸入Pull-up
下拉輸入Pull-down
浮空輸入Nopull-upandnopulldown
開(kāi)漏輸出OutputOpenDrain需外部接上拉電阻才能輸出高電平推挽輸出OutputPushPullGPIO口輸入/輸出模式2.STM32的時(shí)鐘源
時(shí)鐘信號(hào)的作用是同步STM32內(nèi)部各功能部件,使其按照統(tǒng)一的節(jié)拍協(xié)調(diào)工作,缺少了時(shí)鐘信號(hào),STM32就不能正常工作。時(shí)鐘源是指時(shí)鐘信號(hào)的來(lái)源。STM32有4個(gè)時(shí)鐘源,分高頻時(shí)鐘源和低頻時(shí)鐘源2組,如圖所示。STM32的時(shí)鐘源2.STM32的時(shí)鐘源
高頻時(shí)鐘源為STM32的主時(shí)鐘源,它所產(chǎn)生的時(shí)鐘信號(hào)經(jīng)倍頻和分頻后形成系統(tǒng)時(shí)鐘(SYSCLK),再經(jīng)分頻后為內(nèi)部總線、定時(shí)器、串口、ADC等功能部件提供時(shí)鐘信號(hào)。高頻時(shí)鐘源分內(nèi)部高頻時(shí)鐘源(HSI)和外部高頻時(shí)鐘源(HSE)2種。STM32的時(shí)鐘源2.STM32的時(shí)鐘源
內(nèi)部高頻時(shí)鐘源(HSI)為內(nèi)部的高頻RC振蕩器,用來(lái)產(chǎn)生8MHz的時(shí)鐘信號(hào),RC振蕩器起振快,但振蕩頻率的誤差比較大,在頻率誤差要求不高的情況下可以選擇內(nèi)部高頻時(shí)鐘源(HSI)作為STM32的主時(shí)鐘源。外部高頻時(shí)鐘源(HSE)為外部晶體振蕩電路或陶瓷振蕩電路,由OSC_IN引腳和OSC_OUT引腳之間所接的晶體振蕩器或者陶瓷振蕩器以及穩(wěn)頻電容構(gòu)成。外部高頻時(shí)鐘源(HSE)用來(lái)產(chǎn)生頻率精準(zhǔn)的時(shí)鐘信號(hào),通常情況下其振蕩頻率選擇8MHz。外部高頻時(shí)鐘源的頻率精度高,STM32的主時(shí)鐘源一般選擇外部高頻時(shí)鐘源。STM32的時(shí)鐘源2.STM32的時(shí)鐘源
低頻時(shí)鐘源分內(nèi)部低頻時(shí)鐘源(LSI)和外部低頻時(shí)鐘源(LSE)2種,主要是為內(nèi)部實(shí)時(shí)鐘控制器(RTC)、獨(dú)立看門(mén)狗(IWDG)提供時(shí)鐘信號(hào)。內(nèi)部低頻時(shí)鐘源(LSI)為內(nèi)部的低頻RC振蕩器,用來(lái)產(chǎn)生大約40KHz的時(shí)鐘信號(hào),其頻率誤差較大,主要是為獨(dú)立看門(mén)狗(IWDG)提供時(shí)鐘信號(hào),也可以為內(nèi)部實(shí)時(shí)鐘控制器(RTC)提供時(shí)鐘信號(hào)。外部低頻時(shí)鐘源(LSE)為外部的晶體振蕩電路,由OSC32IN引腳和OSC32OUT引腳內(nèi)部的放大電路以及這2個(gè)引腳上所接的晶振及穩(wěn)頻電容所構(gòu)成,晶振的固有頻率一般選32.768KHz。外部低頻時(shí)鐘源主要是為實(shí)時(shí)鐘控制器提供時(shí)鐘信號(hào)。STM32的時(shí)鐘源3.STM32的程序啟動(dòng)模式
STM32的程序啟動(dòng)模式是指STM32復(fù)位后STM32從何處開(kāi)始執(zhí)行程序。STM32有3種程序啟動(dòng)模式,既可以從用戶(hù)閃存中開(kāi)始執(zhí)行程序,也可以從系統(tǒng)存儲(chǔ)器中開(kāi)始執(zhí)行程序,還可以從SRAM中開(kāi)始執(zhí)行程序。STM32的程序啟動(dòng)模式取決于BOOT0、BOOT1引腳的電平狀態(tài),它們之間的關(guān)系如表所示。BOOT0BOOT1啟動(dòng)模式說(shuō)明0X用戶(hù)閃存存儲(chǔ)器復(fù)位后從FLASH存儲(chǔ)器中啟動(dòng),用于正常運(yùn)行程序10系統(tǒng)存儲(chǔ)器復(fù)位后從系統(tǒng)存儲(chǔ)器中啟動(dòng),用于串口下載11SRAM復(fù)位后從SRAM中啟動(dòng),用于在SRAM中調(diào)試程序STM32的程序啟動(dòng)模式3.STM32的程序啟動(dòng)模式
用串口下載程序時(shí),STM32的啟動(dòng)電路如圖所示。圖中,BOOT1通過(guò)電阻R2接地,BOOT1=0。BOOT0通過(guò)開(kāi)關(guān)K1接VCC,同時(shí)通過(guò)電阻R3接地,K1閉合,BOOT0=1,STM32復(fù)位后從系統(tǒng)存儲(chǔ)器中開(kāi)始執(zhí)行程序,STM32用串口下載程序。K1斷開(kāi),BOOT0=0,STM32復(fù)位后從用戶(hù)閃存中開(kāi)始執(zhí)行程序,STM32執(zhí)行用戶(hù)程序。由上可以看出,用串口下載程序的方法是,先閉合K1,然后復(fù)位STM32,待STM32下載完程序后再斷開(kāi)K1,最后再?gòu)?fù)位STM32。這樣STM32就開(kāi)始運(yùn)行串口所下載的程序。STM32啟動(dòng)電路4.STM32的程序調(diào)試模式
STM32的程序調(diào)試模式有JTAG模式和SWD模式2種。JTAG是JointTestActionGroup的縮寫(xiě),其含義是聯(lián)合測(cè)試行動(dòng)組,它是一種PCB和IC測(cè)試標(biāo)準(zhǔn)。標(biāo)準(zhǔn)的JTAG接口由JTMS、JTCK、JTDI、JTDO共4根線組成,它們的含義如右側(cè)上表所示。SWD是SerialWireDebug的縮寫(xiě),其含義是串行調(diào)試。SWD接口由SWDIO和SWDCLK共2根線組成,它們的含義如下表所示。在高速模式下SWD模式比JTAG更加可靠。所以,只要所選用的仿真器支持SWD調(diào)試模式,通常情況下用戶(hù)就會(huì)選擇SWD調(diào)式模式。接口線含義STM32中的引腳JTMS模式選擇PA13JTCK時(shí)鐘PA14JTDI數(shù)據(jù)輸入PA15JTDO數(shù)據(jù)輸出PB3接口線含義STM32中的引腳SWDIO串行數(shù)據(jù)輸入輸出線PA13SWDCLK串行時(shí)鐘線PA14STM32的程序啟動(dòng)模式STM32的程序啟動(dòng)模式5.發(fā)光二極管的控制電路
發(fā)光二極管常用的控制電路如圖所示。圖a中,發(fā)光二極管LED1的陽(yáng)極通過(guò)電阻R1接至正電源VCC,陰極接STM32的控制端PA0。PA0=0時(shí),LED1亮,PA0=1時(shí),LED1滅。即控制端口為低電平時(shí),發(fā)光二極管亮。習(xí)慣上我們把這種發(fā)光二極管的控制叫低電平有效控制,簡(jiǎn)稱(chēng)為低有效控制。圖b中,發(fā)光二極管LED1的陰極通過(guò)電阻R1接地,陽(yáng)極接STM32的控制端口PA0。PA0=0時(shí),LED1滅,PA0=1時(shí),LED1亮,即控制端口為高電平時(shí)發(fā)光二極管點(diǎn)亮。這種控制叫高有效控制。圖中,R1為限流電阻,用來(lái)保護(hù)發(fā)光二極管,R1的大小取決于發(fā)光二極管點(diǎn)亮?xí)r的電壓降以及允許通過(guò)的電流,通常情況下取1KΩ的電阻。發(fā)光二極管的控制電路實(shí)現(xiàn)方法與步驟任務(wù)2的硬件電路:
1.搭建電路1.搭建電路圖中,R1、C1和S1構(gòu)成了STM32的復(fù)位電路,它們接在STM32的NRST引腳上。NRST引腳為STM32的復(fù)位腳,NRST=0時(shí),STM32復(fù)位,NRST=1時(shí),STM32正常工作。上電時(shí),電源通過(guò)電阻R1對(duì)電容C1充電,由于電容兩端電壓不能突變,NRST端為低電平,STM32復(fù)位。過(guò)一段時(shí)間后,電容兩端電荷充滿(mǎn),電容等效為開(kāi)路,NRST端為高電平,STM32結(jié)束復(fù)位,開(kāi)始運(yùn)行程序。S1為復(fù)位按鈕,按下S1,NRST端為低電平,STM32復(fù)位,同時(shí)釋放C1兩端電荷。斷開(kāi)S1后,電源通過(guò)電阻R1對(duì)電容C1充電,重復(fù)前面的上電復(fù)位過(guò)程。
任務(wù)2硬件電路圖1.搭建電路R2、R3和K1為STM32的啟動(dòng)模式選擇電路。K1閉合,BOOT0=1,BOOT1=0,按復(fù)位鍵S1,STM32運(yùn)行系統(tǒng)存儲(chǔ)器中的程序,STM32開(kāi)始用串口下載程序,并將程序存放在FLASH存儲(chǔ)器中。程序下載結(jié)束后斷開(kāi)K1,此時(shí)BOOT0=0,BOOT1=0,再按復(fù)位鍵S1,STM32運(yùn)行FLASH存儲(chǔ)器中的程序,即運(yùn)行用串口所下載的程序。C2、C3、Y1、R4為晶體振蕩電路,Y1為晶體振蕩器,在電路中起反饋選頻作用,它的固有頻率即為振蕩電路的頻率。在主頻振蕩電路中Y1一般選用8MHz的晶體振蕩器。R5~R12、LED1~LED8為8只發(fā)光二極管的控制電路,這8只發(fā)光二極管采用低有效控制。
任務(wù)2硬件電路圖2.新建STM32CubeMX工程新建STM32CubeMX工程的方法如下:(1)在計(jì)算機(jī)的D盤(pán)新建“D:\ex”文件夾,用來(lái)保存各任務(wù)中的程序文件。(2)啟動(dòng)STM32CubeMX。雙擊桌面上的“”圖標(biāo),打開(kāi)如圖所示的STM32CubeMX窗口。(3)新建工程。在STM32CubeMX窗口點(diǎn)擊菜單欄上的【File】→【NewProject】菜單,打開(kāi)新建工程對(duì)話(huà)框。
STM32CubeMX窗口2.新建STM32CubeMX工程(4)選擇單片機(jī)第1步:在新建工程對(duì)話(huà)框中點(diǎn)擊“MCU/MPUSelector”標(biāo)簽,然后在對(duì)話(huà)框左邊的查找下拉列表框中輸入開(kāi)發(fā)板上所使用STM32的型號(hào)。本書(shū)配套開(kāi)發(fā)板上所用的STM32為STM32VET6,所以應(yīng)在查找下拉列表框中輸入“STM32F103VE”,此時(shí)對(duì)話(huà)框右下方的“MCUs/MPUsList”列表中就會(huì)顯示STM32F103VETx單片機(jī),如圖所示。
新建工程對(duì)話(huà)框2.新建STM32CubeMX工程(4)選擇單片機(jī)第2步:用鼠標(biāo)左鍵雙擊“MCUs/MPUsList”列表中的“STM32F103VETx”,打開(kāi)如圖所示的STM32CubeMX工程窗口。
STM32CubeMX工程窗口3.配置STM32的硬件資源(1)配置調(diào)試模式第1步:在工程窗口中單擊“Pinout&Configuration”標(biāo)簽,然后點(diǎn)擊左邊的“Categories”標(biāo)簽,再在左邊的列表框中點(diǎn)擊“SystemCore”項(xiàng),將“SystemCore”項(xiàng)展開(kāi)。第2步:點(diǎn)擊“SystemCore”項(xiàng)中的“SYS”子項(xiàng),窗口的中間會(huì)展示出系統(tǒng)模式與配置窗口。第3步:系統(tǒng)模式與配置窗口中點(diǎn)擊“Debug”下拉列表框,從展開(kāi)的列表項(xiàng)中選擇“SerialWire”列表項(xiàng),將調(diào)試模式設(shè)置成串行線模式,此時(shí)窗口右邊的引腳視圖中的PA13、PA14引腳顯綠色狀,并且這2個(gè)引腳分別被配置成SYS_JTMS-SWDIO腳和SYS_JTCLK-SWCLK腳。
STM32CubeMX工程窗口3.配置STM32的硬件資源(2)選擇高頻時(shí)鐘源第1步:在工程窗口中,點(diǎn)擊左邊列表框中的“RCC”列表項(xiàng),窗口的中間會(huì)出現(xiàn)“RCCModeandConfiguration”(RCC模式與配置)窗口,如圖所示。第2步:在RCC模式與配置窗口中點(diǎn)擊“HighSpeedClock(HSE)”下拉列表框,從中選擇“Crystal/CeramicResonator”列表項(xiàng),即外部高速時(shí)鐘為晶體/陶瓷諧振器,參考右圖。
配置時(shí)鐘源3.配置STM32的硬件資源(3)配置GPIO引腳從任務(wù)硬件電路可知,LED1~LED8采用低有效控制,本任務(wù)中需要將PE0~PE7配置成輸出口。根據(jù)任務(wù)要求,應(yīng)將PE口的PE0口輸出低電平,其他7個(gè)引腳輸出高電平,輸出速度任意。配置PE0~PE7的方法如下:第1步:在工程窗口的引腳視圖中,在右下角的查找引腳下拉列表框中輸入引腳PE0(字符的大小寫(xiě)任意),然后按回車(chē)鍵Enter,此時(shí)引腳視圖中的PE0引腳呈閃爍狀態(tài)。然后單擊引腳視圖中的PE0引腳,在彈出的菜單中點(diǎn)擊“GPIO_Output”菜單項(xiàng),將PE0引腳設(shè)置為GPIO口的輸出腳,如圖所示。
設(shè)置PE03.配置STM32的硬件資源(3)配置GPIO引腳第2步:重復(fù)第1步,將PE1~PE7設(shè)置成輸出腳。第3步:在工程窗口中,單擊左邊的“GPIO”列表項(xiàng),窗口的中間就會(huì)出現(xiàn)GPIO口的模式與配置窗口,如右圖所示。第4步:在圖中單擊GPIO口配置列表框中的PE0列表項(xiàng),GPIO口配置列表框的下面就會(huì)出現(xiàn)“PE0Configuration”框架。第5步:在“PE0Configuration”框架中點(diǎn)擊“GPIOoutputlevel”下拉列表框,從中選擇“Low”,將PE0引腳的復(fù)位后的電平設(shè)置為低電平。配置GPIO口3.配置STM32的硬件資源(3)配置GPIO引腳第6步:按同樣的方式將“GPIOmode”(GPIO口的模式)設(shè)置成“OutputPushPull”(推挽輸出),將“GPIOPull-up/Pull-down”(GPIO口的上拉電阻和下拉電阻)設(shè)置成“NoPull-upandnopull-down”(無(wú)上拉電阻也無(wú)下拉電阻),將“Maximumoutputspeed”(最大輸出速度)設(shè)置成“High”(高速)。配置GPIO口3.配置STM32的硬件資源(3)配置GPIO引腳第7步:重復(fù)第4步~第6步,將PE1~PE7引腳配置成輸出高電平、推挽輸出、既無(wú)上拉電阻也無(wú)下拉電阻,各引腳配置后的狀態(tài)如右圖所示?!菊f(shuō)明】
GPIO配置窗口中允許將多引腳同時(shí)配置為相同的參數(shù),以同時(shí)配置PE1~PE4這4個(gè)引腳為例,在GPIO口配置列表框點(diǎn)擊PE1,然后按住Ctrl鍵后再點(diǎn)擊PE2、PE3、PE4,PE1~PE4同時(shí)選中,然后在GPIO口配置列表框下面的Configuration框架中設(shè)置所選擇GPIO的參數(shù)。各引腳配置后的狀態(tài)3.配置STM32的硬件資源(4)配置時(shí)鐘第1步:在STM32CubeMX的工程窗口中點(diǎn)擊“ClockConfiguration”標(biāo)簽,進(jìn)入時(shí)鐘配置頁(yè)面,如右圖所示。第2步:設(shè)置外部高速時(shí)鐘的時(shí)鐘頻率。在圖所示的頁(yè)面的“Inputfrequency”文本框中輸入開(kāi)發(fā)板上所接的晶振的頻率,本例中晶振的頻率為8MHz,所以此文本框中需輸入8。第3步:點(diǎn)擊“PLLSourceMux”(鎖相環(huán)時(shí)鐘源的多路開(kāi)關(guān))中的HSE單選鈕,將鎖相環(huán)的時(shí)鐘源設(shè)置為外部高速時(shí)鐘,此時(shí)PLL標(biāo)簽中將顯示“8”。
時(shí)鐘配置頁(yè)面3.配置STM32的硬件資源第4步:?jiǎn)螕簟癙LLMul”下拉列表框,將鎖相環(huán)倍頻系數(shù)設(shè)置成9。第5步:點(diǎn)擊“SystemClockMux”(系統(tǒng)時(shí)鐘多路選擇開(kāi)關(guān))中的PLLCLK單選鈕,將系統(tǒng)時(shí)鐘的來(lái)源設(shè)置為鎖相環(huán)時(shí)鐘,此時(shí)SYSCLK標(biāo)簽中將顯示“72”,表示此時(shí)系統(tǒng)時(shí)鐘的頻率為72MHz。第6步:?jiǎn)螕簟癆HBPrescaler”下拉列表框,將AHB的預(yù)分頻系統(tǒng)設(shè)置成1,此時(shí)HCLK(高性能總線時(shí)鐘)的頻率剛好為其最大值72MHz。第7步:?jiǎn)螕簟癆PB1Prescaler”下拉列表框,將APB1的預(yù)分頻系統(tǒng)設(shè)置成2,此時(shí)PCLK1的頻率剛好為其最大值36MHz。
【說(shuō)明】
在時(shí)鐘配置頁(yè)面中,如果某處的時(shí)鐘頻率超過(guò)了其最大值,則對(duì)應(yīng)的文本框?qū)⒊始t色顯示,此時(shí)修改其對(duì)應(yīng)的分頻系數(shù)或倍頻系數(shù)。時(shí)鐘配置頁(yè)面4.管理STM32CubeMX工程步驟第1步:在STM32CubeMX的工程窗口中點(diǎn)擊“ProjectManager”標(biāo)簽,進(jìn)入工程管理頁(yè)面。第2步:在頁(yè)面的“ProjectName”文本框中輸入工程名“Task2”,然后單擊“ProjectLocation”下面的“Browse”按鈕,打開(kāi)“ChooseProjectFolder”對(duì)話(huà)框,在對(duì)話(huà)框中選擇保存工程的文件夾“D:\ex”,此時(shí)“ProjectLocation”下面的文本框中將顯示保存工程文件的文件夾“D:\ex”。工程管理頁(yè)面4.管理STM32CubeMX工程第3步:?jiǎn)螕簟癟oolchain/IDE”下拉列表框,從中選擇我們后面進(jìn)行STM32開(kāi)發(fā)時(shí)所用的開(kāi)發(fā)工具“MDK-AMRV5”,即Keil5。其他的項(xiàng)選擇默認(rèn)值。第4步:在右圖所示的工程管理頁(yè)面中,單擊頁(yè)面左邊的“CodeGenerator”標(biāo)簽,頁(yè)面的右邊就會(huì)顯示代碼生成器的配置選項(xiàng)。
工程管理頁(yè)面4.管理STM32CubeMX工程第5步:在右圖的頁(yè)面中,單擊“Copyonlythenecessarylibraryfiles”(只復(fù)制必要的庫(kù)文件)單選鈕。第6步:在“Generatedfiles”框架中勾選“Generateperipheralinitializationasapairof‘.c/.h’filesperperipheral”復(fù)選框,使STM32CubeMX在生成代碼時(shí)為每個(gè)外設(shè)生成一對(duì)‘.c/.h’的外設(shè)初始化文件。第7步:在窗口中單擊菜單欄上的“File”→“SaveProject”菜單項(xiàng),或者按快捷鍵Ctrl+S,保存工程文件。代碼生成器配置5.生成Keil工程代碼步驟(1)在STM32CubeMX工程窗口中單擊“GENERATECODE”按鈕,STM32CubeMX將會(huì)按照用戶(hù)的配置要求生成C語(yǔ)言程序代碼,并顯示代碼生成的進(jìn)度,如右側(cè)上圖所示。代碼生成結(jié)束后會(huì)出現(xiàn)如下圖所示的代碼生成提示框。(2)在代碼生成提示框中單擊“OpenProject”按鈕,系統(tǒng)就會(huì)調(diào)用Keil5,并打開(kāi)當(dāng)前所生成的工程。(3)關(guān)閉STM32CubeMX工程窗口。產(chǎn)生代碼代碼生成提示框5.生成Keil工程代碼步驟(4)在Keil5集成開(kāi)發(fā)環(huán)境中,單擊“Project”窗口中“Application/User”文件夾前面的“+”號(hào),打開(kāi)文件夾,找到main.c文件名,然后雙擊main.c文件名,集成開(kāi)發(fā)環(huán)境的右邊窗口中就會(huì)顯示main.c文件的內(nèi)容,如下圖所示。打開(kāi)main.c文件6.配置Keil工程步驟Keil工程的配置主要是配置Keil的輸出文件。目的是,讓Keil工程編譯時(shí)能產(chǎn)生STM32的執(zhí)行文件(Hex文件),以便后續(xù)用串口將此Hex文件下載至STM32中。第1步:在Keil窗口中單擊目標(biāo)選項(xiàng)圖標(biāo)按鈕“”,打開(kāi)如右圖所示的“OptionforTarget”對(duì)話(huà)框。第2步:在“OptionforTarget”對(duì)話(huà)框中單擊“Output”標(biāo)簽,進(jìn)入Output頁(yè)面?!癘ptionforTarget”對(duì)話(huà)框6.配置Keil工程步驟第3步:在Output頁(yè)面中勾選“CreateHEXFile”復(fù)選框。如果要修改hex文件存放的位置,則可點(diǎn)擊Output頁(yè)面中“SelectfolderforObject”按鈕,然后在彈出的對(duì)話(huà)框中選擇hex文件存放的位置。第4步:在“OptionforTarget”對(duì)話(huà)框中單擊“OK”按鈕,完成輸出文件的配置。Output頁(yè)面7.編譯連接程序配置好工程后就可以進(jìn)行編譯、連接了,以便生成STM32可以直接執(zhí)行的16進(jìn)制文件(HEX文件)。編譯、連接的方法是,在Keil工程窗口中,單擊圖標(biāo)工具欄上的重新編譯連接圖標(biāo)按鈕“”,如右圖所示。這時(shí),Keil窗口下面的“BuildOutput”窗口中會(huì)顯示編譯信息,如果源程序中存在語(yǔ)法上的錯(cuò)誤,輸出窗口中將會(huì)有錯(cuò)誤報(bào)告出現(xiàn),雙擊錯(cuò)誤報(bào)告行,可以定位到出錯(cuò)的位置。對(duì)源程序反復(fù)修改后最終會(huì)得到如右圖所示的結(jié)果。提示生成了Hex文件錯(cuò)誤數(shù)報(bào)告編譯連接重新連接BuildOutput窗口Keil工程窗口8.下載程序程序下載有用仿真器下載、用串口下載等多種方式,用仿真器下載程序適用于手中有源程序的情況,用串口下載程序常用于手中無(wú)仿真器或者沒(méi)有源程序而只有Hex文件的情況。任務(wù)2中我們用串口下載程序,下載軟件為mcuisp,下載程序的方法如下:第1步:按照前面介紹的方法編譯連接程序。第2步:用USB線連接計(jì)算機(jī)與開(kāi)發(fā)板,并給開(kāi)發(fā)板上電。第3步:在開(kāi)發(fā)板上將程序運(yùn)行模式開(kāi)關(guān)拔至“接VCC”位置,即使K1處于閉合狀態(tài),也就是STM32復(fù)位后從系統(tǒng)存儲(chǔ)器中啟動(dòng)程序。第4步:按開(kāi)發(fā)板上的復(fù)位鍵,讓STM32復(fù)位,STM32就從系統(tǒng)存儲(chǔ)器中啟動(dòng)程序。第5步:按照任務(wù)1中所介紹的方法查看USB口映射的串口號(hào),并記錄其串口號(hào)。
8.下載程序第6步:在文件夾中找到“mcuisp.exe”文件,然后雙擊“mcuisp.exe”文件,打開(kāi)mcuisp工作窗口。第7步:在mcuisp工作窗口中點(diǎn)擊菜單欄上的“Port”菜單,“Port”菜單中就會(huì)以子菜單的形式顯示計(jì)算機(jī)中當(dāng)前可用的串口號(hào),然后點(diǎn)擊“COM3:空閑USB-SERIALCH340”菜單項(xiàng)(第5步所看查到的串口號(hào))。第8步:在mcuisp工作窗口中點(diǎn)擊打開(kāi)文件按鈕“”,打開(kāi)“選擇要下載的文件”對(duì)話(huà)框。mcuisp工作窗口選擇下載的串口8.下載程序第9步:在“選擇要下載的文件”對(duì)話(huà)框的文件路徑下拉列表框中選擇下載文件所在位置“D:\ex\Task2\MDK-ARM\Task2”,在文件格式下拉列表框中選擇文件類(lèi)型“hex、a79、sim”,對(duì)話(huà)框中間的列表框中會(huì)顯示文件夾中所有hex、a79、sim文件,如右圖所示。然后點(diǎn)擊我們所要下載的文件“Task2.hex”,再點(diǎn)擊“打開(kāi)”按鈕,mcuisp工作窗口的“聯(lián)機(jī)下載時(shí)的程序文件”文本框中會(huì)顯示所要下載的文件“D:\ex\Task2\MDK-ARM\Task2\Task2.hex”。選擇文件對(duì)話(huà)框8.下載程序第10步:在mcuisp工作窗口中點(diǎn)擊“STMISP”標(biāo)簽名,然后在“STMISP”標(biāo)簽中點(diǎn)擊“開(kāi)始編程”按鈕,再按開(kāi)發(fā)板上的復(fù)位鍵,mcuisp軟件就會(huì)用所選的串口將Task2.hex文件下載至STM32中,程序下載結(jié)束后,窗口右邊會(huì)顯示下載的結(jié)果提示。第11步:將開(kāi)發(fā)板上的程序運(yùn)行模式開(kāi)關(guān)拔至“接地”位置,讓STM32復(fù)位后從FLASH存儲(chǔ)器中啟動(dòng)程序,然后按開(kāi)發(fā)板上的復(fù)位鍵,我們可以看到開(kāi)發(fā)板上LED1點(diǎn)亮,其他發(fā)光二極管熄滅。mcuisp工作窗口實(shí)踐總結(jié)與拓展
基于STM32CubeMX的軟件開(kāi)發(fā)方式是現(xiàn)在和今后STM32應(yīng)用程序的主要開(kāi)發(fā)方式,這種方式只需在STM32CubeMX的示意圖中作一些簡(jiǎn)單的選擇和配置,無(wú)需詳細(xì)了解STM32的工作原理和API函數(shù),就可以生成STM32的硬件驅(qū)動(dòng)程序。這種方式的一般步驟是:(1)在STM32CubeMX中配置調(diào)試方式、系統(tǒng)時(shí)鐘、GPIO口等片上外設(shè);(2)用STM32CubeMX生成Keil工程文件和HAL庫(kù)代碼;(3)在C程序的指定位置處添加用戶(hù)代碼;(4)編譯調(diào)試;(5)下載運(yùn)行。STM32的程序下載有多種方式,目前比較流行的方式主要有2種,一是用串口下載,二是用仿真器下載。任務(wù)2中主要介紹了用串口下載程序的方法,其下載軟件是mcuisp,它是實(shí)際應(yīng)用中常用的一種方法。STM32的程序下載是STM32應(yīng)用中的最基本技能,必須熟練掌握。本任務(wù)到此結(jié)束,謝謝!任務(wù)3控制LED閃爍任務(wù)要求STM32的PE0引腳上接有發(fā)光二極管的控制電路,發(fā)光二極管采用低電平有效控制,編號(hào)為L(zhǎng)ED1。要求用STM32CubeMX對(duì)STM32進(jìn)行適當(dāng)配置,然后生成Keil工程代碼,再在Keil中添加相關(guān)的程序代碼,使LED1按每秒1次的頻率進(jìn)行閃爍顯示。知識(shí)儲(chǔ)備
1.Keil工程的結(jié)構(gòu)任務(wù)2中,Keil工程文件為T(mén)ask2.uvprojx,雙擊該文件就可以打開(kāi)如圖所示的Keil工程窗口。由圖可以看出Keil工程的窗口主要由菜單欄、圖標(biāo)工具欄和3個(gè)小窗口組成。左邊的小窗口為工程窗口,用來(lái)顯示Keil工程的工程名、工程中的組以及各組所包含的文件。右邊的小窗口為文件編輯窗口,用來(lái)顯示、編輯所打開(kāi)的文件。文件編輯窗口中顯示的是main.c文件。下邊的窗口是編譯輸出窗口,用來(lái)顯示編譯連接的過(guò)程和編譯連接的結(jié)果。用STM32CubeMX生成的Keil工程1.Keil工程的結(jié)構(gòu)
在工程窗口中,第1行Project后面的字符為工程名Task2。點(diǎn)擊Project左邊的“+”號(hào),將Task2工程展開(kāi),Task2工程主要由Application/MDK-ARM、Application/User、Drivers/STM32F1xx_HAL_Driver和Drivers/CMSIS等4個(gè)組組成,再點(diǎn)擊各個(gè)組名前面的“+”,將組展開(kāi),可以看到各個(gè)組包含了若干個(gè)文件。這4個(gè)組的作用如表所示。組組內(nèi)文件功能Application/MDK-ARMstartup_stm32f103xe.s啟動(dòng)文件Application/Usermain.cgpio.cstm32f1xx_it.cstm32f1xx_hal_msp.c用戶(hù)編程文件Drivers/STM32F1xx_HAL_Driverstm32f1xx_hal_gpio_ex.cstm32f1xx_hal_tim.cstm32f1xx_hal_tim_ex.cstm32f1xx_hal.cstm32f1xx_hal_rcc.cstm32f1xx_hal_rcc_ex.cstm32f1xx_hal_gpio.cstm32f1xx_hal_dma.cstm32f1xx_hal_cortex.cstm32f1xx_hal_pwr.cstm32f1xx_hal_flash.cstm32f1xx_hal_flash_ex.cstm32f1xx_hal_exti.cHAL(硬件抽象層)庫(kù)函數(shù)文件Drivers/CMSISsystem_stm32f1xx.c系統(tǒng)初始化文件Task2工程中的組2.程序編寫(xiě)規(guī)范
用STM32CubeMX生成Keil工程時(shí),Keil工程中的C程序是按照標(biāo)準(zhǔn)的模塊化程序結(jié)構(gòu)設(shè)計(jì)的,用戶(hù)在main.c文件中編寫(xiě)程序時(shí),需要我們遵守職業(yè)規(guī)范,按照模塊化程序設(shè)計(jì)的要求,將程序代碼填寫(xiě)在main.c文件中各個(gè)指定的地方。用戶(hù)代碼需要填寫(xiě)在各自的“USERCODEBEGIN”和“USERCODEEND”之間。2.程序編寫(xiě)規(guī)范
以任務(wù)2中main.c文件為例,用戶(hù)的頭文件包含、自定義類(lèi)型、變量定義、函數(shù)說(shuō)明等部分的填寫(xiě)位置如表所示。行號(hào)代碼21222324252627282930313233343536373839/*Includes--*/#include"main.h"http://22行、23行為系統(tǒng)生成的頭文件包含#include"gpio.h"/*Privateincludes--*//*USERCODEBEGINIncludes*///用戶(hù)頭文件包含區(qū),此處填寫(xiě)用戶(hù)的頭文件包含代碼/*USERCODEENDIncludes*//*Privatetypedef*//*USERCODEBEGINPTD*///用戶(hù)數(shù)據(jù)類(lèi)型定義區(qū),此處填寫(xiě)用戶(hù)的類(lèi)型定義(typedef)代碼/*USERCODEENDPTD*//*Privatedefine*//*USERCODEBEGINPD*///用戶(hù)符號(hào)定義區(qū),此處填寫(xiě)用戶(hù)定義(define)符號(hào)/*USERCODEENDPD*/頭文件包含、自定義類(lèi)型、函數(shù)說(shuō)明等部分的填寫(xiě)位置2.程序編寫(xiě)規(guī)范
表中的行號(hào)是代碼所在行在main.c文件中的行號(hào),代碼中的中文注釋是有關(guān)用戶(hù)代碼填寫(xiě)位置的說(shuō)明。行號(hào)代碼40414243444546474849505152535455/*Privatemacro*//*USERCODEBEGINPM*///用戶(hù)宏定義區(qū),此處填寫(xiě)用戶(hù)宏定義代碼/*USERCODEENDPM*//*Privatevariables*//*USERCODEBEGINPV*/
//用戶(hù)全局變量定義區(qū),此處填寫(xiě)定義全局變量的代碼/*USERCODEENDPV*//*Privatefunctionprototypes*/voidSystemClock_Config(void);//系統(tǒng)生成的函數(shù)說(shuō)明/*USERCODEBEGINPFP*/
//用戶(hù)函數(shù)原型說(shuō)明區(qū),此處填寫(xiě)用戶(hù)函數(shù)說(shuō)明的代碼/*USERCODEENDPFP*/頭文件包含、自定義類(lèi)型、函數(shù)說(shuō)明等部分的填寫(xiě)位置2.程序編寫(xiě)規(guī)范
用戶(hù)函數(shù)的定義和函數(shù)調(diào)用語(yǔ)句的填寫(xiě)位置如表所示。行號(hào)代碼57585960…666768697071727374757677/*Privateusercode*//*USERCODEBEGIN0*/
//用戶(hù)代碼0區(qū),此處填寫(xiě)用戶(hù)自定義的函數(shù)/*USERCODEEND0*/……intmain(void)//main()函數(shù){/*USERCODEBEGIN1*/
//用戶(hù)代碼1區(qū),此處定義main()函數(shù)中的局部變量/*USERCODEEND1*/
/*MCUConfiguration*//*Resetofallperipherals,InitializestheFlashinterfaceandtheSystick.*/HAL_Init();函數(shù)定義和函數(shù)調(diào)用語(yǔ)句的填放位置2.程序編寫(xiě)規(guī)范
行號(hào)代碼7879808182838485868788899091929394/*USERCODEBEGINInit*//*USERCODEENDInit*//*Configurethesystemclock*/SystemClock_Config();/*USERCODEBEGINSysInit*//*USERCODEENDSysInit*//*Initializeallconfiguredperipherals*/MX_GPIO_Init();/*USERCODEBEGIN2*/
//用戶(hù)代碼2區(qū),此處填寫(xiě)其他硬件軟件初始化代碼/*USERCODEEND2*/函數(shù)定義和函數(shù)調(diào)用語(yǔ)句的填放位置2.程序編寫(xiě)規(guī)范
行號(hào)代碼9596979899100101102103104…143144145/*Infiniteloop*//*USERCODEBEGINWHILE*/while(1){//while(1)代碼區(qū),此處填寫(xiě)CPU要反復(fù)處理的事務(wù)(while(1)中的代碼)/*USERCODEENDWHILE*//*USERCODEBEGIN3*/}/*USERCODEEND3*/}……/*USERCODEBEGIN4*///用戶(hù)代碼4區(qū),此處填寫(xiě)用戶(hù)函數(shù)定義/*USERCODEEND4*/函數(shù)定義和函數(shù)調(diào)用語(yǔ)句的填放位置3.GPIO口輸出特性
GPIO口一位引腳的結(jié)構(gòu)如圖所示。圖中右邊為端口保護(hù)結(jié)構(gòu)圖,下面是數(shù)據(jù)輸出結(jié)構(gòu)圖,上面是數(shù)據(jù)輸入結(jié)構(gòu)圖。端口保護(hù)由2只二極管組成。當(dāng)I/O引腳輸入電壓高于VDD時(shí),上面的二極導(dǎo)通,端口上的電壓鉗位在VDD上。當(dāng)I/O引腳輸入電壓低于VSS時(shí),下面的二極導(dǎo)通,端口上的電壓鉗位在VSS上。這樣可防止過(guò)高或過(guò)低的輸入電壓損壞芯片。GPIO口一位引腳的結(jié)構(gòu)圖3.GPIO口輸出特性
數(shù)據(jù)輸出主要有3種,一是寫(xiě)入“位設(shè)置/清除寄存器”的位輸出,二是直接寫(xiě)入“輸出數(shù)據(jù)寄存器”的16位并行輸出,三是來(lái)自片上外設(shè)的復(fù)用功能輸出。由上可以看出,STM32的GPIO口既可以位輸出,又可以并行輸出。GPIO口一位引腳的結(jié)構(gòu)圖3.GPIO口輸出特性
輸出驅(qū)動(dòng)器由輸出控制、P-MOS管和N-MOS管構(gòu)成。P-MOS管和N-MOS管為輸出驅(qū)動(dòng)級(jí),可以實(shí)現(xiàn)推挽輸出和開(kāi)漏輸出2種輸出模式。推挽輸出是指輸入至輸出驅(qū)動(dòng)器的電平分別為0和1時(shí),輸出級(jí)的P-MOS管和N-MOS管輪流導(dǎo)通和關(guān)閉。推挽輸出具有較大的驅(qū)動(dòng)能力和很高的開(kāi)關(guān)速度,GPIO口作輸出口使用時(shí),通常是將其設(shè)置為推挽輸出模式。GPIO口一位引腳的結(jié)構(gòu)圖3.GPIO口輸出特性
開(kāi)漏輸出,輸出驅(qū)動(dòng)級(jí)的P-MOS管始終處于關(guān)閉狀態(tài),輸出驅(qū)動(dòng)級(jí)只有N-MOS管工作,N-MOS管的漏極與電源是斷開(kāi)的。當(dāng)輸出驅(qū)動(dòng)器的輸入為0時(shí),N-MOS管導(dǎo)通,輸出級(jí)輸出低電平0;當(dāng)輸出驅(qū)動(dòng)器的輸入為1時(shí),N-MOS管關(guān)閉,輸出級(jí)不能正常輸出高電平1。開(kāi)漏輸出需要在I/O引腳上外接上拉電阻,才能向負(fù)載輸出高電平1。GPIO口一位引腳的結(jié)構(gòu)圖3.GPIO口輸出特性
開(kāi)漏輸出常用于I2C等需要實(shí)現(xiàn)“線與”功能的場(chǎng)合。另外,需要輸出高于3.3V高電平的場(chǎng)合中也常將GPIO口的輸出設(shè)置為開(kāi)漏輸出。例如,若需要GPIO口輸出5V的高電平,就可以將GPIO口的輸出設(shè)置為開(kāi)漏輸出,而在I/O引腳上對(duì)5V電源接一個(gè)上拉電阻。GPIO口一位引腳的結(jié)構(gòu)圖4.GPIO口的輸出函數(shù)
HAL庫(kù)中共定義了8個(gè)GPIO函數(shù),這些函數(shù)的定義位于stm32f1xx_hal_gpio.c文件中,它們的說(shuō)明位于stm32f1xx_hal_gpio.h文件中。這8個(gè)GPIO函數(shù)如圖所示。在這8個(gè)函數(shù)中,HAL_GPIO_WritePin()、HAL_GPIO_TogglePin()是GPIO口輸出操作函數(shù),HAL_GPIO_Init()和HAL_GPIO_DeInit()是GPIO口初始化函數(shù)。GPIO函數(shù)4.GPIO口的輸出函數(shù)
(1)HAL_GPIO_WritePin()函數(shù)原型voidHAL_GPIO_WritePin(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin,GPIO_PinStatePinState);功能設(shè)置引腳的狀態(tài),即將輸出引腳設(shè)置成1或0。參數(shù)1GPIOx:引腳所在的端口,取值為GPIOA~GPIOH。參數(shù)2GPIO_Pin:引腳編號(hào)。取值為GPIO_PIN_0~GPIO_PIN_15、GPIO_PIN_All或者GPIO_PIN_0~GPIO_PIN_15中多個(gè)引腳按位或。GPIO_PIN_i代表的是第i位為1其他位為0的二進(jìn)制數(shù),可以用1<<i表示。GPIO_PIN_All代表的是0xffff。參數(shù)3PinState:所要設(shè)置的狀態(tài)。取值為GPIO_PIN_RESET(0)、GPIO_PIN_SET(1)。GPIO_PIN_RESET和GPIO_PIN_SET是2個(gè)枚舉值,不能用數(shù)值0、1表示,否則程序編譯會(huì)出現(xiàn)警告錯(cuò)誤。返回值無(wú)。函數(shù)的用法4.GPIO口的輸出函數(shù)
(1)HAL_GPIO_WritePin()函數(shù)【舉例】HAL_GPIO_WritePin(GPIOB,GPIO_PIN_11,GPIO_PIN_SET);//將PB11置1HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5|GPIO_PIN_7,GPIO_PIN_SET);//將PB5、PB7置1HAL_GPIO_WritePin(GPIOE,(1<<3)|(1<<4),GPIO_PIN_RESET);//將PE3、PE4清04.GPIO口的輸出函數(shù)
(2)HAL_GPIO_TogglePin()函數(shù)【舉例】HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_11);//將PB11的狀態(tài)取反原型voidHAL_GPIO_TogglePin(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);功能將指定的GPIO引腳的狀態(tài)取反。參數(shù)1GPIOx:引腳所在的端口,取值為GPIOA~GPIOH。參數(shù)2GPIO_Pin:引腳編號(hào)。取值為GPIO_PIN_0~GPIO_PIN_15、GPIO_PIN_All或者GPIO_PIN_0~GPIO_PIN_15中多個(gè)引腳按位或。GPIO_PIN_i代表的是第i位為1其他位為0的二進(jìn)制數(shù),可以用1<<i表示。GPIO_PIN_All代表的是0xffff。返回值無(wú)。函數(shù)的用法4.GPIO口的輸出函數(shù)
(3)HAL_GPIO_Init()函數(shù)原型voidHAL_GPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_Init);功能用指定的參數(shù)初始化GPIO口。參數(shù)1GPIOx:引腳所在的端口,取值為GPIOA~GPIOH。參數(shù)2GPIO_Init:存放初始化參數(shù)的結(jié)構(gòu)體變量的指針。返回值無(wú)。說(shuō)明該函數(shù)主要用于系統(tǒng)初始化時(shí)調(diào)用,如果在系統(tǒng)運(yùn)行的過(guò)程中不更改引腳的配置,用戶(hù)一般不使用該函數(shù)。函數(shù)的用法4.GPIO口的輸出函數(shù)
(3)HAL_GPIO_Init()函數(shù)該函數(shù)的使用方法是,先定義一個(gè)GPIO_InitTypeDef型的結(jié)構(gòu)體變量,然后對(duì)該變量的各成員賦初值,再調(diào)用該函數(shù)配置GPIO口。其中,GPIO_InitTypeDef類(lèi)型的定義如下:typedefstruct{uint32_tPin;/*所要配置的引腳*/uint32_tMode;/*引腳工作的模式*/uint32_tPull;/*引腳上拉還是下拉*/uint32_tSpeed;/*引腳的工作速度*/}GPIO_InitTypeDef;4.GPIO口的輸出函數(shù)
(3)HAL_GPIO_Init
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人土地承包合同完整版
- 二零二五年度家政服務(wù)派遣合同打造高品質(zhì)家庭生活
- 2025年度廚師職業(yè)認(rèn)證機(jī)構(gòu)勞務(wù)服務(wù)合同3篇
- 二零二五版汽車(chē)售后服務(wù)承諾合同范本4篇
- 2025年度旅游度假村租賃合同范本8篇
- 2025年度鋼釘鐵釘行業(yè)數(shù)據(jù)服務(wù)與銷(xiāo)售合同4篇
- 2025年度電商知識(shí)產(chǎn)權(quán)保護(hù)合作協(xié)議32篇
- 2025年智能電網(wǎng)項(xiàng)目電工安裝與維護(hù)服務(wù)合同4篇
- 2025年度農(nóng)業(yè)廢棄物處理與綜合利用合同4篇
- 昆蟲(chóng)生態(tài)修復(fù)應(yīng)用-第1篇-深度研究
- 2025貴州貴陽(yáng)市屬事業(yè)單位招聘筆試和高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024年住院醫(yī)師規(guī)范化培訓(xùn)師資培訓(xùn)理論考試試題
- 期末綜合測(cè)試卷(試題)-2024-2025學(xué)年五年級(jí)上冊(cè)數(shù)學(xué)人教版
- 2024年廣東省公務(wù)員錄用考試《行測(cè)》試題及答案解析
- 結(jié)構(gòu)力學(xué)本構(gòu)模型:斷裂力學(xué)模型:斷裂力學(xué)實(shí)驗(yàn)技術(shù)教程
- 2024年貴州省中考理科綜合試卷(含答案)
- 無(wú)人機(jī)技術(shù)與遙感
- 免疫組化he染色fishish
- 新東方四級(jí)詞匯-正序版
- 借名購(gòu)車(chē)位協(xié)議書(shū)借名購(gòu)車(chē)位協(xié)議書(shū)模板(五篇)
- 同步輪尺寸參數(shù)表詳表參考范本
評(píng)論
0/150
提交評(píng)論