版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
3.1LED單燈閃爍之軟件延時能力目標(biāo):
理解單片機(jī)GPIO兩種主要的輸出類型,初步掌握使用STM32CubeIDE開發(fā)單片機(jī)應(yīng)用程序的方法,掌握通過ISP下載程序并通過實物驗證的方法。任務(wù)要求:電路如圖所示,要求通過單片機(jī)PC0引腳控制LED0以1秒周期閃爍。3.1.1STM32的GPIO及其輸出類型STM32F103R6具有51個GPIO(General-purposeinput/output,通用輸入輸出)引腳,每個引腳都具備如圖所示結(jié)構(gòu)。GPIO的八種工作模式:
本次課著重講其中的⑴⑵兩種工作模式。⑴推挽輸出⑵開漏輸出⑶復(fù)用推挽輸出⑷復(fù)用開漏輸出⑸模擬量輸入⑹浮空輸入⑺下拉輸入⑻上拉輸入⑴推挽輸出
此時P-MOS管與N-MOS管發(fā)揮作用:
①當(dāng)控制輸出1時,P-MOS管閉合、N-MOS管斷開,引腳輸出電源電壓(+3.3V);
②當(dāng)控制輸出0時,P-MOS管斷開、N-MOS管閉合,引腳輸出GND。
推挽輸出模式一般應(yīng)用在輸出電平為0和+3.3V而且需要高速切換開關(guān)狀態(tài)的場合。在STM32的應(yīng)用中,除了必須用開漏模式的場合,我們都習(xí)慣使用推挽輸出模式。
值得注意的是,當(dāng)引腳直接接地的時候,切不可推挽輸出高電平,否則電源將被直接短路?、崎_漏輸出此時P-MOS管始終斷開,僅N-MOS管發(fā)揮作用:
①當(dāng)控制輸出1時,N-MOS管斷開,引腳懸空;
②當(dāng)控制輸出0時,N-MOS管閉合,引腳輸出GND。
開漏輸出一般應(yīng)用在①I2C、SMBUS通訊等需要“線與”功能的總線電路中。除此之外,②還用在電平不匹配的場合,如需要輸出5伏的高電平,就可以在外部接一個上拉電阻,上拉電源為5V,并且把引腳設(shè)置為開漏模式,當(dāng)輸出高阻態(tài)時,由上拉電阻和電源向外輸出5V電平,如右圖所示。3.1.2STM32CubeIDE的使用STM32CubeMX的作用是通過圖形化配置完成STM32的工程目錄的建立與初始化代碼的生成。下面是操作步驟。
(1)在桌面上找到并雙擊程序圖標(biāo),打開程序主界面。
(2)點擊菜單“File=>NewProject”新建工程,在搜索欄中輸入單片機(jī)型號“STM32F103R6”,出現(xiàn)兩種封裝的搜索結(jié)果。
(3)在搜索結(jié)果中選擇LQFP64封裝,雙擊打開左圖配置界面。
(4)在右圖“Pinout&Configuration”界面上將引腳PC0修改為“GPIO_Output”模式。
(5)在左圖“ProjectManager”界面上對工程命名,制定工程目錄,指定集成開發(fā)環(huán)境為“TrueSTUDIO”后點擊“DeviceConfigurationToolCodeGeneration”按鈕
生成單片機(jī)程序工程目錄。
本案例沒有對時鐘樹進(jìn)行設(shè)定,采用了默認(rèn)的內(nèi)部RC振蕩源。
接下來就是繼續(xù)完成程序代碼的編寫。
本次任務(wù)需要用到兩個API函數(shù)(API函數(shù)來源于“UM1850_DescriptionofSTM32F1HALandLow-layerdrivers.PDF”文檔):①引腳輸出狀態(tài)翻轉(zhuǎn)函數(shù)HAL_GPIO_TogglePin
例程:HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_0);//將PC0引腳輸出狀態(tài)取反②延時函數(shù)HAL_Delay
例程:下面是操作步驟。HAL_Delay(500);//延時500ms(即0.5s)
(1)在左側(cè)“Src”目錄中找到main.c文件,雙擊打開。(5)值得注意的是,由于STM32CubeIDE默認(rèn)不生成HEX文件,需要人為設(shè)置:在IDE主界面菜單欄中選擇“Project(工程)”→“Properties(屬性)”打開如圖3-12所示屬性對話框,選擇“C/C++Build(C/C++生成)”→“Settings(設(shè)置)”→“ToolSettings(工具設(shè)置)”→“MCUPostbuildoutputs(單片機(jī)編譯后輸出)”,在“ConverttoIntelHexfile(-Oihex)(轉(zhuǎn)換為英特爾HEX文件)”項目打鉤并保存,回到IDE主界面后再按下生成按鈕,即可在源代碼編譯成功后輸出HEX文件。3.1.3使用ISP方式下載程序
程序編寫完畢,生成HEX文件以后,通過ISP工具下載到單片機(jī)電路運行驗證。特別注意的是,接線的時候請斷電。
步驟:
①將開發(fā)板上核心板的PC0引腳與LED模塊LED0的引出端用杜邦線連接;②將開發(fā)板USB通信口與計算機(jī)USB口通過USB線連接;③接通電源;④將核心板撥動開關(guān)撥到“ISP”位置,按下“RST”復(fù)位按鈕;⑤通過ISP工具“FlashLoaderDemonstrator”讀取工程目錄下“.../Debug/2.1.Hex”文檔中的機(jī)器碼,并將機(jī)器碼下載至單片機(jī)Flash,操作步驟請見后頁。
ISP工具桌面圖標(biāo)是。⑥程序下載完畢后,將核心板撥動開關(guān)撥回到“Run”位置,再次按下復(fù)位按鈕“RST”,單片機(jī)將按照設(shè)定程序運行。具體的代碼另外給出。技能訓(xùn)練(選做):
修改電路,改由PC1驅(qū)動LED1作單燈閃爍,閃爍周期改為2s。Tobecontinued...3.2按鈕輸入能力目標(biāo):
理解并掌握單片機(jī)GPIO三種主要的輸入類型,掌握使用Proteus仿真單片機(jī)電路的方法。任務(wù)要求:電路如圖所示,要求通過按鈕BTN0控制LED0的亮滅(LED0接PC0,BTN0接PC1)。3.2.1GPIO的輸入類型STM32F103R6具有51個GPIO(General-purposeinput/output,通用輸入輸出)引腳,每個引腳都具備如圖所示結(jié)構(gòu)。GPIO的八種工作模式:
本次課著重講其中的⑺⑻兩種工作模式。⑴推挽輸出⑵開漏輸出⑶復(fù)用推挽輸出⑷復(fù)用開漏輸出⑸模擬量輸入⑹浮空輸入⑺下拉輸入⑻上拉輸入⑴當(dāng)圖中上拉電阻、下拉電阻均未接入時輸入模式為浮空輸入,此時若輸入信號斷開,則引腳輸入狀態(tài)不定(不常用);
⑵當(dāng)圖中上拉電阻接入時輸入模式為上拉輸入,此時若輸入信號斷開,則引腳輸入為高電平;(常用)
⑶當(dāng)圖中下拉電阻接入時輸入模式為下拉輸入,此時若輸入信號斷開,則引腳輸入為低電平。(常用)
典型按鈕電路如圖:
左圖引腳PC1配置為上拉輸入時,若松開按鈕,引腳默認(rèn)輸入高電平,若按下按鈕,引腳輸入低電平;右圖引腳PC1配置為下拉輸入時,若松開按鈕,引腳默認(rèn)輸入低電平,若按下按鈕,引腳輸入高電平;
如果選擇浮空輸入模式,則按鈕上拉或下拉電阻必須外接,比如本項目仿真電路。3.2.2電路仿真
電路仿真采用Proteus,操作步驟:
(1)在桌面上找到并雙擊程序圖標(biāo),打開左圖主界面,選擇“NewProject”新建工程(如右圖),過程中除了路徑之外,其余均采用缺省設(shè)定。(2)拾取元件。左圖中在左側(cè)工具欄中按下(ComponentMode)按鈕進(jìn)入元器件拾取模塊,接著按下右側(cè)的(PickDevice)按鈕打開中圖元器件拾取對話框。在中圖“Keywords”搜索欄內(nèi)依次輸入本次課題所需元器件名稱,在右圖“Results”結(jié)果欄內(nèi)選中并雙擊所需元器件將其拾取到主界面元器件中,完成后關(guān)閉對話框。(3)放置元件并更改元器件參數(shù)。在主界面元件池中依次選擇所需元件將其擺放到主界面中心圖紙上。依次選中圖紙上的元件,在鼠標(biāo)右鍵彈出的快捷菜單內(nèi)選擇“EditProperties”打開右圖所示編輯屬性對話框,修改參數(shù)后點“OK”按鈕保存退出。(4)電路連線。在左側(cè)工具欄中按下(TerminalsMode)終端模式按鈕,在終端列表中分別選擇電源終端POWER、接地終端GROUND并添加到圖紙中,完成電路連線。(5)設(shè)定電源正負(fù)極參數(shù)。在主界面中選擇菜單欄“Design=>ConfigurePowerRails...”打開電源軌配置對話框如左圖所示,需要設(shè)定的是:①將電源正極由5V改為3.3V;②將模擬量電源正負(fù)極VDDA與VSSA分別添加到VCC/VDD網(wǎng)絡(luò)與GND網(wǎng)絡(luò),否則單片機(jī)將無法仿真,添加結(jié)果如中圖與右圖所示。(6)指定HEX文件路徑。回到主界面,選擇原理圖中的單片機(jī)并在右鍵快捷菜單中選擇“EditProperties”打開如圖所示編輯屬性對話框,在對話框中點擊按鈕,選擇HEX文件并確認(rèn)保存。(7)運行仿真。按下左下角運行按鈕即可開始仿真。注意:Proteus8.8和8.9仿真模型中上拉模式不可用,必須外接上拉電阻。3.2.3任務(wù)程序的編寫
本次內(nèi)容需要用到的新的API函數(shù)是:
引腳輸入函數(shù)HAL_GPIO_ReadPin
例程:
(現(xiàn)場操作演示...)GPIO_PinStatex=HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_1);//讀取PC1輸入狀態(tài)技能訓(xùn)練(選做):通過兩只按鈕控制一個LED的亮滅,要求兩個按鈕一個采用上拉輸入模式,另一個采用下拉輸入模式。參考電路如下圖所示。Tobecontinued...3.3流水燈之軟件延時能力目標(biāo):理解并掌握通過改進(jìn)算法提高編程效率的方法。任務(wù)要求:
電路如圖所示,要求實現(xiàn)流水燈效果,即按LED0~LED7的順序依次點亮,每次僅限一只LED發(fā)光,周期4秒。3.3.1程序算法
算法(Algorithm)是指解決方案準(zhǔn)確而完整的描述,是一系列解決問題的清晰指令,算法代表著用系統(tǒng)的方法描述解決問題的策略機(jī)制。首先人們自然會想到“位操作法”,但這種算法編程效率太低,下面介紹兩種比較好的算法:⑴查表法
即將8個狀態(tài),定義為8個字節(jié),每隔一段時間,按先后順序查表并將8個狀態(tài)量賦值給單片機(jī)的規(guī)定輸出口,狀態(tài)表如下。序號狀態(tài)字節(jié)(二進(jìn)制)狀態(tài)字節(jié)(十六進(jìn)制)序號狀態(tài)字節(jié)(二進(jìn)制)狀態(tài)字節(jié)(十六進(jìn)制)11111,1110FE51110,1111EF21111,1101FD61101,1111DF31111,1011FB71011,1111BF41111,0111F780111,11117F⑵移位法所謂移位法,就是利用C語言的移位運算符“<<”、“>>”實現(xiàn)狀態(tài)字節(jié)的循環(huán)移位。但由于C語言的移位運算符只能實現(xiàn)單向移位,因此必須通過一定的算法來間接實現(xiàn),具體的做法是:假設(shè)M位數(shù)據(jù)A需要循環(huán)左移N位(M>N),先將A左移N位得到B,再將A右移(M-N)位得到C,最后將A、B按位求或運算即可獲得最終結(jié)果。比如,8位二進(jìn)制數(shù),各位均用字母表示為“ABCDEFGH”,需要循環(huán)左移3位,可先將原數(shù)左移3位,得到“DEFGH000”,再將原數(shù)右移5位,得到“00000ABC”,最后將兩數(shù)按位或即可得到循環(huán)左移3位的結(jié)果“DEFGHABC”,示意如下。①ABCDEFGH<<3→DEFGH000②ABCDEFGH>>5→00000ABC③DEFGH000|00000ABC
→DEFGHABC3.3.2任務(wù)程序的編寫
本次任務(wù)程序?qū)⒏鶕?jù)位操作法、查表法與移位法三種方法編寫,需要用到的新的API函數(shù):
①引腳輸出函數(shù)HAL_GPIO_WritePin
新版HAL庫改為:GPIO_PIN_RESETGPIO_PIN_SET
例程:今天我們要對若干個引腳一起輸出相同的電平值,比如
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,GPIO_PIN_RESET);//PC0輸出低電平HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0,GPIO_PIN_SET);//PC0輸出高電平HAL_GPIO_WritePin(GPIOC,GPIO_PIN_0|GPIO_PIN_2|GPIO_PIN_5,GPIO_PIN_RESET);//PC0、PC2、PC5三個引腳同時輸出低電平或者也可以使用LL庫函數(shù),但LL庫與HAL庫(默認(rèn))不能同時使用,且必須在STM32CubeIDE“ProjectManager=>AdvancedSetting”中進(jìn)行修改。
②引腳輸出函數(shù)LL_GPIO_WriteOutputPort(推薦)
例程:LL_GPIO_WriteOutputPort(GPIOC,0x00000009);//除了PC0、PC3輸出高電平,PC口其余引腳輸出低電平(現(xiàn)場操作演示...)技能訓(xùn)練(選做):要求將任務(wù)要求中流水燈改為跑馬燈,其他條件不變。Tobecontinued...3.4數(shù)碼管動態(tài)顯示能力目標(biāo):
在理解數(shù)碼管工作原理與多位數(shù)碼管電路構(gòu)成的基礎(chǔ)上,理解并掌握多位數(shù)碼管動態(tài)顯示字符的程序編制方法。任務(wù)要求(改):
仿真電路如圖所示,要求編程實現(xiàn)八位數(shù)碼管中的低四位顯示任意四位十進(jìn)制數(shù)字。3.4.1數(shù)碼管的結(jié)構(gòu)數(shù)碼管,也稱作輝光管,是一種可以顯示數(shù)字和其他信息的電子設(shè)備。共陰極數(shù)碼管采用高電平驅(qū)動,而共陽極數(shù)碼管采用低電平驅(qū)動。段碼列表見右表。注意表中的引腳順序,由高到低為dpgfedcba顯示字符共陽極驅(qū)動碼共陰極驅(qū)動碼二進(jìn)制十六進(jìn)制二進(jìn)制十六進(jìn)制全滅11111111FFH0000000000H011000000C0H001111113FH111111001F9H0000011006H210100100A4H010110115BH310110000B0H010011114FH41001100199H0110011066H51001001092H011011016DH61000001082H011111017DH711111000F8H0000011107H81000000080H011111117FH91001000090H011011116FHA1000100088H0111011177HB1000001183H011111007CHC11000110C6H0011100139HD10100001A1H010111105EHE1000011086H0111100179HF100011108EH0111000171H3.4.2數(shù)碼管的靜態(tài)顯示與動態(tài)顯示⑴數(shù)碼管的靜態(tài)顯示
一位數(shù)碼管的典型驅(qū)動電路如下圖所示,通常按照A、B、C……DP接單片機(jī)引腳從低位到高位(比如PC0、PC1、PC2……PC7)的接法。如圖這種直連的接法由于必須考慮到單片機(jī)引腳的輸入/輸出電流能力,往往由于驅(qū)動電流不夠致使數(shù)碼管發(fā)光亮度偏暗,可以考慮在單片機(jī)與數(shù)碼管之間加一個鎖存器以提高數(shù)碼管驅(qū)動電流?!頢TM32引腳輸入/輸出電流能力:單個引腳最大輸出8mA、最大輸入20mA,整機(jī)最大輸出/輸入總電流150mA。⑵數(shù)碼管的動態(tài)顯示
為節(jié)約單片機(jī)引腳,多位數(shù)碼管往往采用“并聯(lián)”的連接方式,以二位數(shù)碼管為例,如圖所示。
以任務(wù)電路為例,多位數(shù)碼管的段碼輸入端共用同一組(7個或8個)GPIO引腳,使多位數(shù)碼管按一定順序(比如從左往右)快速輪流顯示字符信息的顯示方式。由于人眼存在“視覺暫留”效應(yīng),當(dāng)刷新速度夠快時,會給人一種所有數(shù)碼管同時發(fā)光的錯覺。考慮到GPIO輸出電流能力有限,每一位數(shù)碼管均由反相器(即非門電路)輸出高電平選通。3.4.3任務(wù)程序的編寫
(現(xiàn)場操作演示...)技能訓(xùn)練:修改任務(wù),使數(shù)碼管逆序選通。Tobecontinued...3.5矩陣式鍵盤能力目標(biāo):
理解矩陣式鍵盤的電路組成及工作原理,掌握矩陣式鍵盤程序的編制方法。任務(wù)要求:
如下圖所示是一個4×4的矩陣式鍵盤仿真電路,要求編程實現(xiàn)當(dāng)按下任意一個按鈕時,數(shù)碼管立即顯示當(dāng)前按下按鈕對應(yīng)的鍵值。3.5.1矩陣式鍵盤的電路組成
●“獨立式按鈕”,適合于按鈕較少的應(yīng)用場合;
●“矩陣式鍵盤”,適合于按鈕較多的應(yīng)用場合。如圖所示,是一種4×4的矩陣式鍵盤的結(jié)構(gòu)示意圖,分別由4條行線、4條列線聯(lián)接而成。3.5.2矩陣式鍵盤的行掃描法行掃描法檢測步驟如下:①初始化,所有行線均輸出高電平;②僅行線X0輸出低電平,檢測按鍵0~按鍵3,若其中某個按鍵被按
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度主題公園承包經(jīng)營合同3篇
- 2025年度綠色水泥生產(chǎn)質(zhì)量保證合同樣本3篇
- 2025版駕校教練員薪資待遇及聘用合同范本3篇
- 2025年度生豬養(yǎng)殖與食品加工企業(yè)生豬購銷合作合同3篇
- 二零二五年度搬遷項目安全風(fēng)險評估與控制協(xié)議
- 2025年度生態(tài)農(nóng)業(yè)園區(qū)綠化建設(shè)承包合同范本2篇
- 轉(zhuǎn)爐煉鋼課程設(shè)計依據(jù)
- 海南職業(yè)技術(shù)學(xué)院《橋牌與博弈論》2023-2024學(xué)年第一學(xué)期期末試卷
- 課程設(shè)計如何寫到簡歷中
- 課程設(shè)計民間美術(shù)
- 數(shù)字化技術(shù)在促進(jìn)幼兒語言發(fā)展中的應(yīng)用
- 我能作業(yè)更細(xì)心(課件)-小學(xué)生主題班會二年級
- 江西省上饒市2023-2024學(xué)年高一上學(xué)期期末教學(xué)質(zhì)量測試物理試題(解析版)
- 學(xué)生(幼兒)上學(xué)放學(xué)交通方式情況登記表
- 提高感染性休克集束化治療達(dá)標(biāo)率
- 2023年湖北省武漢市高考數(shù)學(xué)一模試卷及答案解析
- 電動自行車換電柜規(guī)劃方案
- 工程變更、工程量簽證、結(jié)算以及零星項目預(yù)算程序?qū)嵤┘?xì)則(試行)
- 中央廣播電視大學(xué)畢業(yè)生登記表-8
- 2023年人民日報社校園招聘72人筆試參考題庫(共500題)答案詳解版
- 《焊接常用工具》課件
評論
0/150
提交評論