欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      嵌入式有感

      時(shí)間:2019-05-12 06:27:29下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《嵌入式有感》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《嵌入式有感》。

      第一篇:嵌入式有感

      學(xué)嵌入式有感

      電子技術(shù)、計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,極大的影響了人們的日常生活,甚至改變了人們的生活模式。人們到處可以見(jiàn)到電子設(shè)備的存在,而幾乎所有的電子設(shè)備中都包含著嵌入式系統(tǒng)。那么嵌入式系統(tǒng)即一般指非 PC 系統(tǒng),有計(jì)算機(jī)功能但又不稱(chēng)之為計(jì)算機(jī)的設(shè)備或器材。它是以應(yīng)用為中心,軟硬件可裁減的,適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗等綜合性嚴(yán)格要求的專(zhuān)用計(jì)算機(jī)系統(tǒng)。

      它的應(yīng)用幾乎涉及到了生活中的所有電器設(shè)備,如掌上 PDA、移動(dòng)計(jì)算設(shè)備、電視機(jī)頂盒、手機(jī)上網(wǎng)、數(shù)字電視、多媒體、汽車(chē)、微波爐、數(shù)字相機(jī)、家庭自動(dòng)化系統(tǒng)、電梯、空調(diào)、安全系統(tǒng)、自動(dòng)售貨機(jī)、蜂窩式電話、消費(fèi)電子設(shè)備、工業(yè)自動(dòng)化儀表與醫(yī)療儀器等。而大部分的嵌入式系統(tǒng)并不需要操作系統(tǒng),首先是因?yàn)闆](méi)有必要,例如洗衣機(jī)和微波爐等等,它們的功能有限。這樣的系統(tǒng)只需要一道控制程序管好幾個(gè)按鍵、指示燈和數(shù)碼管就可以了。其次是因?yàn)闂l件不允許。它們采用4位或8位的微處理器,有的內(nèi)存少得不到1KB,根本沒(méi)有操作系統(tǒng)生存的空間。即使要完成一些比較復(fù)雜的任務(wù),也只能依靠程序員的技巧去精雕細(xì)琢,以彌補(bǔ)硬件條件的不足。隨著微電子技術(shù)的不斷創(chuàng)新和發(fā)展,大規(guī)模集成電路的集成度和工藝水平不斷提高,集成電路工業(yè)已經(jīng)生產(chǎn)了大量低成本、高可靠性和高精度的微電子結(jié)構(gòu)模塊,推動(dòng)了一個(gè)全新的技術(shù)領(lǐng)域和產(chǎn)業(yè)的發(fā)展。

      嵌入式硬件設(shè)計(jì)采用了“CPU+PLD+模擬器件”的模式,是指嵌入式系統(tǒng)以中央處理單元(CPU)為基礎(chǔ)和中心,外加可編程邏輯器件(PLD)和模擬器件構(gòu)成(特別小型的嵌入式設(shè)計(jì) 除外)。CPU主要包括嵌

      入式微處理器(MPU)和嵌入式微控制器(MCU),PLD主要包括PAL、EPLD、CPLD、FPGA等。這種設(shè)計(jì)模式可以大大簡(jiǎn)化嵌入式系統(tǒng)的軟硬件,嵌入式系統(tǒng)總體設(shè)計(jì)的難度得以降低,而系統(tǒng)總體設(shè)計(jì)的水平卻得到提高。

      這種結(jié)構(gòu)是由目前集成電路的發(fā)展水平和技術(shù)現(xiàn)狀決定的。集成電路技術(shù)的發(fā)展促成 了這種設(shè)計(jì)模式的出現(xiàn),微處理器技術(shù)和器件可編程技術(shù)給嵌入式系統(tǒng)設(shè)計(jì)人員帶來(lái)了巨大的方便,它提供了用軟件來(lái)改變和實(shí)現(xiàn)硬件的功能,適合硬件解決的問(wèn)題由硬件解決,適合軟件解決的問(wèn)題由軟件完成。集成電路技術(shù)的發(fā)展為這種設(shè)計(jì)模式的出現(xiàn)提供了全方位支持,計(jì)算機(jī)硬件平臺(tái)性能的大幅度提高,高性能的EDA綜合開(kāi)發(fā)工具(平臺(tái))得到長(zhǎng)足發(fā)展,為復(fù)雜的嵌入式系統(tǒng)設(shè)計(jì)者提供了不同用途和不同級(jí)別集編輯、布局、布線、編譯、綜合、模擬、測(cè)試、驗(yàn)證和器件編程等一體化的集成開(kāi)發(fā)環(huán)境。集成電路技術(shù)的技術(shù)現(xiàn)狀決定設(shè)計(jì)模式不能拋開(kāi)模擬器件,現(xiàn)階段模數(shù)混合的集成電路很難設(shè)計(jì)生產(chǎn),模數(shù)和數(shù)模轉(zhuǎn)換器等模擬電路還只能采用傳統(tǒng)的設(shè)計(jì)方法。

      而嵌入式的核心是嵌入式微處理器。嵌入式微處理器一般具備 四個(gè)特點(diǎn):(1)對(duì)實(shí)時(shí)和多任務(wù)有很強(qiáng)的支持能力,能完成多任務(wù)并且有較短的中斷響應(yīng)時(shí)間,從而使內(nèi)部的代碼和實(shí)時(shí)操作系統(tǒng)的執(zhí)行時(shí)間減少到最低限度;(2)具有功能很強(qiáng)的存儲(chǔ)區(qū)保護(hù)功能,這是由于嵌入式系統(tǒng)的軟件結(jié)構(gòu)已模塊化,而為了避免在軟件模塊之間出現(xiàn)錯(cuò)誤的交叉作用,需要設(shè)計(jì)強(qiáng)大的存儲(chǔ)區(qū)保護(hù)功能,同時(shí)也有利于軟件診斷;(3)可擴(kuò)展的處理器結(jié)構(gòu),以能迅速地?cái)U(kuò)展出滿足應(yīng)用的高性能的嵌入式微處理器;(4)嵌

      入式微處理器的功耗必須很低,尤其是用于便攜式的無(wú)線及移動(dòng)的計(jì)算和通信設(shè)備中靠電池供電的嵌入式系統(tǒng)更是如此,功耗只能為 m W 甚至μ W 級(jí)。

      我們知道嵌入式操作系統(tǒng)是一種支持嵌入式系統(tǒng)應(yīng)用的操作系統(tǒng)軟件,它是嵌入式系統(tǒng)(包括硬、軟件系統(tǒng))極為重要的組成部分,通常包括與硬件相關(guān)的底層驅(qū)動(dòng)軟件、系統(tǒng)內(nèi)核、設(shè)備驅(qū)動(dòng)接口、通信協(xié)議、圖形界面、標(biāo)準(zhǔn)化瀏覽器等 Browser。嵌入式操作系統(tǒng)具有通用操作系統(tǒng)的基本特點(diǎn),如能夠有效管理越來(lái)越復(fù)雜的系統(tǒng)資源;能夠把硬件虛擬化,使得開(kāi)發(fā)人員從繁忙的驅(qū)動(dòng)程序移植和維護(hù)中解脫出來(lái);能夠提供庫(kù)函數(shù)、驅(qū)動(dòng)程序、工具集以及應(yīng)用程序。與通用操作系統(tǒng)相比較,嵌入式操作系統(tǒng)在系統(tǒng)實(shí)時(shí)高效性、硬件的相關(guān)依賴(lài)性、軟件固態(tài)化以及應(yīng)用的專(zhuān)用性等方面具有較為突出的特點(diǎn)。

      一般情況下,嵌入式操作系統(tǒng)可以分為兩類(lèi),一類(lèi)是面向控制、通信等領(lǐng)域的實(shí)時(shí)操作系統(tǒng),如 WindRiver 公司的 VxWorks、ISI 的 pSOS、QNX 系統(tǒng)軟件公司的 QNX、ATI 的 Nucleus 等;另一類(lèi)是面向消費(fèi)電子產(chǎn)品的非實(shí)時(shí)操作系統(tǒng),這類(lèi)產(chǎn)品包括個(gè)人數(shù)字助理(PDA)、移動(dòng)電話、機(jī)頂盒、電子書(shū)、WebPhone等。

      對(duì)于非實(shí)時(shí)操作系統(tǒng)我們了解到早期的嵌入式系統(tǒng)中都沒(méi)有操作系統(tǒng)的概念,程序員編寫(xiě)嵌入式程序通常直接面對(duì)裸機(jī)及裸設(shè)備。在這種情況下,通常把嵌入式程序分成兩部分,即前臺(tái)程序和后臺(tái)程序。前臺(tái)程序通過(guò)中段來(lái)處理事件,其結(jié)構(gòu)一般為無(wú)限循環(huán);后臺(tái)程序則掌管整個(gè)嵌入式系統(tǒng)軟、硬件資源的分配、管理以及任務(wù)的調(diào)度,是一個(gè)系統(tǒng)管理調(diào)度程序。這就是通常所說(shuō)的前后臺(tái)系統(tǒng)。一般情況下,后臺(tái)程序也叫任務(wù)級(jí)程序,前臺(tái)程序也叫事件處理級(jí)程序。在程序運(yùn)行時(shí),后臺(tái)程序檢查每個(gè)任務(wù)是否具備運(yùn)行條件,通過(guò)一定的調(diào)度算法來(lái)完成相應(yīng)的操作。對(duì)于實(shí)時(shí)性要求特別嚴(yán)格的操作通常由中斷來(lái)完成,僅在中斷服務(wù)程序中標(biāo)記事件的發(fā)生,不再做任何工作就退出中斷,經(jīng)過(guò)后臺(tái)程序的調(diào)度,轉(zhuǎn)由前臺(tái)程序完成事件的處理,這樣就不會(huì)造成在中斷服務(wù)程序中處理費(fèi)時(shí)的事件而影響后續(xù)和其他中斷。

      實(shí)際上,前后臺(tái)系統(tǒng)的實(shí)時(shí)性比預(yù)計(jì)的要差。這是因?yàn)榍昂笈_(tái)系統(tǒng)認(rèn)為所有的任務(wù)具有相同的優(yōu)先級(jí)別,即是平等的,而且任務(wù)的執(zhí)行又是通過(guò) FIFO 隊(duì)列排隊(duì),因而對(duì)那些實(shí)時(shí)性要求高的任務(wù)不可能立刻得到處理。另外,由于前臺(tái)程序是一個(gè)無(wú)限循環(huán)的結(jié)構(gòu),一旦在這個(gè)循環(huán)體中正在處理的任務(wù)崩潰,使得整個(gè)任務(wù)隊(duì)列中的其他任務(wù)得不到機(jī)會(huì)被處理,從而造成整個(gè)系統(tǒng)的崩潰。由于這類(lèi)系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,幾乎不需要 RAM/ROM 的額外開(kāi)銷(xiāo),因而在簡(jiǎn)單的嵌入式應(yīng)用被廣泛使用。

      而對(duì)于實(shí)時(shí)系統(tǒng)是指能在確定的時(shí)間內(nèi)執(zhí)行其功能并對(duì)外部的異步事件做出響應(yīng)的計(jì)算機(jī)系統(tǒng)。其操作的正確性不僅依賴(lài)于邏輯設(shè)計(jì)的正確程度,而且與這些操作進(jìn)行的時(shí)間有關(guān)?!霸诖_定的時(shí)間內(nèi)”是該定義的核心。也就是說(shuō),實(shí)時(shí)系統(tǒng)是對(duì)響應(yīng)時(shí)間有嚴(yán)格要求的。

      實(shí)時(shí)系統(tǒng)對(duì)邏輯和時(shí)序的要求非常嚴(yán)格,如果邏輯和時(shí)序出現(xiàn)偏差將會(huì)引起嚴(yán)重后果。實(shí)時(shí)系統(tǒng)有兩種類(lèi)型:軟實(shí)時(shí)系統(tǒng)和硬實(shí)時(shí)系統(tǒng)。軟實(shí)時(shí)系統(tǒng)僅要求事件響應(yīng)是實(shí)時(shí)的,并不要求限定某一任務(wù)必須在多長(zhǎng)時(shí)間內(nèi)完成;而在硬實(shí)時(shí)系統(tǒng)中,不僅要求任務(wù)響應(yīng)要實(shí)時(shí),而且要求在規(guī)定的時(shí)間內(nèi)完成事件的處理。通常大多數(shù)實(shí)時(shí)系統(tǒng)是兩者的結(jié)合。實(shí)時(shí)應(yīng)用軟件的設(shè)計(jì)一般比非實(shí)時(shí)應(yīng)用軟件的設(shè)計(jì)困難。實(shí)時(shí)系統(tǒng)的技術(shù)關(guān)鍵是如何保證系統(tǒng)的實(shí)時(shí)性。

      實(shí)時(shí)多任務(wù)操作系統(tǒng)是指具有實(shí)時(shí)性、能支持實(shí)時(shí)控制系統(tǒng)工作的操作系統(tǒng)。其首要任務(wù)是調(diào)度

      一切可利用的資源完成實(shí)時(shí)控制任務(wù),其次才著眼于提高計(jì)算機(jī)系統(tǒng)的使用效率,重要特點(diǎn)是要滿足對(duì)時(shí)間的限制和要求。實(shí)時(shí)操作系統(tǒng)具有如下功能:任務(wù)管理(多任務(wù)和基于優(yōu)先級(jí)的任務(wù)調(diào)度)、任務(wù)間同步和通信(信號(hào)量和郵箱等)、存儲(chǔ)器優(yōu)化管理(含 ROM 的管理)、實(shí)時(shí)時(shí)鐘服務(wù)、中斷管理服務(wù)。實(shí)時(shí)操作系統(tǒng)具有如下特點(diǎn):規(guī)模小,中斷被屏蔽的時(shí)間很短,中斷處理時(shí)間短,任務(wù)切換很快。

      實(shí)時(shí)操作系統(tǒng)可分為可搶占型和不可搶占型兩類(lèi)。對(duì)于基于優(yōu)先級(jí)的系統(tǒng)而言,可搶占型實(shí)時(shí)操作系統(tǒng)是指內(nèi)核可以搶占正在運(yùn)行任務(wù)的 CPU 使用權(quán)并將使用權(quán)交給進(jìn)入就緒態(tài)的優(yōu)先級(jí)更高的任務(wù),是內(nèi)核搶了 CPU 讓別的任務(wù)運(yùn)行。不可搶占型實(shí)時(shí)操作系統(tǒng)使用某種算法并決定讓某個(gè)任務(wù)運(yùn)行后,就把 CPU 的控制權(quán)完全交給了該任務(wù),直到它主動(dòng)將 CPU 控制權(quán)還回來(lái)。中斷由中斷服務(wù)程序來(lái)處理,可以激活一個(gè)休眠態(tài)的任務(wù),使之進(jìn)入就緒態(tài);而這個(gè)進(jìn)入就緒態(tài)的任務(wù)還不能運(yùn)行,一直要等到當(dāng)前運(yùn)行的任務(wù)主動(dòng)交出 CPU 的控制權(quán)。使用這種實(shí)時(shí)操作系統(tǒng)的實(shí)時(shí)性比不使用實(shí)時(shí)操作系統(tǒng)的系統(tǒng)性能好,其實(shí)時(shí)性取決于最長(zhǎng)任務(wù)的執(zhí)行時(shí)間。不可搶占型實(shí)時(shí)操作系統(tǒng)的缺點(diǎn)也恰恰是這一點(diǎn),如果最長(zhǎng)任務(wù)的執(zhí)行時(shí)間不能確定,系統(tǒng)的實(shí)時(shí)性就不能確定。

      可搶占型實(shí)時(shí)操作系統(tǒng)的實(shí)時(shí)性好,優(yōu)先級(jí)高的任務(wù)只要具備了運(yùn)行的條件,或者說(shuō)進(jìn)入了就緒態(tài),就可以立即運(yùn)行。也就是說(shuō),除了優(yōu)先級(jí)最高的任務(wù),其他任務(wù)在運(yùn)行過(guò)程中都可能隨時(shí)被比它優(yōu)先級(jí)高的任務(wù)中斷,讓后者運(yùn)行。通過(guò)這種方式的任務(wù)調(diào)度保證了系統(tǒng)的實(shí)時(shí)性,但是,如果任務(wù)之間搶占 CPU 控制權(quán)處理不好,會(huì)產(chǎn)生系統(tǒng)崩潰、死機(jī)等嚴(yán)重后果。

      嵌入式實(shí)時(shí)操作系統(tǒng)在目前的嵌入式應(yīng)用中用得越來(lái)越廣泛,尤其在功能復(fù)雜、系統(tǒng)龐大的應(yīng)用中顯得愈來(lái)愈重要。

      首先,嵌入式實(shí)時(shí)操作系統(tǒng)提高了系統(tǒng)的可靠性。在控制系統(tǒng)中,出于安全方面的考慮,要求系統(tǒng)起碼不能崩潰,而且還要有自愈能力。不僅要求在硬件設(shè)計(jì)方面提高系統(tǒng)的可靠性和抗干擾性,而且也應(yīng)在軟件設(shè)計(jì)方面提高系統(tǒng)的抗干擾性,盡可能地減少安全漏洞和不可靠的隱患。長(zhǎng)期以來(lái)的前后臺(tái)系統(tǒng)軟件設(shè)計(jì)在遇到強(qiáng)干擾時(shí),使得運(yùn)行的程序產(chǎn)生異常、出錯(cuò)、跑飛,甚至死循環(huán),造成了系統(tǒng)的崩潰。而實(shí)時(shí)操作系統(tǒng)管理的系統(tǒng),這種干擾可能只是引起若干進(jìn)程中的一個(gè)被破壞,可以通過(guò)系統(tǒng)運(yùn)行的系統(tǒng)監(jiān)控進(jìn)程對(duì)其進(jìn)行修復(fù)。通常情況下,這個(gè)系統(tǒng)監(jiān)視進(jìn)程用來(lái)監(jiān)視各進(jìn)程運(yùn)行狀況,遇到異常情況時(shí)采取一些利于系統(tǒng)穩(wěn)定可靠的措施,如把有問(wèn)題的任務(wù)清除掉。

      其次,提高了開(kāi)發(fā)效率,縮短了開(kāi)發(fā)周期。在嵌入式實(shí)時(shí)操作系統(tǒng)環(huán)境下,開(kāi)發(fā)一個(gè)復(fù)雜的應(yīng)用程序,通常可以按照軟件工程中的解耦原則將整個(gè)程序分解為多個(gè)任務(wù)模塊。每個(gè)任務(wù)模塊的調(diào)試、修改幾乎不影響其他模塊。商業(yè)軟件一般都提供了良好的多任務(wù)調(diào)試環(huán)境。再次,嵌入式實(shí)時(shí)操作系統(tǒng)充分發(fā)揮了 32 位 CPU 的多任務(wù)潛力。32 位 CPU 比 8、16 位 CPU 快,另外它本來(lái)是為運(yùn)行多用戶(hù)、多任務(wù)操作系統(tǒng)而設(shè)計(jì)的,特別適于運(yùn)行多任務(wù)實(shí)時(shí)系統(tǒng)。32 位 CPU 采用利于提高系統(tǒng)可靠性和穩(wěn)定性的設(shè)計(jì),使其更容易做到不崩潰。例如,CPU 運(yùn)行狀態(tài)分為系統(tǒng)態(tài)和用戶(hù)態(tài)。將系統(tǒng)堆棧和用戶(hù)堆棧分開(kāi),以及實(shí)時(shí)地給出 CPU 的運(yùn)行狀態(tài)等,允許用戶(hù)在系統(tǒng)設(shè)計(jì)中從硬件和軟件兩方面對(duì)實(shí)時(shí)內(nèi)核的運(yùn)行實(shí)施保護(hù)。如果還是采用以前的前后臺(tái)方式,則無(wú)法發(fā)揮 32 位 CPU 的優(yōu)勢(shì)。

      從某種意義上說(shuō),沒(méi)有操作系統(tǒng)的計(jì)算機(jī)(裸機(jī))是沒(méi)有用的。在嵌入式應(yīng)用中,只有把 CPU 嵌入到系統(tǒng)中,同時(shí)又把操作系統(tǒng)嵌入進(jìn)去,才是真正的計(jì)算機(jī)嵌入式應(yīng)用。

      當(dāng)然嵌入式實(shí)時(shí)性操作系統(tǒng)也有其缺點(diǎn),在嵌入式實(shí)時(shí)操作系統(tǒng)環(huán)境下開(kāi)發(fā)實(shí)時(shí)應(yīng)用程序使程序的設(shè)計(jì)和擴(kuò)展變得容易,不需要大的改動(dòng)就可以增加新的功能。通過(guò)將應(yīng)用程序分割成若干獨(dú)立的任務(wù)模塊,使應(yīng)用程序的設(shè)計(jì)過(guò)程大為簡(jiǎn)化;而且對(duì)實(shí)時(shí)性要求苛刻的事件都得到了快速、可靠的處理。通過(guò)有效的系統(tǒng)服務(wù),嵌入式實(shí)時(shí)操作系統(tǒng)使得系統(tǒng)資源得到更好的利用。但是,使用嵌入式實(shí)時(shí)操作系統(tǒng)還需要其額外的 ROM/RAM 開(kāi)銷(xiāo)。

      通過(guò)對(duì)嵌入式系統(tǒng)的認(rèn)識(shí),我們也了解到了很多其有關(guān)的知識(shí),有機(jī)構(gòu)估計(jì),全世界嵌入式系統(tǒng)產(chǎn)品潛在的市場(chǎng)將超過(guò)1萬(wàn)億美元。隨著技術(shù)的發(fā)展,業(yè)內(nèi)對(duì)嵌入式系統(tǒng)的定義也越來(lái)越清晰。它是微處理器、大規(guī)模集成電路、軟件技術(shù)和各種具體的行業(yè)應(yīng)用技術(shù)相結(jié)合的結(jié)果,其中各種軟件技術(shù)占了嵌入式系統(tǒng)80%的工作量。嵌入式系統(tǒng)不同于一般PC 機(jī)上的應(yīng)用系統(tǒng),即使是針對(duì)不同的具體應(yīng)用而設(shè)計(jì)的嵌入式系統(tǒng)之間的差別也很大。嵌入式系統(tǒng)一般功能單

      一、簡(jiǎn)單,且在兼容性方面要求不高,但是在大小、成本方面限制較多。可以說(shuō),嵌入式系統(tǒng)是不可壟斷、需要不斷創(chuàng)新的技術(shù)。

      第二篇:嵌入式實(shí)驗(yàn)報(bào)告

      目錄

      實(shí)驗(yàn)一 跑馬燈實(shí)驗(yàn).........................................................................1 實(shí)驗(yàn)二 按鍵輸入實(shí)驗(yàn).....................................................................3 實(shí)驗(yàn)三 串口實(shí)驗(yàn).............................................................................5 實(shí)驗(yàn)四 外部中斷實(shí)驗(yàn).....................................................................8 實(shí)驗(yàn)五 獨(dú)立看門(mén)狗實(shí)驗(yàn)................................................................11 實(shí)驗(yàn)七 定時(shí)器中斷實(shí)驗(yàn)................................................................13 實(shí)驗(yàn)十三 ADC實(shí)驗(yàn)........................................................................15 實(shí)驗(yàn)十五 DMA實(shí)驗(yàn)........................................................................17 實(shí)驗(yàn)十六 I2C實(shí)驗(yàn)........................................................................21 實(shí)驗(yàn)十七 SPI實(shí)驗(yàn)........................................................................24 實(shí)驗(yàn)二十一 紅外遙控實(shí)驗(yàn)............................................................27 實(shí)驗(yàn)二十二 DS18B20實(shí)驗(yàn).............................................................30

      實(shí)驗(yàn)一 跑馬燈實(shí)驗(yàn)

      一.實(shí)驗(yàn)簡(jiǎn)介

      我的第一個(gè)實(shí)驗(yàn),跑馬燈實(shí)驗(yàn)。

      二.實(shí)驗(yàn)?zāi)康?/p>

      掌握STM32開(kāi)發(fā)環(huán)境,掌握從無(wú)到有的構(gòu)建工程。

      三.實(shí)驗(yàn)內(nèi)容

      熟悉MDK KEIL開(kāi)發(fā)環(huán)境,構(gòu)建基于固件庫(kù)的工程,編寫(xiě)代碼實(shí)現(xiàn)跑馬燈工程。通過(guò)ISP下載代碼到實(shí)驗(yàn)板,查看運(yùn)行結(jié)果。使用JLINK下載代碼到目標(biāo)板,查看運(yùn)行結(jié)果,使用JLINK在線調(diào)試。

      四.實(shí)驗(yàn)設(shè)備

      硬件部分:PC計(jì)算機(jī)(宿主機(jī))、亮點(diǎn)STM32實(shí)驗(yàn)板、JLINK。軟件部分:PC機(jī)WINDOWS系統(tǒng)、MDK KEIL軟件、ISP軟件。

      五.實(shí)驗(yàn)步驟

      1.熟悉MDK KEIL開(kāi)發(fā)環(huán)境 2.熟悉串口編程軟件ISP 3.查看固件庫(kù)結(jié)構(gòu)和文件

      4.建立工程目錄,復(fù)制庫(kù)文件 5.建立和配置工程 6.編寫(xiě)代碼 7.編譯代碼

      8.使用ISP下載到實(shí)驗(yàn)板 9.測(cè)試運(yùn)行結(jié)果

      10.使用JLINK下載到實(shí)驗(yàn)板 11.單步調(diào)試

      12.記錄實(shí)驗(yàn)過(guò)程,撰寫(xiě)實(shí)驗(yàn)報(bào)告

      六.實(shí)驗(yàn)結(jié)果及測(cè)試

      源代碼:

      兩個(gè)燈LED0與LED1實(shí)現(xiàn)交替閃爍的類(lèi)跑馬燈效果,每300ms閃爍一次。

      七.實(shí)驗(yàn)總結(jié)

      通過(guò)本次次實(shí)驗(yàn)我了解了STM32開(kāi)發(fā)板的基本使用,初次接觸這個(gè)開(kāi)發(fā)板和MDK KEILC軟件,對(duì)軟件操作不太了解,通過(guò)這次實(shí)驗(yàn)了解并熟練地使用MDK KEIL軟件,用這個(gè)軟件來(lái)編程和完成一些功能的實(shí)現(xiàn)。作為 STM32 的入門(mén)第一個(gè)例子,詳細(xì)介紹了STM32 的IO口操作,同時(shí)鞏固了前面的學(xué)習(xí),并進(jìn)一步介紹了MDK的軟件仿真功能。

      實(shí)驗(yàn)二 按鍵輸入實(shí)驗(yàn)

      一.實(shí)驗(yàn)簡(jiǎn)介

      在實(shí)驗(yàn)一的基礎(chǔ)上,使用按鍵控制流水燈速度,及使用按鍵控制流水燈流水方向。

      二.實(shí)驗(yàn)?zāi)康?/p>

      熟練使用庫(kù)函數(shù)操作GPIO,掌握中斷配置和中斷服務(wù)程序編寫(xiě)方法,掌握通過(guò)全局變量在中斷服務(wù)程序和主程序間通信的方法。

      三.實(shí)驗(yàn)內(nèi)容

      實(shí)現(xiàn)初始化GPIO,并配置中斷,在中斷服務(wù)程序中通過(guò)修改全局變量,達(dá)到控制流水燈速度及方向。

      使用JLINK下載代碼到目標(biāo)板,查看運(yùn)行結(jié)果,使用JLINK在線調(diào)試。

      四.實(shí)驗(yàn)設(shè)備

      硬件部分:PC計(jì)算機(jī)(宿主機(jī))、亮點(diǎn)STM32實(shí)驗(yàn)板、JLINK、示波器。軟件部分:PC機(jī)WINDOWS系統(tǒng)、MDK KEIL軟件、ISP軟件。

      五.實(shí)驗(yàn)步驟

      1在實(shí)驗(yàn)1代碼的基礎(chǔ)上,編寫(xiě)中斷初始化代碼

      2在主程序中聲明全局變量,用于和中斷服務(wù)程序通信,編寫(xiě)完成主程序 3編寫(xiě)中斷服務(wù)程序

      4編譯代碼,使用JLINK下載到實(shí)驗(yàn)板 5.單步調(diào)試

      6記錄實(shí)驗(yàn)過(guò)程,撰寫(xiě)實(shí)驗(yàn)報(bào)告

      六.實(shí)驗(yàn)結(jié)果及測(cè)試

      源代碼:

      我們將通過(guò)MiniSTM32 板上載有的3個(gè)按鈕,來(lái)控制板上的2個(gè)LED,其中KEY0控制LED0,按一次亮,再按一次,就滅。KEY1 控制LED1,效果同KEY0。KEY_2(KEY_UP),同時(shí)控制LED0 和LED1,按一次,他們的狀態(tài)就翻轉(zhuǎn)一次。

      七.實(shí)驗(yàn)總結(jié)

      通過(guò)本次實(shí)驗(yàn),我學(xué)會(huì)了如何使用STM32 的IO 口作為輸入用。TM32 的IO 口做輸入使用的時(shí)候,是通過(guò)讀取IDR 的內(nèi)容來(lái)讀取IO 口的狀態(tài)的。這里需要注意的是 KEY0 和KEY1 是低電平有效的,而WK_UP 是高電平有效的,而且要確認(rèn)WK_UP 按鈕與DS18B20 的連接是否已經(jīng)斷開(kāi),要先斷開(kāi),否則DS18B20 會(huì)干擾WK_UP按鍵!并且KEY0 和KEY1 連接在與JTAG 相關(guān)的IO 口上,所以在軟件編寫(xiě)的時(shí)候要先禁用JTAG 功能,才能把這兩個(gè)IO 口當(dāng)成普通IO 口使用。

      實(shí)驗(yàn)三 串口實(shí)驗(yàn)

      一.實(shí)驗(yàn)簡(jiǎn)介

      編寫(xiě)代碼實(shí)現(xiàn)串口發(fā)送和接收,將通過(guò)串口發(fā)送來(lái)的數(shù)據(jù)回送回去。

      二.實(shí)驗(yàn)?zāi)康?/p>

      掌握STM32基本串口編程,進(jìn)一步學(xué)習(xí)中斷處理。

      三.實(shí)驗(yàn)內(nèi)容

      編寫(xiě)主程序,初始化串口1,設(shè)置波特率為9600,無(wú)校驗(yàn),數(shù)據(jù)位8位,停止位1位。編寫(xiě)中斷服務(wù)程序代碼實(shí)現(xiàn)將發(fā)送過(guò)來(lái)的數(shù)據(jù)回送。

      四.實(shí)驗(yàn)設(shè)備

      硬件部分:PC計(jì)算機(jī)(宿主機(jī))、亮點(diǎn)STM32實(shí)驗(yàn)板、JLINK、示波器。

      軟件部分:PC機(jī)WINDOWS系統(tǒng)、MDK KEIL軟件、ISP軟件、串口調(diào)試助手。

      五.實(shí)驗(yàn)步驟

      1編寫(xiě)串口初始化代碼

      2編寫(xiě)中斷服務(wù)程序代碼

      3編譯代碼,使用JLINK或ISP下載到實(shí)驗(yàn)板 4記錄實(shí)驗(yàn)過(guò)程,撰寫(xiě)實(shí)驗(yàn)報(bào)告

      六.實(shí)驗(yàn)結(jié)果及測(cè)試

      源代碼:

      把代碼下載到 MiniSTM32 開(kāi)發(fā)板,可以看到板子上的LED0 開(kāi)始閃爍,說(shuō)明程序已經(jīng)在跑了。接著我們打開(kāi)串口調(diào)試助手,看到如下信息:

      證明串口數(shù)據(jù)發(fā)送沒(méi)問(wèn)題。接著,我們?cè)诎l(fā)送區(qū)輸入上面的文字,輸入完后按回車(chē)鍵。然后單擊發(fā)送,可以得到如下結(jié)果:

      七.實(shí)驗(yàn)總結(jié)

      通過(guò)本次實(shí)驗(yàn),我進(jìn)一步了解了串口的使用,學(xué)會(huì)了通過(guò)串口發(fā)送和接收數(shù)據(jù),將通過(guò)串口發(fā)送來(lái)的數(shù)據(jù)回送回去。該實(shí)驗(yàn)的硬件配置不同于前兩個(gè)實(shí)驗(yàn),串口 1 與USB 串口默認(rèn)是分開(kāi)的,并沒(méi)有在PCB上連接在一起,需要通過(guò)跳線帽來(lái)連接一下。這里我們把P4 的RXD 和TXD 用跳線帽與P3 的PA9 和PA10 連接起來(lái)。

      實(shí)驗(yàn)四 外部中斷實(shí)驗(yàn)

      一.實(shí)驗(yàn)簡(jiǎn)介

      STM32 的 IO 口在本章第一節(jié)有詳細(xì)介紹,而外部中斷在第二章也有詳細(xì)的闡述。這里我們將介紹如何將這兩者結(jié)合起來(lái),實(shí)現(xiàn)外部中斷輸入。

      二.實(shí)驗(yàn)?zāi)康?/p>

      進(jìn)一步掌握串口編程,進(jìn)一步學(xué)習(xí)外部中斷編程,提高編程能力。

      三.實(shí)驗(yàn)內(nèi)容

      初始化IO口的輸入,開(kāi)啟復(fù)用時(shí)鐘,設(shè)置IO與中斷的映射關(guān)系,從而開(kāi)啟與IO口相對(duì)應(yīng)的線上中斷事件,設(shè)置觸發(fā)條件。配置中斷分組(NVIC),并使能中斷,編寫(xiě)中斷服務(wù)函數(shù)。

      四.實(shí)驗(yàn)設(shè)備

      硬件部分:PC計(jì)算機(jī)(宿主機(jī))、亮點(diǎn)STM32實(shí)驗(yàn)板、JLINK、示波器。

      軟件部分:PC機(jī)WINDOWS系統(tǒng)、MDK KEIL軟件、ISP軟件、串口調(diào)試助手。

      五.實(shí)驗(yàn)步驟

      1.2.3.4.編寫(xiě)中斷服務(wù)程序代碼 使用ISP下載到實(shí)驗(yàn)板 測(cè)試運(yùn)行結(jié)果

      記錄實(shí)驗(yàn)過(guò)程,撰寫(xiě)實(shí)驗(yàn)報(bào)告

      六.實(shí)驗(yàn)結(jié)果及測(cè)試

      源代碼:

      打開(kāi)串口助手。

      七.實(shí)驗(yàn)總結(jié)

      首先需要將IO設(shè)置為中斷輸入口: 1)初始化 IO 口為輸入。

      2)開(kāi)啟 IO 口復(fù)用時(shí)鐘,設(shè)置 IO 口與中斷線的映射關(guān)系。

      3)開(kāi)啟與該 IO口相對(duì)的線上中斷/事件,設(shè)置觸發(fā)條件。

      4)配置中斷分組(NVIC),并使能中斷。

      5)編寫(xiě)中斷服務(wù)函數(shù)。

      這一節(jié),使用的是中斷來(lái)檢測(cè)按鍵,通過(guò) WK_UP 按鍵實(shí)現(xiàn)按一次 LED0 和 LED 1 同時(shí)翻轉(zhuǎn),按 KEY0 翻轉(zhuǎn) LED0,按 KEY1 翻轉(zhuǎn) LED1。

      試驗(yàn)中外部中斷函數(shù)不能進(jìn)入的原因分析 : 1)GPIO或者AFIO的時(shí)鐘沒(méi)有開(kāi)啟。2)GPIO和配置的中斷線路不匹配。3)中斷觸發(fā)方式和實(shí)際不相符合。

      4)中斷處理函數(shù)用庫(kù)函數(shù)時(shí),寫(xiě)錯(cuò),經(jīng)??赡艹霈F(xiàn)數(shù)字和字母之間沒(méi)有下劃線。5)外部中斷是沿觸發(fā),有可能不能檢測(cè)到沿,比如 中斷線是低電平(浮空輸入),觸發(fā)是下降沿觸發(fā),可能會(huì)出現(xiàn)一直是低電平,高電平的時(shí)候是一樣的情況,電平持續(xù)為高電平。

      6)沒(méi)有用軟件中斷來(lái)觸發(fā)外部中斷,調(diào)用函數(shù)EXTI_GenerateSWInterrupt;,因?yàn)檐浖袛嘞扔谶呇刂袛嗵幚怼?/p>

      實(shí)驗(yàn)五 獨(dú)立看門(mén)狗實(shí)驗(yàn)

      一. 實(shí)驗(yàn)簡(jiǎn)介

      獨(dú)立看門(mén)狗(IWDG)由專(zhuān)用的低速時(shí)鐘(LSI)驅(qū)動(dòng),即使主時(shí)鐘發(fā)生故障它也仍然有效。窗口看門(mén)狗由從APB1時(shí)鐘分頻后得到的時(shí)鐘驅(qū)動(dòng),通過(guò)可配置的時(shí)間窗口來(lái)檢測(cè)應(yīng)用程序非正常的過(guò)遲或過(guò)早的操作。

      二.實(shí)驗(yàn)?zāi)康?/p>

      通過(guò)編程,編寫(xiě)一個(gè)獨(dú)立看門(mén)狗驅(qū)動(dòng)程序

      三.實(shí)驗(yàn)內(nèi)容

      啟動(dòng) STM32 的獨(dú)立看門(mén)狗,從而使能看門(mén)狗,在程序里面必須間隔一定時(shí)間喂狗,否則將導(dǎo)致程序復(fù)位。利用這一點(diǎn),我們本章將通過(guò)一個(gè) LED 燈來(lái)指示程序是否重啟,來(lái)驗(yàn)證 STM32 的獨(dú)立看門(mén)狗。

      四.實(shí)驗(yàn)設(shè)備

      硬件部分:PC計(jì)算機(jī)(宿主機(jī))、亮點(diǎn)STM32實(shí)驗(yàn)板、JLINK。

      軟件部分:PC機(jī)WINDOWS系統(tǒng)、MDK KEIL軟件、ISP軟件、串口調(diào)試助手。

      五.實(shí)驗(yàn)步驟

      1.2.3.4.參考教材獨(dú)立看門(mén)狗部分,編寫(xiě)?yīng)毩⒖撮T(mén)狗驅(qū)動(dòng)程序。建立和配置工程 編寫(xiě)代碼

      使用ISP下載到實(shí)驗(yàn)板

      記錄實(shí)驗(yàn)過(guò)程,撰寫(xiě)實(shí)驗(yàn)報(bào)告

      六.實(shí)驗(yàn)結(jié)果及測(cè)試

      源代碼:

      在配置看門(mén)狗后,看到LED0 不停的閃爍,如果WK_UP 按鍵按下,就喂狗,只要WK_UP 不停的按,看門(mén)狗就一直不會(huì)產(chǎn)生復(fù)位,保持LED0 的常亮,一旦超過(guò)看門(mén)狗定溢出時(shí)間(Tout)還沒(méi)按,那么將會(huì)導(dǎo)致程序重啟,這將導(dǎo)致LED0 熄滅一次。

      七.實(shí)驗(yàn)總結(jié)

      通過(guò)本次實(shí)驗(yàn),我掌握了啟動(dòng)獨(dú)立看門(mén)狗的步驟: 1)向 IWDG_KR 寫(xiě)入 0X5555。2)向 IWDG_KR 寫(xiě)入 0XAAAA。3)向 IWDG_KR 寫(xiě)入 0XCCCC。

      通過(guò)上面 3個(gè)步驟,啟動(dòng) STM32 的看門(mén)狗,從而使能看門(mén)狗,在程序里面就必須間隔一定時(shí)間喂狗,否則將導(dǎo)致程序復(fù)位。利用這一點(diǎn),本章通過(guò)一個(gè)LED 燈來(lái)指示程序是否重啟,來(lái)驗(yàn)證 STM32 的獨(dú)立看門(mén)狗。在配置看門(mén)狗后,LED0 將常亮,如果 WK_UP 按鍵按下,就喂狗,只要 WK_UP 不停的按,看門(mén)狗就一直不會(huì)產(chǎn)生復(fù)位,保持 LED 0 的常亮,一旦超過(guò)看門(mén)狗溢出時(shí)間(Tout)還沒(méi)按,那么將會(huì)導(dǎo)致程序重啟,這將導(dǎo)致 LED 0 熄滅一次。

      實(shí)驗(yàn)七 定時(shí)器中斷實(shí)驗(yàn)

      一. 實(shí)驗(yàn)簡(jiǎn)介

      STM32 的定時(shí)器是一個(gè)通過(guò)可編程預(yù)分頻器(PSC)驅(qū)動(dòng)的 16 位自動(dòng)裝載計(jì)數(shù)器(CNT)構(gòu)成。STM32 的通用定時(shí)器可以被用于:測(cè)量輸入信號(hào)的脈沖長(zhǎng)度(輸入捕獲)或者產(chǎn)生輸出波形(輸出比較和 PWM)等。使用定時(shí)器預(yù)分頻器和 RCC 時(shí)鐘控制器預(yù)分頻器,脈沖長(zhǎng)度和波形周期可以在幾微秒到幾毫秒間調(diào)整。STM32 的每個(gè)通用定時(shí)器都是完全獨(dú)立的,沒(méi)有互相共享的任何資源。

      二.實(shí)驗(yàn)?zāi)康?/p>

      熟練掌握定時(shí)器中斷,學(xué)會(huì)對(duì)定時(shí)器中斷的編程操作。

      三.實(shí)驗(yàn)內(nèi)容

      使用定時(shí)器產(chǎn)生中斷,然后在中斷服務(wù)函數(shù)里面翻轉(zhuǎn) LED1 上的電平,來(lái)指示定時(shí)器中斷的產(chǎn)生,修改中斷時(shí)間。

      四.實(shí)驗(yàn)設(shè)備

      硬件部分:PC計(jì)算機(jī)(宿主機(jī))、亮點(diǎn)STM32實(shí)驗(yàn)板、JLINK。

      軟件部分:PC機(jī)WINDOWS系統(tǒng)、MDK KEIL軟件、ISP軟件、串口調(diào)試助手。

      五.實(shí)驗(yàn)步驟

      1.參考教材定時(shí)器中斷部分,編寫(xiě)定時(shí)器中斷的驅(qū)動(dòng)程序。2.編寫(xiě)主程序

      3.編譯代碼,使用JLINK或ISP下載到實(shí)驗(yàn)板 4.記錄實(shí)驗(yàn)過(guò)程,撰寫(xiě)實(shí)驗(yàn)報(bào)告

      六.實(shí)驗(yàn)結(jié)果及測(cè)試

      源代碼:

      七.實(shí)驗(yàn)總結(jié)

      通過(guò)本次實(shí)驗(yàn),認(rèn)識(shí)到時(shí)間中斷來(lái)控制LED燈的閃爍,同時(shí)也可以將時(shí)間中斷應(yīng)用到控制其他的程序塊。

      以TIME3為例產(chǎn)生中斷的步驟為 1)TIM3 時(shí)鐘使能。

      2)設(shè)置 TIM3_ARR 和 TIM3_PSC 的值。

      3)設(shè)置 TIM3_DIER 允許更新中斷。

      4)允許 TIM3 工作。

      5)TIM3 中斷分組設(shè)置。6)編寫(xiě)中斷服務(wù)函數(shù)。

      在中斷產(chǎn)生后,通過(guò)狀態(tài)寄存器的值來(lái)判斷此次產(chǎn)生的中斷屬于什么類(lèi)型。然后執(zhí)行相關(guān)的操作,我們這里使用的是更新(溢出)中斷,所以在狀態(tài)寄存器 SR 的最低位。在處理完中斷之后應(yīng)該向 TIM3_SR 的最低位寫(xiě) 0,來(lái)清除該中斷標(biāo)志。

      實(shí)驗(yàn)十三 ADC實(shí)驗(yàn)

      一.實(shí)驗(yàn)簡(jiǎn)介

      通過(guò)DAC將STM32系統(tǒng)的數(shù)字量轉(zhuǎn)換為模擬量。使用ADC將模擬量轉(zhuǎn)換為數(shù)字量。

      二.實(shí)驗(yàn)?zāi)康?/p>

      掌握DAC和ADC編程。

      三.實(shí)驗(yàn)內(nèi)容

      編寫(xiě)代碼實(shí)現(xiàn)簡(jiǎn)單的DAC單次發(fā)送

      編寫(xiě)代碼實(shí)現(xiàn)ADC采集DAC發(fā)送的數(shù)據(jù),并發(fā)送到串口

      四.實(shí)驗(yàn)設(shè)備

      硬件部分:PC計(jì)算機(jī)(宿主機(jī))、亮點(diǎn)STM32實(shí)驗(yàn)板、JLINK。

      軟件部分:PC機(jī)WINDOWS系統(tǒng)、MDK KEIL軟件、ISP軟件、串口調(diào)試助手。

      五.實(shí)驗(yàn)步驟

      1編寫(xiě)主程序

      2編譯代碼,使用JLINK或ISP下載到實(shí)驗(yàn)板,使用串口調(diào)試助手觀察數(shù)據(jù) 3記錄實(shí)驗(yàn)過(guò)程,撰寫(xiě)實(shí)驗(yàn)報(bào)告

      六.實(shí)驗(yàn)結(jié)果及測(cè)試

      源代碼:

      七.實(shí)驗(yàn)總結(jié)

      本節(jié)將利用 STM32的 ADC1 通道 0 來(lái)采樣外部電壓值,并在串口調(diào)試助手中顯示出來(lái)。步驟如下:

      1)開(kāi)啟 PA 口時(shí)鐘,設(shè)置 PA0 為模擬輸入。

      2)使能 ADC1 時(shí)鐘,并設(shè)置分頻因子。

      3)設(shè)置 ADC1 的工作模式。

      4)設(shè)置 ADC1 規(guī)則序列的相關(guān)信息。

      5)開(kāi)啟 AD 轉(zhuǎn)換器,并校準(zhǔn)。

      6)讀取 ADC 值。

      在上面的校準(zhǔn)完成之后,ADC 就算準(zhǔn)備好了。接下來(lái)我們要做的就是設(shè)置規(guī)則序列 0 里面的通道,然后啟動(dòng) ADC 轉(zhuǎn)換。在轉(zhuǎn)換結(jié)束后,讀取 ADC1_DR 里面的值。

      通過(guò)以上幾個(gè)步驟的設(shè)置,可以正常的使用 STM32 的 ADC1 來(lái)執(zhí)行 AD 轉(zhuǎn)換操作。

      通過(guò)本次實(shí)驗(yàn)的學(xué)習(xí),我們了解了STM32 ADC的使用,但這僅僅是STM32強(qiáng)大的ADC 功能的一小點(diǎn)應(yīng)用。STM32 的ADC 在很多地方都可以用到,其ADC 的DMA 功能是很不錯(cuò)的,實(shí)驗(yàn)十五 DMA實(shí)驗(yàn)

      一. 實(shí)驗(yàn)簡(jiǎn)介

      直接存儲(chǔ)器存取(DMA)用來(lái)提供在外設(shè)和存儲(chǔ)器之間或者存儲(chǔ)器和存儲(chǔ)器之間的高速數(shù)據(jù)傳輸。無(wú)須CPU干預(yù),數(shù)據(jù)可以通過(guò)DMA快速地移動(dòng),這就節(jié)省了CPU的資源來(lái)做其他操作。

      二.實(shí)驗(yàn)?zāi)康?/p>

      熟練掌握DMA編程,學(xué)會(huì)對(duì)EPC02的讀寫(xiě)操作,學(xué)習(xí)雙緩沖兵乓操作,理解互斥資源。提高編程能力。

      三.實(shí)驗(yàn)內(nèi)容

      利用外部按鍵KEY0 來(lái)控制DMA 的傳送,每按一次KEY0,DMA 就傳送一次數(shù)據(jù)

      到USART1,然后在串口調(diào)試助手觀察進(jìn)度等信息。LED0 還是用來(lái)做為程序運(yùn)行的指示燈。

      這里我們使用到的硬件資源如下: 1)按鍵KEY0。2)指示燈LED0。

      3)使用串口調(diào)試助手觀察數(shù)據(jù)

      四.實(shí)驗(yàn)設(shè)備

      硬件部分:PC計(jì)算機(jī)(宿主機(jī))、亮點(diǎn)STM32實(shí)驗(yàn)板、JLINK。

      軟件部分:PC機(jī)WINDOWS系統(tǒng)、MDK KEIL軟件、ISP軟件、網(wǎng)絡(luò)調(diào)試助手。

      五.實(shí)驗(yàn)步驟

      1編寫(xiě)主程序

      2編譯代碼,使用JLINK或ISP下載到實(shí)驗(yàn)板,使用串口調(diào)試助手觀察數(shù)據(jù) 3記錄實(shí)驗(yàn)過(guò)程,撰寫(xiě)實(shí)驗(yàn)報(bào)告

      六.實(shí)驗(yàn)結(jié)果及測(cè)試

      源代碼:

      伴隨 LED0 的不停閃爍,提示程序在運(yùn)行。我們打開(kāi)串口調(diào)試助手,然后按KEY0,可以看到串口顯示如下內(nèi)容:

      七.實(shí)驗(yàn)總結(jié)

      本節(jié)利用 STM32 的 DMA 來(lái)實(shí)現(xiàn)串口數(shù)據(jù)傳送,DMA通道的配置需要: 1)設(shè)置外設(shè)地址。

      2)設(shè)置存儲(chǔ)器地址。

      3)設(shè)置傳輸數(shù)據(jù)量。

      4)設(shè)置通道 4 的配置信息。

      5)使能 DMA1 通道 4,啟動(dòng)傳輸。

      通過(guò)以上 5 步設(shè)置,我們就可以啟動(dòng)一次 USART1 的 DMA 傳輸了。

      DMA控制器對(duì)DMA請(qǐng)求判別優(yōu)先級(jí)及屏蔽,向總線裁決邏輯提出總線請(qǐng)求。當(dāng)CPU執(zhí)行完當(dāng)前總線周期即可釋放總線控制權(quán)。此時(shí),總線裁決邏輯輸出總線應(yīng)答,表示DMA已經(jīng)響應(yīng),通過(guò)DMA控制器通知I/O接口開(kāi)始DMA傳輸。

      DMA控制器獲得總線控制權(quán)后,CPU即刻掛起或只執(zhí)行內(nèi)部操作,由DMA控制器輸出讀寫(xiě)命令,直接控制RAM與I/O接口進(jìn)行DMA傳輸。

      在DMA控制器的控制下,在存儲(chǔ)器和外部設(shè)備之間直接進(jìn)行數(shù)據(jù)傳送,在傳送過(guò)中不需要中央處理器的參與。開(kāi)始時(shí)需提供要傳送的數(shù)據(jù)的起始位置和數(shù)據(jù)長(zhǎng)度。

      當(dāng)完成規(guī)定的成批數(shù)據(jù)傳送后,DMA控制器即釋放總線控制權(quán),并向I/O接口發(fā)出結(jié)束信號(hào)。當(dāng)I/O接口收到結(jié)束信號(hào)后,一方面停 止I/O設(shè)備的工作,另一方面向CPU提出中斷請(qǐng)求,使CPU從不介入的狀態(tài)解脫,并執(zhí)行一段檢查本次DMA傳輸操作正確性的代碼。最后,帶著本次操作結(jié)果及狀態(tài)繼續(xù)執(zhí)行原來(lái)的程序。

      由此可見(jiàn),DMA傳輸方式無(wú)需CPU直接控制傳輸,也沒(méi)有中斷處理方式那樣保留現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng)的過(guò)程,通過(guò)硬件為RAM與I/O設(shè)備開(kāi)辟一條直接傳送數(shù)據(jù)的通路,使CPU的效率大為提高。

      實(shí)驗(yàn)十六 I2C實(shí)驗(yàn)

      一.實(shí)驗(yàn)簡(jiǎn)介

      編程實(shí)現(xiàn)對(duì)使用I2C接口的EPC02芯片進(jìn)行寫(xiě)和讀操作。

      二.實(shí)驗(yàn)?zāi)康?/p>

      熟練掌握I2C編程,學(xué)會(huì)對(duì)EPC02的讀寫(xiě)操作。

      三.實(shí)驗(yàn)內(nèi)容

      編寫(xiě)I2C驅(qū)動(dòng)程序,使用驅(qū)動(dòng)程序初始化EPC02,判斷設(shè)備正確性。

      寫(xiě)256個(gè)0x5A到EPC02,讀出并發(fā)送給串口,通過(guò)串口調(diào)試助手判別是否讀到的都是0x5A.四.實(shí)驗(yàn)設(shè)備

      硬件部分:PC計(jì)算機(jī)(宿主機(jī))、亮點(diǎn)STM32實(shí)驗(yàn)板、JLINK。

      軟件部分:PC機(jī)WINDOWS系統(tǒng)、MDK KEIL軟件、ISP軟件、串口調(diào)試助手。

      五.實(shí)驗(yàn)步驟

      1參考教材I2C部分,編寫(xiě)I2C驅(qū)動(dòng)程序。2編寫(xiě)主程序

      3編譯代碼,使用JLINK或ISP下載到實(shí)驗(yàn)板 4記錄實(shí)驗(yàn)過(guò)程,撰寫(xiě)實(shí)驗(yàn)報(bào)告

      六.實(shí)驗(yàn)結(jié)果及測(cè)試

      伴隨 LED0 的不停閃爍,提示程序在運(yùn)行。我們先按下KEY0,可以看到如下所示的內(nèi)容,證明數(shù)據(jù)已經(jīng)被寫(xiě)入到24C02了。

      接著我們按KEY2,可以看我們剛剛寫(xiě)入的數(shù)據(jù)被顯示出來(lái)了,如下圖所示:

      源代碼:

      七.實(shí)驗(yàn)總結(jié)

      IIC是由數(shù)據(jù)線 SDA 和時(shí)鐘 SCL 構(gòu)成的串行總線,可發(fā)送和接收數(shù)據(jù)。在 CPU 與被控 IC 之間、IC 與 IC 之間進(jìn)行雙向傳送,高速 IIC 總線一般可達(dá) 400kbps 以上。

      IIC總線在傳送數(shù)據(jù)過(guò)程中共有三種類(lèi)型信號(hào),它們分別是:開(kāi)始信號(hào)、結(jié)束信號(hào)和應(yīng)答信號(hào)。這些信號(hào)中,起始信號(hào)是必需的,結(jié)束信號(hào)和應(yīng)答信號(hào),都可以不要。程序在開(kāi)機(jī)的時(shí)候會(huì)檢測(cè) 24C02 是否存在,如果不存在則會(huì)在TFTLCD 模塊上顯示錯(cuò)誤信息,同時(shí)LED0 慢閃。大家可以通過(guò)跳線帽把PC11 和PC12 短接就可以看到報(bào)錯(cuò)了。通過(guò)本次實(shí)驗(yàn),我掌握了如何使用IIC寫(xiě)入與讀出數(shù)據(jù),學(xué)習(xí)了編寫(xiě)I2C驅(qū)動(dòng)程序,使用驅(qū)動(dòng)程序初始化EPC02,判斷設(shè)備正確性,以及如何在助手上顯示。

      實(shí)驗(yàn)十七 SPI實(shí)驗(yàn)

      一.實(shí)驗(yàn)簡(jiǎn)介

      編程實(shí)現(xiàn)對(duì)SPI接口的W25Q64進(jìn)行讀寫(xiě)操作。

      二.實(shí)驗(yàn)?zāi)康?/p>

      熟練掌握SPI編程,學(xué)會(huì)對(duì)的W25Q64讀寫(xiě)操作。

      三.實(shí)驗(yàn)內(nèi)容

      1.2.3.4.5.編寫(xiě)SPI驅(qū)動(dòng)程序 初始化SPI接口

      讀取SPIFLASH的ID,如果正確繼續(xù),否則報(bào)錯(cuò)

      向SPIFALSH地址0x12AB00開(kāi)始寫(xiě)一串字符,再讀出比較判斷是否與寫(xiě)入的一致 向SPIFALSH地址0x12AB00開(kāi)始寫(xiě)連續(xù)256個(gè)字節(jié)的0x5A,然后讀出并發(fā)送給串口,通過(guò)串口調(diào)試助手判別是否讀到的都是0x5A.四.實(shí)驗(yàn)設(shè)備

      硬件部分:PC計(jì)算機(jī)(宿主機(jī))、亮點(diǎn)STM32實(shí)驗(yàn)板、JLINK。

      軟件部分:PC機(jī)WINDOWS系統(tǒng)、MDK KEIL軟件、ISP軟件、串口調(diào)試助手。

      五.實(shí)驗(yàn)步驟

      1參考SPI及SPI FLASH部分,編寫(xiě)SPI及SPI FLASH驅(qū)動(dòng)程序(可參考書(shū)上代碼)。2編寫(xiě)主程序

      3編譯代碼,使用JLINK或ISP下載到實(shí)驗(yàn)板 4記錄實(shí)驗(yàn)過(guò)程,撰寫(xiě)實(shí)驗(yàn)報(bào)告

      六.實(shí)驗(yàn)結(jié)果及測(cè)試

      源代碼:

      伴隨 LED0 的不停閃爍,提示程序在運(yùn)行。我們先按下KEY0,可以看到如圖13.17.4.2 所示的內(nèi)容,證明數(shù)據(jù)已經(jīng)被寫(xiě)入到W25X16了。

      接著我們按KEY2,可以看我們剛剛寫(xiě)入的數(shù)據(jù)被顯示出來(lái)了,如下圖所示:

      七.實(shí)驗(yàn)總結(jié)

      SPI 接口主要應(yīng)用在EEPROM,F(xiàn)LASH,實(shí)時(shí)時(shí)鐘,AD 轉(zhuǎn)換器,還有數(shù)字信號(hào)處理器和數(shù)字信號(hào)解碼器之間。SPI,是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時(shí)為 PCB 的布局上節(jié)省空間,提供方便,正是出于這種簡(jiǎn)單易用的特性,現(xiàn)在越來(lái)越多的芯片集成了這種通信協(xié)議,STM32 也有 SPI 接口。

      SPI 的設(shè)置步驟:

      1)配置相關(guān)引腳的復(fù)用功能,使能 SPI時(shí)鐘。

      2)設(shè)置 SPI 工作模式。

      3)使能 SPI。

      程序在開(kāi)機(jī)的時(shí)候會(huì)檢測(cè) W25X16 是否存在,如果不存在則會(huì)在TFTLCD 模塊上顯示錯(cuò)誤信息,同時(shí)LED0 慢閃。大家可以通過(guò)跳線帽把PA5 和PA6 短接就可以看到報(bào)錯(cuò)了。通過(guò)本實(shí)驗(yàn),我掌握了編寫(xiě)SPI程序?qū)懭牒妥x取FLASH的方法,掌握了對(duì)學(xué)會(huì)對(duì)的W25Q64讀寫(xiě)操作。對(duì)STM32開(kāi)發(fā)板有了進(jìn)一步的了解。

      實(shí)驗(yàn)二十一 紅外遙控實(shí)驗(yàn)

      一. 實(shí)驗(yàn)簡(jiǎn)介

      編程實(shí)現(xiàn)通過(guò)在 ALIENTEK MiniSTM32 開(kāi)發(fā)板上實(shí)現(xiàn)紅外遙控器的控制。

      二.實(shí)驗(yàn)?zāi)康?/p>

      掌握編程實(shí)現(xiàn)紅外遙控控制開(kāi)發(fā)板的方法。

      三.實(shí)驗(yàn)內(nèi)容

      1.編寫(xiě)紅外遙控驅(qū)動(dòng)程序 2.編寫(xiě)紅外遙控程序代碼 3.使用紅外遙控控制開(kāi)發(fā)板

      四.實(shí)驗(yàn)設(shè)備

      硬件部分:PC計(jì)算機(jī)(宿主機(jī))、亮點(diǎn)STM32實(shí)驗(yàn)板、JLINK。軟件部分:PC機(jī)WINDOWS系統(tǒng)、MDK KEIL軟件、ISP軟件。

      五.實(shí)驗(yàn)步驟

      4.編寫(xiě)紅外遙控驅(qū)動(dòng)程序 5.編寫(xiě)紅外遙控程序代碼

      6.編譯代碼,使用JLINK或ISP下載到實(shí)驗(yàn)板 7.記錄實(shí)驗(yàn)過(guò)程,撰寫(xiě)實(shí)驗(yàn)報(bào)告

      六.實(shí)驗(yàn)結(jié)果及測(cè)試

      源代碼:

      使用串口調(diào)試助手觀察數(shù)據(jù)

      七.實(shí)驗(yàn)總結(jié)

      紅外遙控是一種無(wú)線、非接觸控制技術(shù),具有抗干擾能力強(qiáng),信息傳輸可靠,功耗低,成本低,易實(shí)現(xiàn)等顯著優(yōu)點(diǎn),被諸多電子設(shè)備特別是家用電器廣泛采用,并越來(lái)越多的應(yīng)用到計(jì)算機(jī)系統(tǒng)中。

      通過(guò)本節(jié)實(shí)驗(yàn),我學(xué)習(xí)到了如何編程使用紅外遙控控制,在本程序中只是簡(jiǎn)單地輸出一個(gè)數(shù)值,在以后的應(yīng)用中可以實(shí)現(xiàn)更強(qiáng)大的功能,比如用紅外遠(yuǎn)程輸入控制開(kāi)發(fā)板進(jìn)行一些操作。對(duì)STM32有了進(jìn)一步的認(rèn)識(shí)。

      實(shí)驗(yàn)二十二 DS18B20實(shí)驗(yàn)

      一. 實(shí)驗(yàn)簡(jiǎn)介

      一. 在ALIENTEK MiniSTM32 開(kāi)發(fā)板上,通過(guò) DS18B20 來(lái)讀取環(huán)境溫度值。

      二.實(shí)驗(yàn)?zāi)康?/p>

      鞏固SPI編程。掌握使用感應(yīng)器獲取環(huán)境溫度的方法。

      三.實(shí)驗(yàn)內(nèi)容

      1.復(fù)位脈沖和應(yīng)答脈沖

      2.寫(xiě)時(shí)序

      3.讀時(shí)序

      四.實(shí)驗(yàn)設(shè)備

      硬件部分:PC計(jì)算機(jī)(宿主機(jī))、亮點(diǎn)STM32實(shí)驗(yàn)板、JLINK。軟件部分:PC機(jī)WINDOWS系統(tǒng)、MDK KEIL軟件、ISP軟件。

      五.實(shí)驗(yàn)步驟

      1.2.3.4.參考教材DS18B20編程部分,編寫(xiě)DS18B20驅(qū)動(dòng)程序 編寫(xiě)主程序

      編譯代碼,使用JLINK或ISP下載到實(shí)驗(yàn)板 記錄實(shí)驗(yàn)過(guò)程,撰寫(xiě)實(shí)驗(yàn)報(bào)告

      六.實(shí)驗(yàn)結(jié)果及測(cè)試

      源代碼:

      使用串口調(diào)試助手觀察數(shù)據(jù):

      七.實(shí)驗(yàn)總結(jié)

      DS18B20 是由 DALLAS 半導(dǎo)體公司推出的一種的“一線總線”接口的溫度傳感器。與傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它是一種新型的體積小、適用電壓寬、與微處理器接口簡(jiǎn)單的數(shù)字化溫度傳感器。

      通過(guò)本次實(shí)驗(yàn),我認(rèn)識(shí)到STM32的強(qiáng)大,在開(kāi)發(fā)板上可以添加其他感應(yīng)器從而實(shí)現(xiàn)更強(qiáng)大的功能。添加了DS18B20后的開(kāi)發(fā)板可以感應(yīng)外界的溫度,通過(guò)公式計(jì)算顯示出來(lái)。

      第三篇:嵌入式學(xué)習(xí)心得

      LPC2136是ARM7架構(gòu),是32位地址總線和數(shù)據(jù)總線,可以尋址的范圍為2的32次方

      =4GB(0x00000000~0xFFFFFFFF)

      我們的程序在哪里運(yùn)行?

      還記得我們?cè)谧觥芭荞R燈”和“蜂鳴器”兩個(gè)實(shí)驗(yàn),用ads1.2中建立工程文件的時(shí)候有設(shè)置三個(gè)地址:

      RO Base :0x40000000

      RW Base :0x40001000

      Image entry point :0x40000000

      開(kāi)始沒(méi)有講為什么,通過(guò)上面的系統(tǒng)存儲(chǔ)器映射圖解不知大家是否有所悟。LPC2136內(nèi)部自帶32KB RAM和256KB FLASH。

      32KB RAM分布在整個(gè)CPU存儲(chǔ)器空間的0x40000000~0x40007FFF;

      256KB FLASH分布在整個(gè)CPU存儲(chǔ)器空間的0x00000000~0x0003 FFFF;

      RO Base是告訴編譯系統(tǒng)把編譯生成的目標(biāo)碼放在0x40000000起始的位置,也就是代碼段存放在0x40000000開(kāi)始的位置。

      RW Base告訴編譯系統(tǒng)把各種變量(常量放在RO開(kāi)始的位置),堆棧放在0x40001000起始的位置。

      Image entry point:是告訴編譯系統(tǒng)程序入口點(diǎn)在0x40000000,即程序從這個(gè)地址開(kāi)始執(zhí)行。(此部分在附錄二中細(xì)說(shuō))

      Flash與RAM的區(qū)別

      通過(guò)以上所說(shuō),好像FLASH在這里沒(méi)什么用,如果你的RO地址定位在RAM中,那么FLASH確實(shí)沒(méi)有用。但FLASH是必須的功能部件。

      Flash的作用也許要從其與RAM的區(qū)別說(shuō)起:

      區(qū)別一:RAM是易失性存儲(chǔ)器,F(xiàn)lash是非易失性存儲(chǔ)器。通俗的說(shuō),存儲(chǔ)在RAM中的數(shù)據(jù)掉電后數(shù)據(jù)丟失;而存儲(chǔ)在FLASH中的數(shù)據(jù)掉電后任然保持。(必須通過(guò)工具或特殊命令來(lái)擦除)

      區(qū)別二:RAM是可讀寫(xiě)存儲(chǔ)器,F(xiàn)lash只讀存儲(chǔ)器。(也許有人要問(wèn),F(xiàn)lash難道不能寫(xiě)嗎?Flash可以寫(xiě),但不能象RAM一樣做簡(jiǎn)單賦值操作,必須通過(guò)Flash寫(xiě)命令寫(xiě),而且寫(xiě)入數(shù)據(jù)的最小單位為512字節(jié),即一個(gè)扇區(qū))

      區(qū)別三:RAM訪問(wèn)速度快,而Flash訪問(wèn)速度慢的多。

      區(qū)別四:RAM價(jià)格昂貴,F(xiàn)lash便宜。

      FLASH有何用途

      我們一般在調(diào)試程序的時(shí)候?yàn)榱颂岣唛_(kāi)發(fā)進(jìn)度,都把程序放在RAM中調(diào)試,在RAM中調(diào)試有一個(gè)缺陷就是每次上電必須下載程序到板子上,當(dāng)產(chǎn)品的各個(gè)模塊調(diào)試OK,產(chǎn)品就要實(shí)現(xiàn)脫機(jī)功能,即把程序燒寫(xiě)到FLASH中,這樣就不需要每次上電加載程序。我們手中拿的手機(jī),在開(kāi)發(fā)階段都是在RAM(SDRAM)中調(diào)試的,開(kāi)發(fā)完成,要發(fā)布的時(shí)候就把程序燒到FLASH,這樣我們開(kāi)機(jī)有能運(yùn)行FLASH的程序。

      第四篇:嵌入式實(shí)驗(yàn)報(bào)告

      嵌入式系統(tǒng)及應(yīng)用課 程設(shè)計(jì)報(bào)告

      姓名:陳宥祎

      班級(jí):14級(jí)計(jì)算機(jī)01班 學(xué)號(hào):1255010116 指導(dǎo)老師:黃衛(wèi)紅

      按鍵輸入實(shí)驗(yàn)

      一.實(shí)驗(yàn)簡(jiǎn)介

      在實(shí)驗(yàn)一的基礎(chǔ)上,使用按鍵控制流水燈速度,及使用按鍵控制流水燈流水方向。

      二.實(shí)驗(yàn)?zāi)康?/p>

      熟練使用庫(kù)函數(shù)操作GPIO,掌握中斷配置和中斷服務(wù)程序編寫(xiě)方法,掌握通過(guò)全局變量在中斷服務(wù)程序和主程序間通信的方法。

      三.實(shí)驗(yàn)內(nèi)容

      實(shí)現(xiàn)初始化GPIO,并配置中斷,在中斷服務(wù)程序中通過(guò)修改全局變量,達(dá)到控制流水燈速度及方向。

      使用JLINK下載代碼到目標(biāo)板,查看運(yùn)行結(jié)果,使用JLINK在線調(diào)試。

      四.實(shí)驗(yàn)設(shè)備

      硬件部分:PC計(jì)算機(jī)(宿主機(jī))、亮點(diǎn)STM32實(shí)驗(yàn)板、JLINK、示波器。軟件部分:PC機(jī)WINDOWS系統(tǒng)、MDK KEIL軟件、ISP軟件。

      五.實(shí)驗(yàn)步驟

      1在實(shí)驗(yàn)1代碼的基礎(chǔ)上,編寫(xiě)中斷初始化代碼

      2在主程序中聲明全局變量,用于和中斷服務(wù)程序通信,編寫(xiě)完成主程序 3編寫(xiě)中斷服務(wù)程序

      4編譯代碼,使用JLINK下載到實(shí)驗(yàn)板 5.單步調(diào)試

      6記錄實(shí)驗(yàn)過(guò)程,撰寫(xiě)實(shí)驗(yàn)報(bào)告

      六.實(shí)驗(yàn)結(jié)果及測(cè)試

      源代碼:

      我們將通過(guò)MiniSTM32 板上載有的3個(gè)按鈕,來(lái)控制板上的2個(gè)LED,其中KEY0控制LED0,按一次亮,再按一次,就滅。KEY1 控制LED1,效果同KEY0。KEY_2(KEY_UP),同時(shí)控制LED0 和LED1,按一次,他們的狀態(tài)就翻轉(zhuǎn)一次。

      七.實(shí)驗(yàn)總結(jié)

      通過(guò)本次實(shí)驗(yàn),我學(xué)會(huì)了如何使用STM32 的IO 口作為輸入用。TM32 的IO 口做輸入使用的時(shí)候,是通過(guò)讀取IDR 的內(nèi)容來(lái)讀取IO 口的狀態(tài)的。這里需要注意的是 KEY0 和KEY1 是低電平有效的,而WK_UP 是高電平有效的,而且要確認(rèn)WK_UP 按鈕與DS18B20 的連接是否已經(jīng)斷開(kāi),要先斷開(kāi),否則DS18B20 會(huì)干擾WK_UP按鍵!并且KEY0 和KEY1 連接在與JTAG 相關(guān)的IO 口上,所以在軟件編寫(xiě)的時(shí)候要先禁用JTAG 功能,才能把這兩個(gè)IO 口當(dāng)成普通IO 口使用。

      串口通信

      一.實(shí)驗(yàn)簡(jiǎn)介

      編寫(xiě)代碼實(shí)現(xiàn)串口發(fā)送和接收,將通過(guò)串口發(fā)送來(lái)的數(shù)據(jù)回送回去。

      二.實(shí)驗(yàn)?zāi)康?/p>

      掌握STM32基本串口編程,進(jìn)一步學(xué)習(xí)中斷處理。

      三.實(shí)驗(yàn)內(nèi)容

      編寫(xiě)主程序,初始化串口1,設(shè)置波特率為9600,無(wú)校驗(yàn),數(shù)據(jù)位8位,停止位1位。編寫(xiě)中斷服務(wù)程序代碼實(shí)現(xiàn)將發(fā)送過(guò)來(lái)的數(shù)據(jù)回送。

      四.實(shí)驗(yàn)設(shè)備

      硬件部分:PC計(jì)算機(jī)(宿主機(jī))、亮點(diǎn)STM32實(shí)驗(yàn)板、JLINK、示波器。

      軟件部分:PC機(jī)WINDOWS系統(tǒng)、MDK KEIL軟件、ISP軟件、串口調(diào)試助手。

      五.實(shí)驗(yàn)步驟

      1編寫(xiě)串口初始化代碼

      2編寫(xiě)中斷服務(wù)程序代碼

      3編譯代碼,使用JLINK或ISP下載到實(shí)驗(yàn)板 4記錄實(shí)驗(yàn)過(guò)程,撰寫(xiě)實(shí)驗(yàn)報(bào)告

      六.實(shí)驗(yàn)結(jié)果及測(cè)試

      源代碼:

      把代碼下載到 MiniSTM32 開(kāi)發(fā)板,可以看到板子上的LED0 開(kāi)始閃爍,說(shuō)明程序已經(jīng)在跑了。接著我們打開(kāi)串口調(diào)試助手,看到如下信息:

      證明串口數(shù)據(jù)發(fā)送沒(méi)問(wèn)題。接著,我們?cè)诎l(fā)送區(qū)輸入上面的文字,輸入完后按回車(chē)鍵。然后單擊發(fā)送,可以得到如下結(jié)果:

      七.實(shí)驗(yàn)總結(jié)

      通過(guò)本次實(shí)驗(yàn),我進(jìn)一步了解了串口的使用,學(xué)會(huì)了通過(guò)串口發(fā)送和接收數(shù)據(jù),將通過(guò)串

      口發(fā)送來(lái)的數(shù)據(jù)回送回去。該實(shí)驗(yàn)的硬件配置不同于前兩個(gè)實(shí)驗(yàn),串口 1 與USB 串口默認(rèn)是分開(kāi)的,并沒(méi)有在PCB上連接在一起,需要通過(guò)跳線帽來(lái)連接一下。這里我們把P4 的RXD 和TXD 用跳線帽與P3 的PA9 和PA10 連接起來(lái)。

      外部中斷

      一.實(shí)驗(yàn)簡(jiǎn)介

      STM32 的 IO 口在本章第一節(jié)有詳細(xì)介紹,而外部中斷在第二章也有詳細(xì)的闡述。這里我們將介紹如何將這兩者結(jié)合起來(lái),實(shí)現(xiàn)外部中斷輸入。

      二.實(shí)驗(yàn)?zāi)康?/p>

      進(jìn)一步掌握串口編程,進(jìn)一步學(xué)習(xí)外部中斷編程,提高編程能力。

      三.實(shí)驗(yàn)內(nèi)容

      初始化IO口的輸入,開(kāi)啟復(fù)用時(shí)鐘,設(shè)置IO與中斷的映射關(guān)系,從而開(kāi)啟與IO口相對(duì)應(yīng)的線上中斷事件,設(shè)置觸發(fā)條件。配置中斷分組(NVIC),并使能中斷,編寫(xiě)中斷服務(wù)函數(shù)。

      四.實(shí)驗(yàn)設(shè)備

      硬件部分:PC計(jì)算機(jī)(宿主機(jī))、亮點(diǎn)STM32實(shí)驗(yàn)板、JLINK、示波器。

      軟件部分:PC機(jī)WINDOWS系統(tǒng)、MDK KEIL軟件、ISP軟件、串口調(diào)試助手。

      五.實(shí)驗(yàn)步驟

      1.2.3.4.編寫(xiě)中斷服務(wù)程序代碼 使用ISP下載到實(shí)驗(yàn)板 測(cè)試運(yùn)行結(jié)果

      記錄實(shí)驗(yàn)過(guò)程,撰寫(xiě)實(shí)驗(yàn)報(bào)告

      六.實(shí)驗(yàn)結(jié)果及測(cè)試

      源代碼:

      打開(kāi)串口助手。

      七.實(shí)驗(yàn)總結(jié)

      首先需要將IO設(shè)置為中斷輸入口: 1)初始化 IO 口為輸入。

      2)開(kāi)啟 IO 口復(fù)用時(shí)鐘,設(shè)置 IO 口與中斷線的映射關(guān)系。

      3)開(kāi)啟與該 IO口相對(duì)的線上中斷/事件,設(shè)置觸發(fā)條件。

      4)配置中斷分組(NVIC),并使能中斷。

      5)編寫(xiě)中斷服務(wù)函數(shù)。

      這一節(jié),使用的是中斷來(lái)檢測(cè)按鍵,通過(guò) WK_UP 按鍵實(shí)現(xiàn)按一次 LED0 和 LED 1 同時(shí)翻轉(zhuǎn),按 KEY0 翻轉(zhuǎn) LED0,按 KEY1 翻轉(zhuǎn) LED1。試驗(yàn)中外部中斷函數(shù)不能進(jìn)入的原因分析 : 1)GPIO或者AFIO的時(shí)鐘沒(méi)有開(kāi)啟。2)GPIO和配置的中斷線路不匹配。3)中斷觸發(fā)方式和實(shí)際不相符合。

      4)中斷處理函數(shù)用庫(kù)函數(shù)時(shí),寫(xiě)錯(cuò),經(jīng)常可能出現(xiàn)數(shù)字和字母之間沒(méi)有下劃線。5)外部中斷是沿觸發(fā),有可能不能檢測(cè)到沿,比如 中斷線是低電平(浮空輸入),觸發(fā)是下降沿觸發(fā),可能會(huì)出現(xiàn)一直是低電平,高電平的時(shí)候是一樣的情況,電平持續(xù)為高電平。

      6)沒(méi)有用軟件中斷來(lái)觸發(fā)外部中斷,調(diào)用函數(shù)EXTI_GenerateSWInterrupt;,因?yàn)檐浖袛嘞扔谶呇刂袛嗵幚怼?/p>

      獨(dú)立看門(mén)狗實(shí)驗(yàn)

      一. 實(shí)驗(yàn)簡(jiǎn)介

      獨(dú)立看門(mén)狗(IWDG)由專(zhuān)用的低速時(shí)鐘(LSI)驅(qū)動(dòng),即使主時(shí)鐘發(fā)生故障它也仍然有效。窗口看門(mén)狗由從APB1時(shí)鐘分頻后得到的時(shí)鐘驅(qū)動(dòng),通過(guò)可配置的時(shí)間窗口來(lái)檢測(cè)應(yīng)用程序非正常的過(guò)遲或過(guò)早的操作。

      二.實(shí)驗(yàn)?zāi)康?/p>

      通過(guò)編程,編寫(xiě)一個(gè)獨(dú)立看門(mén)狗驅(qū)動(dòng)程序

      三.實(shí)驗(yàn)內(nèi)容

      啟動(dòng) STM32 的獨(dú)立看門(mén)狗,從而使能看門(mén)狗,在程序里面必須間隔一定時(shí)間喂狗,否則將導(dǎo)致程序復(fù)位。利用這一點(diǎn),我們本章將通過(guò)一個(gè) LED 燈來(lái)指示程序是否重啟,來(lái)驗(yàn)證 STM32 的獨(dú)立看門(mén)狗。

      四.實(shí)驗(yàn)設(shè)備

      硬件部分:PC計(jì)算機(jī)(宿主機(jī))、亮點(diǎn)STM32實(shí)驗(yàn)板、JLINK。

      軟件部分:PC機(jī)WINDOWS系統(tǒng)、MDK KEIL軟件、ISP軟件、串口調(diào)試助手。

      五.實(shí)驗(yàn)步驟

      1.2.3.4.參考教材獨(dú)立看門(mén)狗部分,編寫(xiě)?yīng)毩⒖撮T(mén)狗驅(qū)動(dòng)程序。建立和配置工程 編寫(xiě)代碼

      使用ISP下載到實(shí)驗(yàn)板

      記錄實(shí)驗(yàn)過(guò)程,撰寫(xiě)實(shí)驗(yàn)報(bào)告

      六.實(shí)驗(yàn)結(jié)果及測(cè)試

      源代碼:

      在配置看門(mén)狗后,看到LED0 不停的閃爍,如果WK_UP 按鍵按下,就喂狗,只要WK_UP 不停的按,看門(mén)狗就一直不會(huì)產(chǎn)生復(fù)位,保持LED0 的常亮,一旦超過(guò)看門(mén)狗定溢出時(shí)間(Tout)還沒(méi)按,那么將會(huì)導(dǎo)致程序重啟,這將導(dǎo)致LED0 熄滅一次。

      七.實(shí)驗(yàn)總結(jié)

      通過(guò)本次實(shí)驗(yàn),我掌握了啟動(dòng)獨(dú)立看門(mén)狗的步驟: 1)向 IWDG_KR 寫(xiě)入 0X5555。2)向 IWDG_KR 寫(xiě)入 0XAAAA。3)向 IWDG_KR 寫(xiě)入 0XCCCC。

      通過(guò)上面 3個(gè)步驟,啟動(dòng) STM32 的看門(mén)狗,從而使能看門(mén)狗,在程序里面就必須間隔一定時(shí)間喂狗,否則將導(dǎo)致程序復(fù)位。利用這一點(diǎn),本章通過(guò)一個(gè)LED 燈來(lái)指示程序是否重啟,來(lái)驗(yàn)證 STM32 的獨(dú)立看門(mén)狗。在配置看門(mén)狗后,LED0 將常亮,如果 WK_UP 按鍵按下,就喂狗,只要 WK_UP 不停的按,看門(mén)狗就一直不會(huì)產(chǎn)生復(fù)位,保持 LED 0 的常亮,一旦超過(guò)看門(mén)狗溢出時(shí)間(Tout)還沒(méi)按,那么將會(huì)導(dǎo)致程序重啟,這將導(dǎo)致 LED 0 熄滅一次。

      第五篇:嵌入式學(xué)習(xí)心得

      嵌入式學(xué)習(xí)心得

      當(dāng)今社會(huì),嵌入式系統(tǒng)已經(jīng)滲透到人們工作、生活中的各個(gè)領(lǐng)域,嵌入式處理器已占分散處理器市場(chǎng)份額的94%。而嵌入式Linux系統(tǒng)也蓬勃發(fā)展,不僅繼承了Linux源碼開(kāi)放、內(nèi)核穩(wěn)定高效、軟件豐富等優(yōu)勢(shì),還具備支持廣泛處理器結(jié)構(gòu)和硬件平臺(tái)、占有空間小、成本低廉、結(jié)構(gòu)緊湊等特點(diǎn)。

      我很幸運(yùn)接觸了嵌入式,在嵌入式實(shí)驗(yàn)我知道了構(gòu)建嵌入式系統(tǒng)的開(kāi)發(fā)環(huán)境明白了交叉編譯:交叉編譯的環(huán)境建立在宿主機(jī)上,而對(duì)應(yīng)的開(kāi)發(fā)板為目標(biāo)機(jī)。為了使宿主機(jī)上開(kāi)發(fā)的程序能夠方便的下載到目標(biāo)機(jī)上運(yùn)行,一般還要在宿主機(jī)上配置好網(wǎng)絡(luò),使其支持NFS或tftp等網(wǎng)絡(luò)服務(wù),從而達(dá)到兩臺(tái)機(jī)器之間的文件共享,知道了宿主機(jī)與目標(biāo)機(jī)之間的關(guān)系:在嵌入式系統(tǒng)開(kāi)發(fā)過(guò)程中,由于可執(zhí)行程序的編譯過(guò)程和執(zhí)行過(guò)程分別在宿主機(jī)和目標(biāo)機(jī)上完成,因此實(shí)現(xiàn)宿主機(jī)和目標(biāo)機(jī)之間的實(shí)時(shí)交互能夠大幅度提高嵌入式系統(tǒng)開(kāi)發(fā)的效率。由于目標(biāo)機(jī)也帶有操作系統(tǒng),因此可以通過(guò)實(shí)現(xiàn)不同機(jī)器之間的網(wǎng)絡(luò)共享來(lái)完成實(shí)時(shí)交互。宿主機(jī)開(kāi)發(fā)程序,而目標(biāo)機(jī)作為最后的執(zhí)行機(jī)。兩者在開(kāi)發(fā)時(shí)需要交替結(jié)合進(jìn)行。知道了UBOOT移植、UBOOT編譯、UBOOT燒寫(xiě)。LINUX內(nèi)核的移植、LINUX內(nèi)核燒寫(xiě)。LINUX驅(qū)動(dòng)程序的編寫(xiě)系統(tǒng)調(diào)用是操作系統(tǒng)內(nèi)核和應(yīng)用程序之間的接口,設(shè)備驅(qū)動(dòng)程序是操作系統(tǒng)內(nèi)核和機(jī)器硬件之間的接口.設(shè)備驅(qū)動(dòng)程序?yàn)閼?yīng)用程序屏蔽了硬件的細(xì)節(jié),這樣在應(yīng)用程序看來(lái),硬件設(shè)備只是一個(gè)設(shè)備文件,應(yīng)用程序可以像操作普通文件一樣對(duì)硬件設(shè)備進(jìn)行操作.設(shè)備驅(qū)動(dòng)程序是內(nèi)核的一部分,它完成以下的功能:對(duì)設(shè)備初始化和釋放、把數(shù)據(jù)從內(nèi)核傳送到硬件和從硬件讀取數(shù)據(jù)、讀取應(yīng)用程序傳送給設(shè)備文件的數(shù)據(jù)和回送應(yīng)用程序請(qǐng)求的數(shù)據(jù)、檢測(cè)和處理設(shè)備出現(xiàn)的錯(cuò)誤.在Linux操作系統(tǒng)下有兩類(lèi)主要的設(shè)備文件類(lèi)型,一種是字符設(shè)備,另一種是塊設(shè)備.字符設(shè)備和塊設(shè)備的主要區(qū)別是:在對(duì)字符設(shè)備發(fā)出讀/寫(xiě)請(qǐng)求時(shí),實(shí)際的硬件I/O一般就緊接著發(fā)生了,塊設(shè)備則不然,它利用一塊系統(tǒng)內(nèi)存作緩沖區(qū),當(dāng)用戶(hù) 進(jìn)程對(duì)設(shè)備請(qǐng)求能滿足用戶(hù)的要求,就返回請(qǐng)求的數(shù)據(jù),如果不能,就調(diào)用請(qǐng)求函數(shù)來(lái)進(jìn)行實(shí)際的I/O操作.塊設(shè)備是主要針對(duì)磁盤(pán)等慢速設(shè)備設(shè)計(jì)的,以免耗費(fèi) 過(guò)多的CPU時(shí)間來(lái)等待.、DM6446 USB驅(qū)動(dòng)編寫(xiě)。ARM+DSP雙處理器開(kāi)發(fā)實(shí)驗(yàn)。在這些實(shí)驗(yàn)當(dāng)中我遇到了很多問(wèn)題,因?yàn)槭堑谝淮谓佑|linux,很多命令都不清楚,操作起來(lái)很不方便,使實(shí)驗(yàn)進(jìn)度很慢,并且很多命令也是比葫蘆畫(huà)瓢,根本不知道為什么這么用,所以導(dǎo)致命令不熟練,下次操作時(shí)依然需要回憶。在程序開(kāi)發(fā)中我在課下熟悉了shell命令以后,對(duì)一般的操作也算了解,我明白了問(wèn)題就如爬山:不怕慢就怕站,只要我慢慢積累我就會(huì)學(xué)到應(yīng)該如何編寫(xiě)我自己的程序,搭建我自己的嵌入式系統(tǒng)。盡管我們已經(jīng)懂得了一些皮毛但是前方的路依然任重道遠(yuǎn),要想把我們專(zhuān)業(yè)的優(yōu)勢(shì)發(fā)揮出來(lái)就需要軟硬件結(jié)合,這無(wú)疑是一次巨大的契機(jī),我感覺(jué)在結(jié)

      課以后我們一定仔細(xì)想在實(shí)驗(yàn)中做的不足,以及實(shí)驗(yàn)中給我的資源我如何合理的應(yīng)用。畢竟學(xué)無(wú)止境,我也看看其他論壇上應(yīng)該建議我們?nèi)绾螌W(xué)習(xí)嵌入式,但是眾說(shuō)紛紜,我不應(yīng)該關(guān)注別人做了什么,但是我應(yīng)該明白我的每一次付出會(huì)有什么收獲,畢竟再多的參考也比不上你的實(shí)際情況,正如我們的dm6446它的學(xué)習(xí)方式與一般的arm還是有區(qū)別的,所以要因材施教。其實(shí)在你想做嵌入式Linux的時(shí)候,要對(duì)自己有信心。很可能自己以前學(xué)習(xí)的不是這個(gè)專(zhuān)業(yè)或者以前沒(méi)有接觸過(guò),就像我一樣,我以前也沒(méi)接觸過(guò)嵌入式,一旦我們確定了自己要做嵌入式,我想擺在我們面前的最大的一個(gè)難題就是,嵌入式對(duì)我們很模糊,好想心理面有好多好多陰霾,不用怕,請(qǐng)相信自己,新手都是這樣,有疑團(tuán),才會(huì)激發(fā)我們探索的動(dòng)力和激情。相信自己,在不久的將來(lái)自己會(huì)摸到嵌入式的棱角的,摸清他的面貌的。把學(xué)習(xí)穿插到日常生活中。一旦決定要學(xué),就從現(xiàn)在開(kāi)始學(xué)習(xí),永遠(yuǎn)不要希望人的一生會(huì)騰出一段時(shí)間來(lái)讓你去專(zhuān)門(mén)學(xué)習(xí)嵌入式的,就像當(dāng)你出生的時(shí)候,永遠(yuǎn)不可能會(huì)專(zhuān)門(mén)騰出一段時(shí)間來(lái)讓你專(zhuān)門(mén)學(xué)走路,最終情況是你學(xué)走路的同時(shí)很可能也在學(xué)習(xí)說(shuō)話,學(xué)習(xí)吃飯。所以,對(duì)于學(xué)生來(lái)說(shuō),永遠(yuǎn)不要試圖把學(xué)習(xí)嵌入式挪到假期,因?yàn)槟悴荒茴A(yù)料到假期你會(huì)發(fā)生什么而耽誤你學(xué)習(xí)的時(shí)間。需要用到什么學(xué)什么。不要企圖把Linux,arm等所謂的什么教程之內(nèi)的書(shū)看完了再去做開(kāi)發(fā)。個(gè)人覺(jué)得Linux,只要知道大概,只要知道簡(jiǎn)單的命令,會(huì)用就可以了,但是gcc,gdb一定要掌握,然后就是要掌握嵌入式Linux和Linux開(kāi)發(fā)環(huán)境的配置。嵌入式Linux是在開(kāi)發(fā)板里面的Linux。而單純的說(shuō)Linux說(shuō)的是PC上的Linux。遇到問(wèn)題,我們就去解決,要解決,我們就可以翻書(shū),查資料,這樣既可以縮短項(xiàng)目開(kāi)發(fā)周期,又可以學(xué)習(xí),這樣就避免了可能你把一本關(guān)于Linux的書(shū)看完了,你還不知道如何去做嵌入式Linux開(kāi)發(fā)。不管你要做什么開(kāi)發(fā),裝上Linux后,請(qǐng)安裝英文版的,并且盡量在無(wú)圖形界面寫(xiě)工作。因?yàn)楹芏喙径济鞔_禁止用Linux圖形界面和中文版的。不管做什么開(kāi)發(fā),應(yīng)用開(kāi)發(fā),或者是驅(qū)動(dòng)開(kāi)發(fā),都要先編譯內(nèi)核,因?yàn)橛泻枚辔募侵挥心憔幾g內(nèi)核之后才能產(chǎn)生的,而這些文件,很可能就是你要用的。做應(yīng)用開(kāi)發(fā),首先用從讀懂驅(qū)動(dòng)入手。不要求你會(huì)寫(xiě)驅(qū)動(dòng),但是起碼要讀懂驅(qū)動(dòng),這樣才有助于應(yīng)用開(kāi)發(fā)除非你的嵌入式開(kāi)發(fā)板是跑裸機(jī),也就是沒(méi)有Linux系統(tǒng),你可以操作arm的寄存器,可以直接操作硬件,比如JTAG仿真就是。其他情況,一旦你有Linux系統(tǒng),你的程序時(shí)不可能直接操作硬件的。明白這一點(diǎn),你就不會(huì)向我一樣,開(kāi)始做嵌入式Linux應(yīng)用的時(shí)候以為可以和單片機(jī)一樣,直接控制引腳來(lái)寫(xiě)程序了。有了Linux,用主要用的系統(tǒng)提供給用戶(hù)的接口。

      要時(shí)刻把握每一次提高自己的機(jī)會(huì)!

      下載嵌入式有感word格式文檔
      下載嵌入式有感.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶(hù)自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        嵌入式心得體會(huì)

        這學(xué)期才接觸嵌入式系統(tǒng)感覺(jué)還稱(chēng)不上入門(mén),我通過(guò)學(xué)習(xí)知道了嵌入式的發(fā)展前景很大,各個(gè)領(lǐng)域都用到了嵌入式,學(xué)好嵌入式不愁沒(méi)飯吃。 廣義上講,凡是帶有微處理器的專(zhuān)用軟硬件系統(tǒng)......

        嵌入式工程師(范文)

        什么是嵌入式工程師?與JAVA等通常的軟件工程師有什么區(qū)別?嵌入式軟件指嵌入在硬件中的非PC操作系統(tǒng)和開(kāi)發(fā)工具軟件,它在產(chǎn)業(yè)中的關(guān)聯(lián)關(guān)系體現(xiàn)為:芯片設(shè)計(jì)制造\嵌入式系統(tǒng)軟件\嵌入......

        嵌入式報(bào)告

        嵌入式實(shí)訓(xùn)報(bào)告姓名:張龍班級(jí):電氣803學(xué)號(hào):08010270嵌入式系統(tǒng)學(xué)習(xí)體會(huì) 一、 嵌入式發(fā)展前景 嵌入式系統(tǒng)無(wú)疑是當(dāng)前最熱門(mén)最有發(fā)展前途的IT應(yīng)用領(lǐng)域之一。嵌入式系統(tǒng)用在一些特......

        嵌入式實(shí)驗(yàn)報(bào)告

        西安郵電大學(xué) 嵌入式處理器及應(yīng)用實(shí)驗(yàn)報(bào)告書(shū) 學(xué)院名稱(chēng)學(xué)生姓名專(zhuān)業(yè)名稱(chēng)班級(jí) : : : :實(shí)驗(yàn)一ADS 1.2 集成開(kāi)發(fā)環(huán)境練習(xí)一、實(shí)驗(yàn)?zāi)康模?了解ADS 1.2 集成開(kāi)發(fā)環(huán)境的使用方法。 二、......

        嵌入式報(bào)告

        目錄 引言 ............................................................................................................................... 2 1. ARM概述 ...............

        嵌入式總結(jié)報(bào)告

        嵌入式實(shí)驗(yàn)報(bào)告期末論文 學(xué)生姓名: 楊佳潔 學(xué) 號(hào): 11570118 班 級(jí): 11計(jì)算機(jī)2班 指導(dǎo)教師: 黃 靜 2014年5月20日 嵌入式程序設(shè)計(jì)與應(yīng)用課程主要以理論與實(shí)驗(yàn)結(jié)合的方式講授,包......

        嵌入式總結(jié)

        一、嵌入式系統(tǒng)原理與應(yīng)用課程總結(jié) 這個(gè)學(xué)期我學(xué)習(xí)了《嵌入式原理與應(yīng)用》這門(mén)課程,雖然這個(gè)學(xué)期馬上就要結(jié)束了,對(duì)嵌入式的學(xué)習(xí)也要告一段落了,但是我覺(jué)得收獲還是很大的。學(xué)......

        嵌入式實(shí)驗(yàn)報(bào)告

        實(shí)驗(yàn)一 ARM匯編語(yǔ)言程序設(shè)計(jì) 一、 實(shí)驗(yàn)?zāi)康?1. 了解IAR Embedded Workbench 集成開(kāi)發(fā)環(huán)境 2. 掌握ARM匯編指令程序的設(shè)計(jì)及調(diào)試 二、 實(shí)驗(yàn)設(shè)備 1. PC操作系統(tǒng)WIN98或WIN2000......