亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        MicroPython用于單片機(jī)實(shí)驗(yàn)教學(xué)新模式的設(shè)計(jì)與研究

        2019-04-01 01:33:28徐志江
        計(jì)算機(jī)教育 2019年3期
        關(guān)鍵詞:開發(fā)板外設(shè)代碼

        徐志江,饒 晨,徐 紅,彭 宏

        (浙江工業(yè)大學(xué) 信息工程學(xué)院,浙江 杭州 310023)

        1 現(xiàn)有單片機(jī)實(shí)驗(yàn)教學(xué)存在的問題

        目前各大高校在單片機(jī)及嵌入式的教學(xué)方面均開設(shè)“單片機(jī)原理及應(yīng)用”“嵌入式系統(tǒng)”等相關(guān)課程。通過該方向的課程,學(xué)生了解到相關(guān)設(shè)備的硬件結(jié)構(gòu)、各模塊功能、指令集操作、軟硬件的開發(fā)環(huán)境、嵌入式系統(tǒng)方面的一些基礎(chǔ)知識,而且大部分的課程是以課堂教學(xué)結(jié)合動手實(shí)驗(yàn)操作的模式。實(shí)驗(yàn)既鞏固了學(xué)生在課堂所學(xué)的相關(guān)理論知識,又培養(yǎng)了學(xué)生對于單片機(jī)、嵌入式系統(tǒng)的學(xué)習(xí)興趣,提高了學(xué)生的動手實(shí)踐能力,而這對于培養(yǎng)行業(yè)企業(yè)所需要的高素質(zhì)應(yīng)用型工程技術(shù)人才,是十分有幫助的。

        現(xiàn)有的單片機(jī)教學(xué)一般采用“理論為主,實(shí)驗(yàn)為輔”的教學(xué)模式[1],現(xiàn)在課堂上都是講授單片機(jī)的硬件結(jié)構(gòu)、匯編指令、外設(shè)的硬件結(jié)構(gòu)及存儲器讀寫等相關(guān)知識,然后結(jié)合IO控制、AD、DA、中斷、定時(shí)器、DMA、I2C、SPI、串口、數(shù)碼管、LCD顯示等,做一些驗(yàn)證性實(shí)驗(yàn)。但是,現(xiàn)有的單片機(jī)實(shí)驗(yàn),必須在電腦上安裝好相應(yīng)的開發(fā)環(huán)境,歷經(jīng)編程、編譯、仿真調(diào)試、燒寫以及驗(yàn)證等多個環(huán)節(jié)。在整個過程中,單個環(huán)節(jié)出錯往往會影響整體,哪怕出現(xiàn)一點(diǎn)問題,都必須重新來一遍[2]。也就是說,單片機(jī)實(shí)驗(yàn)不能像解釋性語言一樣,在線修改、調(diào)試。經(jīng)驗(yàn)告訴我們,一個沒有單片機(jī)編程經(jīng)驗(yàn)的初學(xué)者,要想讓芯片跑起來,一旦出現(xiàn)問題,就要對照一兩千頁的英文文檔來排除,這絕非一天兩天學(xué)習(xí)就可以打下堅(jiān)實(shí)的基礎(chǔ),而需要長期的經(jīng)驗(yàn)積累。而且在實(shí)際的實(shí)驗(yàn)教學(xué)場景中,一些學(xué)生由于編程基礎(chǔ)差,理解實(shí)驗(yàn)?zāi)K代碼較慢,而課堂時(shí)間又有限,學(xué)生難以感受到單片機(jī)實(shí)驗(yàn)所帶來的樂趣,因而失去學(xué)習(xí)單片機(jī)課程的興趣。

        2 MicroPython介紹

        Python是一種結(jié)合了解釋性、編譯性、互動性和面向?qū)ο蟮哪_本語言,擁有極其豐富的Python庫,由于其代碼語言易于理解,操作靈活,使其在許多領(lǐng)域得到廣泛應(yīng)用,近幾年流行的數(shù)據(jù)挖掘、科學(xué)計(jì)算、人工智能以及區(qū)塊鏈技術(shù)等領(lǐng)域,都可以看到Python的身影[3],甚至在一些高考項(xiàng)目領(lǐng)域,也出現(xiàn)Python的身影。近幾年,北京、浙江等省份的信息技術(shù)教材使用簡單易懂的Python語言替代晦澀難懂的VB語言,將Python語言設(shè)置為高考內(nèi)容;山東等省份也將在最新出版的小學(xué)信息技術(shù)六年級教材加入Python內(nèi)容。使用Python,只需要學(xué)會如何引用各個庫中的模塊,在代碼中實(shí)現(xiàn)相應(yīng)的邏輯即可,免去了很多“重復(fù)造輪子”的工作,使編程變得純粹,節(jié)省開發(fā)時(shí)間。

        MicroPython是基于Python3語言的一個精簡版實(shí)現(xiàn),擁有自家的解析器、編譯器、虛擬機(jī)和類庫等,語法基本與Python一致。軟件底層使用ANSI C進(jìn)行重構(gòu),封裝了C語言中的大部分函數(shù),并且可以在資源受限的環(huán)境中運(yùn)行。用C語言或者M(jìn)icroPython語言實(shí)現(xiàn)相同的功能,MicroPython顯得尤為精簡,例如,MicroPython查看系統(tǒng)文件列表,只需要一行代碼就可以實(shí)現(xiàn),但是C語言實(shí)現(xiàn)需要數(shù)十行的代碼。MicroPython包含了諸如交互式提示、任意精度整數(shù)、關(guān)閉、列表解析、生成器、異常處理等高級功能[4]。

        在實(shí)際生活中,MicroPython也被用在越來越多的工程項(xiàng)目中。Matenat Khamphroo等人,使用支持MicroPython語言的STM32L432KC 168MHz Cortex M4處理器芯片,結(jié)合Thread網(wǎng)絡(luò)協(xié)議,制作了支持無線網(wǎng)絡(luò)的教育型移動機(jī)器人[5]。該機(jī)器人底層的MicroPython代碼結(jié)合Blockly(由Google提出的一種可視化編程語言),讓沒有基礎(chǔ)的編程初學(xué)者,通過圖形化的方式編寫代碼,實(shí)現(xiàn)相對應(yīng)的功能。林賢煉等人則在物聯(lián)網(wǎng)領(lǐng)域使用MicroPython作為編程語言,實(shí)現(xiàn)了辦公設(shè)備的底層驅(qū)動以及上網(wǎng)功能[6]。Sebastian Plamauer等人更是基于復(fù)雜的小型衛(wèi)星發(fā)射的軟件源代碼部分,比較了MicroPython和C語言的可讀性,發(fā)現(xiàn)并使用MicroPython作為編程語言,讓人們可以更專注于功能實(shí)現(xiàn),明顯提高了代碼的可讀性[7]。文獻(xiàn)[8]是一本講述如何在micro:bit板子上實(shí)現(xiàn)開發(fā)的經(jīng)典指導(dǎo)書籍。

        3 基于MicroPython的單片機(jī)實(shí)驗(yàn)教學(xué)

        3.1 實(shí)驗(yàn)教學(xué)改革思路與方案

        MicroPython的流行必將推動著嵌入式系統(tǒng)[9]相關(guān)產(chǎn)業(yè)的高速發(fā)展。隨著嵌入式相關(guān)產(chǎn)業(yè)的需求不斷擴(kuò)大,對相關(guān)專業(yè)人才的需求量也在不斷增加,嵌入式相關(guān)專業(yè)也會變得越來越熱門。單片機(jī)相關(guān)教學(xué)課程作為嵌入式系統(tǒng)的啟蒙教育,對學(xué)生在今后嵌入式系統(tǒng)方面的學(xué)習(xí)非常重要。因此我們針對現(xiàn)有單片機(jī)實(shí)驗(yàn)教學(xué)中出現(xiàn)的學(xué)生編程基礎(chǔ)差、實(shí)驗(yàn)上手慢、編譯調(diào)試耗時(shí)長等問題,提出了新的教學(xué)方案目標(biāo)與思路。

        考慮到隨著Python編程語言納入高考項(xiàng)目被越來越多的學(xué)生所使用,在單片機(jī)實(shí)驗(yàn)教學(xué)時(shí),因?yàn)榫幊陶Z法的相近,有Python編程語言經(jīng)驗(yàn)的學(xué)生,在使用MicroPython語言編程時(shí),會更加得心應(yīng)手。因此我們的教學(xué)方案的目標(biāo)是通過將MicroPython引入到單片機(jī)實(shí)驗(yàn)課程中,一方面使學(xué)生不再畏懼編程,對于底層設(shè)備的操作更容易上手,不再被繁瑣的調(diào)試開發(fā)流程所困擾,采用MicroPython作為編程語言,學(xué)生可以實(shí)現(xiàn)在線調(diào)試,而無需經(jīng)歷仿真調(diào)試、燒寫等過程。修改完代碼后,可以立即看到實(shí)驗(yàn)結(jié)果,使學(xué)生更加專注于嵌入式系統(tǒng)設(shè)備的學(xué)習(xí)與操作,享受實(shí)驗(yàn)成功所帶給他們的快感,從而能夠更容易地提升他們對于嵌入式相關(guān)課程的興趣,以真正達(dá)到實(shí)驗(yàn)輔助理論的效果。另一方面,學(xué)生在具備單片機(jī)開發(fā)的基本知識之后,能夠更容易地深入嵌入式系統(tǒng)方面的學(xué)習(xí)當(dāng)中,使其更好地具備現(xiàn)代嵌入式系統(tǒng)開發(fā)與研究的能力。

        STM32單片機(jī)是目前市場上功能強(qiáng)、速度快、資源豐富、支持的型號多、適應(yīng)性好、庫全面的一款非常適用于教學(xué)的單片機(jī)。同時(shí),Python基于其跨平臺的特性,可以在Windows、Linux、Mac系統(tǒng)上直接運(yùn)行。MicroPython結(jié)合兩者的長處,配合單片機(jī)課程的教學(xué)需要,研發(fā)制作模塊化、多功能、符合實(shí)際需求的單片機(jī)實(shí)驗(yàn)裝置以及編寫配套實(shí)驗(yàn)指導(dǎo)書。學(xué)生基于此單片機(jī)實(shí)驗(yàn)裝置,可以直接進(jìn)行相關(guān)的實(shí)驗(yàn)操作,從而加強(qiáng)學(xué)生的學(xué)習(xí)興趣,進(jìn)而提高對理論知識的認(rèn)知、概念的理解,以強(qiáng)化教學(xué)效果;同時(shí),對于培養(yǎng)學(xué)生的自學(xué)能力、創(chuàng)新能力都有重要的意義[10]。

        3.2 簡約但不簡單的MicroPython開發(fā)板

        開發(fā)板可選用官網(wǎng)(http://micropython.org/)指定的Pyboard,也可以采購國內(nèi)最早支持MicroPython的專業(yè)開發(fā)板。

        開發(fā)板非常簡潔,內(nèi)嵌了一顆ST公司的Cortex-M4高性能芯片STM32F405RGT6,一顆I2C接口的3軸方向/運(yùn)動檢測傳感器MMA7660,給整塊開發(fā)板供電的一顆LDO芯片,外接一個TF卡槽和USB座,兩顆按鍵,4顆紅、黃、綠、藍(lán)的LED指示燈以及CPU引腳接口。Pyboard內(nèi)置了小型內(nèi)部文件系統(tǒng),存儲在微控制器的閃存,路徑是/ fl ash。如果將SD卡插入卡槽,路徑是/sd。Pyboard需要選擇一個文件系統(tǒng)來引導(dǎo),優(yōu)先使用/sd,如果沒有SD卡,它會使用內(nèi)部文件系統(tǒng)/ fl ash作為引導(dǎo)文件系統(tǒng)。也可以根據(jù)需要在SD卡上創(chuàng)建空文件/lf ash/SKIPSD,Pyboard將會始終使用內(nèi)部文件系統(tǒng)啟動。Pyboard把STM32F405RGT6這顆芯片的所有外設(shè)功能全部引出。這些管腳既可以用作普通的GPIO口,又可以用于特殊功能的外設(shè),如 AD、DA、SPI、I2C、Timer、CAN、UART等。這些外設(shè)的功能全部在MicroPython固件中實(shí)現(xiàn)了,只需在Python代碼中調(diào)用即可。另外,板子上的RST按鍵用于復(fù)位,USR按鍵用于普通的輸入按鍵。RST、USR按鍵結(jié)合黃、綠LED指示燈,具有“標(biāo)準(zhǔn)啟動”“安全啟動”和“重置Flash文件系統(tǒng)”這3種啟動模式。當(dāng)Flash文件系統(tǒng)損壞而導(dǎo)致Pyboard不能正常運(yùn)行時(shí),可以使用“重置Flash文件系統(tǒng)”模式來修復(fù)。

        Pyboard板子上的USB具有3個作用。一是USB的5V電壓經(jīng)過LDO芯片,給整塊開發(fā)板供電;二是CPU內(nèi)置的、至多1MB的Flash中,劃出96KB空間虛擬成可移動的U盤;三是USB轉(zhuǎn)串口,用戶通過這個虛擬串口實(shí)現(xiàn)REPL(Read Eval Print Loop,交互式解釋器)功能。U盤中有4個文件,其中boot.py是開發(fā)板啟動時(shí)的執(zhí)行腳本,它設(shè)置了開發(fā)板的多個選項(xiàng)參數(shù);main.py包含了Python程序的主要腳本,在boot.py運(yùn)行后被執(zhí)行;README.txt包含開啟開發(fā)板的必要基礎(chǔ)信息;pycdc.inf是USB設(shè)備連接的Windows 配置文件。

        可以添加的設(shè)備包括GPRS、GPS、溫濕度傳感器、蜂鳴器、LCD、Camera等,充分利用Cortex-M4/M7處理器的所有外設(shè)功能,能夠完成常用的單片機(jī)實(shí)驗(yàn),如控制LED燈亮滅實(shí)驗(yàn)、PWM呼吸燈實(shí)驗(yàn)、流水燈實(shí)驗(yàn)、ADC實(shí)驗(yàn)、OLED液晶屏顯示實(shí)驗(yàn)、DHT11測試溫度實(shí)驗(yàn)等[11-12]。在此基礎(chǔ)上,結(jié)合WiFi、LAN等模塊,輕易地實(shí)現(xiàn)多對多的廣域的網(wǎng)絡(luò)通信[13]。

        通過內(nèi)嵌的USB轉(zhuǎn)虛擬串口,MicorPython板與電腦USB相連接,即可進(jìn)行REPL交互。REPL允許用戶和MicorPython的交互式連接,使用REPL是迄今為止來測試代碼和運(yùn)行命令的最簡單的方法。如果學(xué)生熟悉Python,非常容易上手。

        3.3 層次化實(shí)驗(yàn)內(nèi)容設(shè)計(jì)

        結(jié)合單片機(jī)相關(guān)課程的理論內(nèi)容,充分考慮嵌入式系統(tǒng)開發(fā)的特點(diǎn),配合不同層次實(shí)驗(yàn)教學(xué)的需要,以實(shí)踐為主導(dǎo)的立體化方式進(jìn)行單片機(jī)教學(xué),符合學(xué)生在學(xué)習(xí)過程中由淺入深、由易到難、由硬件到軟件、由基礎(chǔ)到綜合、由驗(yàn)證到創(chuàng)新的規(guī)律[10,14]。設(shè)計(jì)的實(shí)驗(yàn)項(xiàng)目既能用MicroPython快速編寫、調(diào)試程序,完成常規(guī)的單片機(jī)實(shí)驗(yàn),也能在WiFi、LAN、GPRS、Camera等模塊的支持下,完成基于物聯(lián)網(wǎng)思想的實(shí)驗(yàn)[15]。更重要的是,對于科研能力較強(qiáng)的學(xué)生,還可以用C語言編寫各種外設(shè)的固件,再結(jié)合C與Python的接口,把它集成到定制的開發(fā)板來。

        淺顯、易懂的實(shí)驗(yàn),以呼吸燈為例,Pyboard上的藍(lán)色LED 燈比較特別,在讓其亮滅的同時(shí)通過函數(shù)intensity()的方法控制其亮度,亮度值在0~255之間。代碼3.1實(shí)現(xiàn)了藍(lán)色LED循環(huán)漸亮然后熄滅的過程,實(shí)現(xiàn)了呼吸燈功能。對于其它的LED燈,調(diào)用toggle()函數(shù),配合delay(),實(shí)現(xiàn)LED燈的閃爍。

        Damien打造的MicroPython突破了Python操控底層的限制。如代碼3.2所示,第4、5行直接在訪問RTC外設(shè)的寄存器中去掉了寫保護(hù);第7行為Micropython修飾符,表明后續(xù)的第8~11行點(diǎn)亮LED燈的函數(shù)led_on()采用的是ARM匯編代碼,內(nèi)嵌匯編與匯編語言非常相似。MircoPython規(guī)定寄存器r0視為一個整數(shù),其數(shù)值在函數(shù)返回時(shí)供使用者調(diào)用,因?yàn)镻ython所有對象都是整數(shù)。

        上述幾個例子,均可以直接在REPL下輸入、調(diào)試和驗(yàn)證。雖然Python具有代碼簡潔、編程速度快等優(yōu)勢,但與C語言相比,其執(zhí)行的速度要慢很多(可能差100倍),在一些實(shí)時(shí)性要求很高的情況下,必須采用C語言來編寫。為此,必須修改MicroPython固件,添加相應(yīng)的功能,然后再在Python代碼中調(diào)用。因此,對具有一定創(chuàng)新和科研能力的學(xué)生,MicroPython不僅要求掌握Python語言,也需要很好地掌握CPU架構(gòu)和C語言。以一個協(xié)議解析為例說明調(diào)用接口。

        如代碼3.3所示,該協(xié)議函數(shù)添加在CPU的UART外設(shè)中。函數(shù)的入口參數(shù)為buf_in,一般以bytearray或者bytes的類型傳入。第4~7行,分析了傳入的類型以及數(shù)據(jù)長度;第9、10、16、17、27、28和30行表明了解析函數(shù)的返回為字典ret,該字典有兩個key,分別是“poor_signal”和“asic_eeg”;其中第17行指出“poor_signal”值為整數(shù)10;第12~14行為從傳入的buf_in中讀取數(shù)據(jù);第19~28行指出,“asic_eeg”返回的是長度為8的元組tuple,元組中的每個元素值為整數(shù),其值由傳入的buf_in給出;第32行表示analyse()函數(shù)有2個入口參數(shù);第36行表示在UART中添加了analyse()這個函數(shù)。第39~42行為在REPL中,從串口接收數(shù)據(jù),然后調(diào)用解析函數(shù)的過程。

        3.4 MicroPython實(shí)驗(yàn)教學(xué)的特色

        基于MicroPython的單片機(jī)實(shí)驗(yàn)教學(xué),使得單片機(jī)容易上手,學(xué)生通過MicroPython可以輕松實(shí)現(xiàn)對微控制器的控制,這能夠在一定程度上提高學(xué)生的興趣。最直觀來說,哪怕對于不懂C語言基礎(chǔ)的學(xué)生來說,簡單的控制也非常容易,只需要幾行MicroPython腳本語言,就能實(shí)現(xiàn)硬件底層的訪問和控制,如控制LED燈、LCD顯示器、讀取電壓、模擬鼠標(biāo)等操作,這就讓更多的計(jì)算機(jī)初學(xué)者也能來動手做硬件DIY,完全顛覆了對傳統(tǒng)單片機(jī)學(xué)習(xí)的認(rèn)知,整個實(shí)驗(yàn)的過程變得簡單明了。

        在實(shí)驗(yàn)教材的編寫方面,可以將實(shí)驗(yàn)內(nèi)容標(biāo)識為不同層次,加入可選步驟,便于區(qū)分選擇。學(xué)生可以根據(jù)自己相應(yīng)水平能力與興趣,按不同難度層次自主選擇單片機(jī)相關(guān)的實(shí)驗(yàn)項(xiàng)目,結(jié)合不同的外置傳感器和通信模塊來定制實(shí)驗(yàn)內(nèi)容,滿足各種學(xué)習(xí)需求,有助于培養(yǎng)本科生的研究、探索、實(shí)踐、創(chuàng)新能力。

        4 結(jié)語

        近年來,隨著計(jì)算機(jī)技術(shù)以及相關(guān)技術(shù)的高速發(fā)展,嵌入式技術(shù)在越來越多的領(lǐng)域發(fā)揮著重要的作用,國家、行業(yè)企業(yè)對嵌入式專業(yè)人才的需求也越來越迫切,而各個高校所開設(shè)的單片機(jī)以及嵌入式相關(guān)課程,無疑對人才的培養(yǎng)起到關(guān)鍵性的啟蒙作用。將MicroPython與單片機(jī)實(shí)驗(yàn)教學(xué)相結(jié)合,使學(xué)生能夠以一種新的模式學(xué)習(xí)嵌入式編程,更容易將所學(xué)的理論與實(shí)際相結(jié)合。這對于培養(yǎng)學(xué)生的動手實(shí)踐能力,提高對于新技術(shù)的動手開發(fā)能力具有重要意義。

        猜你喜歡
        開發(fā)板外設(shè)代碼
        創(chuàng)世代碼
        動漫星空(2018年11期)2018-10-26 02:24:02
        創(chuàng)世代碼
        動漫星空(2018年2期)2018-10-26 02:11:00
        創(chuàng)世代碼
        動漫星空(2018年9期)2018-10-26 01:16:48
        創(chuàng)世代碼
        動漫星空(2018年5期)2018-10-26 01:15:02
        Microchip最新推出兩款PIC32 Curiosity開發(fā)板
        淺析單片機(jī)開發(fā)板的設(shè)計(jì)與制作
        電子制作(2017年22期)2017-02-02 07:10:14
        Mouser為您呈上開發(fā)關(guān)鍵之STMicroelectronics Nucleo開發(fā)板
        Arduino和Atmel發(fā)布Arduino Zero開發(fā)板
        Microchip推出具備雙ADC外設(shè)的全新器件,擴(kuò)展其低成本8位PIC?單片機(jī)產(chǎn)品線
        貼身呵護(hù) 必不可少的PSP外設(shè)
        国产成人精品午夜二三区波多野| 激情综合欧美| 亚洲av色福利天堂| 国产成人九九精品二区三区| A亚洲VA欧美VA国产综合| 99熟妇人妻精品一区五一看片| 被灌醉的日本人妻中文字幕| 婷婷射精av这里只有精品| 日韩制服国产精品一区| 国产精品爆乳在线播放| 一区二区三区精品偷拍| 日本在线观看一二三区| 伊人久久大香线蕉午夜av | 精品一区二区三区久久久| 亚洲日本人妻中文字幕| 福利视频在线一区二区三区| 国产人妻鲁鲁一区二区| 大地资源网高清在线播放| 欧美国产一区二区三区激情无套| 无码少妇一级AV便在线观看| 看黄色亚洲看黄色亚洲 | 在线观看特色大片免费视频| 护士人妻hd中文字幕| 97视频在线播放| 久久精品国产白丝爆白浆| 国产一区二区三区日韩精品 | 免费人成视网站在线剧情| 欧美内射深喉中文字幕| 中年人妻丰满AV无码久久不卡| 亚洲精品av一区二区日韩| 精品国产亚洲级一区二区| 免费观看的av毛片的网站| 99亚洲精品久久久99| 亚洲男人堂色偷偷一区| 东京热加勒比国产精品| 天堂资源中文网| 亚洲国产精品综合久久网各 | 国产午夜免费一区二区三区视频| 久久久无码精品亚洲日韩按摩| 国产熟妇搡bbbb搡bb七区| 网友自拍人妻一区二区三区三州|