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

        ?

        嵌入式程序設(shè)計(jì)教學(xué)及技能競賽的探索

        2022-08-12 03:30:42陳梅芬吳佳駿王漢章
        山西電子技術(shù) 2022年4期
        關(guān)鍵詞:按鍵程序設(shè)計(jì)鍵盤

        陳梅芬,吳佳駿,王漢章

        (廈門海洋職業(yè)技術(shù)學(xué)院,福建 廈門 361100)

        0 引言

        近年來,隨著信息技術(shù)的發(fā)展,特別是物聯(lián)網(wǎng)及人工智能技術(shù)的發(fā)展,對嵌入式從業(yè)人員的需求與日俱增。許多本科院校及職業(yè)院校都有開設(shè)《嵌入式程序設(shè)計(jì)》或相關(guān)課程[1]?!肚度胧匠绦蛟O(shè)計(jì)》是一門綜合性較強(qiáng)的課程,既需要硬件基礎(chǔ)知識,也需要軟件基礎(chǔ)知識。隨著嵌入式技術(shù)的快速發(fā)展,高職的《嵌入式程序設(shè)計(jì)》的教學(xué)也顯現(xiàn)出一些問題,特別是如何使得培養(yǎng)出來的學(xué)生更容易滿足嵌入式行業(yè)的需求,本文以矩陣鍵盤項(xiàng)目為例,說明了項(xiàng)目式教學(xué)法在課程中的運(yùn)用。

        1 嵌入式程序設(shè)計(jì)的教學(xué)現(xiàn)狀

        1.1 課程涉及知識面廣

        在高職院校中,《嵌入式程序設(shè)計(jì)》一般是安排在大二階段進(jìn)行學(xué)習(xí),它的先修課程一般有《模擬電路》、《數(shù)字電路》、《單片機(jī)程序設(shè)計(jì)》或《C語言程序設(shè)計(jì)》,需要學(xué)生掌握的知識儲備較多,很多學(xué)生在先前課程的學(xué)習(xí)中并不都能很好地掌握這些先修課程,造成學(xué)生在學(xué)習(xí)《嵌入式程序設(shè)計(jì)》課程時有畏難情緒[2]。

        1.2 所學(xué)知識與業(yè)界所需技能沒有緊密相連

        嵌入式的技術(shù)發(fā)展很快,有時候就會出現(xiàn)學(xué)校課堂上講的知識點(diǎn)跟不上業(yè)界技術(shù)的發(fā)展。這就要求我們在使用項(xiàng)目教學(xué)法的時候,要盡量的從企業(yè)實(shí)際應(yīng)用的案例中提取有效的項(xiàng)目,并與嵌入式相關(guān)的知識點(diǎn)較好地融合。

        1.3 學(xué)生編寫程序時碰到問題不知如何解決

        可以將《嵌入式程序設(shè)計(jì)》的教學(xué)過程分為三個階段,基礎(chǔ)教學(xué)、進(jìn)階教學(xué)和綜合教學(xué)[3]。從幾年的教學(xué)經(jīng)驗(yàn)來看,學(xué)生經(jīng)常會在進(jìn)階教學(xué)的階段碰到困難,最大的困難是代碼已按照自己的思路寫出來了,在Keil軟件也編譯通過,但HEX文件下載到開發(fā)板后就是工作不正常,此時卻找不到好的方法來解決問題,也不知道程序運(yùn)行到哪里了。

        2 矩陣鍵盤項(xiàng)目的實(shí)現(xiàn)

        鍵盤應(yīng)用是人機(jī)交互中最常用的方法之一,也是構(gòu)造各種實(shí)際的嵌入式應(yīng)用系統(tǒng)的基本元素。矩陣式鍵盤的接口是由行線與列線組成,按鍵位于行、列的交叉線上,這種方法的優(yōu)點(diǎn)相比較獨(dú)立鍵盤,可以節(jié)約IO資源,相對于專用芯片式鍵盤,可以節(jié)約成本,因而其在各種嵌入式系統(tǒng)中得到了廣泛的應(yīng)用[4-5]。矩陣鍵盤項(xiàng)目是《嵌入式程序設(shè)計(jì)》課程進(jìn)階教學(xué)中碰到的第一個較難的項(xiàng)目,順利地解決這個項(xiàng)目,對學(xué)生繼續(xù)學(xué)習(xí)本門課程也會有很大的幫助。

        2.1 項(xiàng)目實(shí)現(xiàn)流程

        在業(yè)界,一個嵌入式系統(tǒng)的項(xiàng)目通常是由一個團(tuán)隊(duì)來完成的,通常按照圖1的流程來實(shí)現(xiàn)。在啟動一個嵌入式系統(tǒng)的項(xiàng)目后,先是要對項(xiàng)目的需求進(jìn)行分析,輸出系統(tǒng)的設(shè)計(jì)目標(biāo)文檔,接著要對設(shè)計(jì)目標(biāo)文檔進(jìn)行評審,評審?fù)ㄟ^后,團(tuán)隊(duì)成員分工合作,輸出軟硬件設(shè)計(jì)方案文檔,軟硬件設(shè)計(jì)方案文檔評審?fù)ㄟ^后,就可以開始具體的硬件實(shí)現(xiàn)與軟件設(shè)計(jì),最后是系統(tǒng)驗(yàn)證及驗(yàn)證覆蓋率的分析。

        圖1 嵌入式系統(tǒng)的項(xiàng)目實(shí)現(xiàn)流程

        由于在課程教學(xué)過程中,課程的學(xué)時有限以及學(xué)生專業(yè)知識水平與企業(yè)工程師專業(yè)知識水平的差距,我們通常會將企業(yè)項(xiàng)目實(shí)現(xiàn)流程進(jìn)行簡化,以適應(yīng)教學(xué)需求。在教學(xué)過程中,項(xiàng)目的設(shè)計(jì)目標(biāo)通常是已經(jīng)確定好了,項(xiàng)目中所用的硬件電路也通常用的是開發(fā)板的既定的電路,所以在教學(xué)過程中的項(xiàng)目實(shí)現(xiàn)流程中,前兩步對設(shè)計(jì)的要求會少一些,更多的是去理解它們。在軟件設(shè)計(jì)知識儲備階段中,老師須幫助學(xué)生建立實(shí)現(xiàn)項(xiàng)目所需的一些知識儲備,如在矩陣鍵盤項(xiàng)目中,在這一階段,學(xué)生要懂得矩陣鍵盤實(shí)現(xiàn)的一些基本方法,循環(huán)掃描法與行列反轉(zhuǎn)法。軟件設(shè)計(jì)完以后,學(xué)生需要對運(yùn)行結(jié)果進(jìn)行分析,判斷所設(shè)計(jì)系統(tǒng)是否滿足設(shè)計(jì)目標(biāo)。如圖2所示,為教學(xué)過程中的項(xiàng)目實(shí)現(xiàn)流程。

        圖2 教學(xué)過程中的項(xiàng)目實(shí)現(xiàn)流程

        此次矩陣按鍵項(xiàng)目的系統(tǒng)設(shè)計(jì)目標(biāo)為實(shí)現(xiàn)5×5按鍵的掃描,將對應(yīng)的按鍵值打印到串口上。

        2.2 硬件電路理解

        矩陣鍵盤項(xiàng)目用的主控CPU為STM32F103VE,STM32F103VE帶有Cortex-M3內(nèi)核,共有5組16位的GPIO接口,5組USART接口。矩陣鍵盤的電路如圖3所示,當(dāng)有按鍵按下,相應(yīng)的行線與列線就會連接,如當(dāng)S101鍵按下時,K_PA0與K_COLOUT4就會相連接。此次項(xiàng)目使用到了STM32F103VE的USART1,對應(yīng)的IO口為PA9/USART1_TX和PA10/USART1_RX。

        圖3 矩陣鍵盤電路

        2.3 軟件設(shè)計(jì)

        矩陣式鍵盤根據(jù)不同的軟件掃描方式,通常可分為循環(huán)掃描法與行列反轉(zhuǎn)法。循環(huán)掃描法的原理是讓CPU不停地去掃描鍵盤的行線與列線,如可讓列線固定為輸出端口,行線固定為輸入端口,同一個時刻列線的輸出中只有一根線的輸出為低電平,當(dāng)行線有采集在低電平時,就說明有按鍵按下,此種方法,結(jié)構(gòu)簡單,行線與列線的輸入輸出模式固定,但掃描耗費(fèi)的時間較長[6]。行列反轉(zhuǎn)法是通過行線與列線的互換來確定按鍵,行線與列線的輸入輸出模式需要變化,但其檢測速度較快,因而得到了廣泛的應(yīng)用。

        如圖4所示,為行列反轉(zhuǎn)法按鍵檢測流程,先是設(shè)置列端口為輸出,數(shù)值為0,行端口為帶上拉的輸入;讀取行端口的數(shù)值存儲在row_data中;接著設(shè)置行端口為輸出,數(shù)值為0,列端口為帶上拉的輸入;讀取列端口的數(shù)值存儲在col_data中;根據(jù)row_data與col_data就可以判斷出按鍵的數(shù)值。

        圖4 行列反轉(zhuǎn)法按鍵檢測流程

        多數(shù)按鍵采用的是機(jī)械式的彈性開關(guān),機(jī)械式的開關(guān)經(jīng)常會引入抖動,抖動過程的長短是由按鍵的機(jī)械特性決定,一般是10~20 ms,我們可以采用多次采樣的方法來實(shí)現(xiàn)軟件去抖。隔一定的時間去采一次按鍵的檢測數(shù)值,程序里面會存儲三個采樣的數(shù)值,key(當(dāng)前按鍵的數(shù)值),key_history1(上一次按鍵檢測的數(shù)值),key_history2(上上次按鍵檢測的數(shù)值),當(dāng)我們檢測到(key!=0)&&(key_history1==key)&&(key_history2==0)的條件為真的時候,就可以判斷此時按鍵按下,這里的按鍵采樣間隔時間可以根據(jù)需要采用定時器或者主函數(shù)的循環(huán)來實(shí)現(xiàn)。

        在1.3小節(jié)里講到學(xué)生在編寫程序的時候碰到問題不知如何解決,在教學(xué)的過程中,筆者發(fā)現(xiàn)串口是嵌入式系統(tǒng)中非常重要的一個調(diào)試工具,學(xué)生在課程學(xué)習(xí)的進(jìn)階階段的初期,就應(yīng)該把串口架設(shè)起來,架設(shè)起來后,就可以將相應(yīng)的調(diào)試信息用printf打印到串口上了,可以解決不知道程序運(yùn)行到哪里的問題。

        在USART1的驅(qū)動代碼中加入如下的代碼,就可以使用printf函數(shù),將相應(yīng)的調(diào)試信息打印在USART1上。

        //加入以下代碼,支持printf函數(shù),而不需要選擇use MicroLIB

        #if 1

        #pragma import(__use_no_semihosting)

        //標(biāo)準(zhǔn)庫需要的支持函數(shù)

        struct __FILE

        {

        int handle;

        };

        FILE __stdout;

        //定義sys_exit()以避免使用半主機(jī)模式

        void _sys_exit(int x)

        {

        x=x;

        }

        //重定義fputc函數(shù)

        int fputc(int ch,FILE *f)

        {

        while((USART1->SR&0X40)==0);//循環(huán)發(fā)送,直到發(fā)送完畢

        USART1->DR=(u8) ch;

        return ch;

        }

        #endif

        2.4 運(yùn)行結(jié)果

        如圖5所示,為矩陣鍵盤項(xiàng)目的運(yùn)行結(jié)果,當(dāng)有一個按鍵按下時,CPU會檢測到相應(yīng)的鍵值,并將鍵值打印到串口上,相應(yīng)的程序調(diào)試信息也可以打印到串口上。

        圖5 矩陣鍵盤項(xiàng)目運(yùn)行結(jié)果

        3 項(xiàng)目教學(xué)法在技能競賽訓(xùn)練中的應(yīng)用

        在多項(xiàng)職業(yè)院校技能大賽中,都有嵌入式程序設(shè)計(jì)相關(guān)技能的考核要求,如嵌入式技術(shù)應(yīng)用開發(fā)賽項(xiàng)、電子產(chǎn)品設(shè)計(jì)及制作賽項(xiàng)、集成電路開發(fā)及應(yīng)用賽項(xiàng)等。對于參加技能競賽訓(xùn)練的學(xué)生,對他們的要求會比普通學(xué)生的要求高一些,在對他們進(jìn)行項(xiàng)目教學(xué)時,除了按照圖2的流程進(jìn)行訓(xùn)練外,還需要增加一項(xiàng)代碼風(fēng)格檢查,如圖6所示。當(dāng)代碼風(fēng)格檢查不通過時,須返工,經(jīng)過幾次的迭代,學(xué)生的嵌入式系統(tǒng)編程能力就可以得到明顯的提高。

        圖6 競賽訓(xùn)練中項(xiàng)目實(shí)現(xiàn)流程

        代碼風(fēng)格檢查過程的關(guān)鍵是規(guī)則的設(shè)定,嵌入式程序的代碼風(fēng)格規(guī)則的范圍很廣,不同的企業(yè)可能也會有不同的要求,這里以高職學(xué)生在進(jìn)入技能競賽訓(xùn)練前期經(jīng)常出現(xiàn)的一些代碼風(fēng)格問題進(jìn)行總結(jié),如下:

        1) 變量的命名需取有意義的名字,可以采用駝峰命名法或者下劃線命名法。

        2) 中斷函數(shù)里面不允許做太多復(fù)雜的操作,不允許出現(xiàn)大段的延時。

        3) 在main函數(shù)中盡量少用大段的延時。

        4) 在寫某個硬件模塊驅(qū)動的時候,要考慮到使用者的易用性,要做好驅(qū)動使用者與硬件溝通的橋梁。在工程文件里,一般一個.c文件應(yīng)對應(yīng)一個.h文件。

        5) 一般是系統(tǒng)中所有的硬件全部初始化完了,才將總中斷打開(特殊的應(yīng)用不一定要遵守這條規(guī)則)。

        6) 復(fù)雜的邏輯,建議用狀態(tài)機(jī)來控制,這樣不容易出錯。

        4 結(jié)語

        通過學(xué)生們提交的課程總結(jié)報(bào)告中,可以發(fā)現(xiàn)將項(xiàng)目式的教學(xué)法運(yùn)用到課程中,提高了學(xué)生們對這門課的興趣,幫助學(xué)生們解決在課程中碰到的困難,學(xué)生們在項(xiàng)目的實(shí)現(xiàn)過程中獲得了成就感。將改進(jìn)后的項(xiàng)目教學(xué)法應(yīng)用于技能競賽訓(xùn)練中,可以明顯地提高學(xué)生的專業(yè)技能能力。筆者將改進(jìn)后的項(xiàng)目教學(xué)法應(yīng)用于學(xué)生電子產(chǎn)品設(shè)計(jì)及制作賽項(xiàng)、集成電路開發(fā)及應(yīng)用賽項(xiàng)的訓(xùn)練中,學(xué)生獲得了2021年全國職業(yè)院校技能大賽集成電路開發(fā)及應(yīng)用賽項(xiàng)一等獎,2022年福建省職業(yè)院校技能大賽電子產(chǎn)品設(shè)計(jì)及制作賽項(xiàng)一等獎。

        猜你喜歡
        按鍵程序設(shè)計(jì)鍵盤
        你知道手機(jī)撥號鍵盤上為什么要有*和#嗎?
        鍵盤貓
        基于有限狀態(tài)機(jī)的按鍵檢測程序設(shè)計(jì)
        電子制作(2021年3期)2021-06-16 03:14:26
        基于Visual Studio Code的C語言程序設(shè)計(jì)實(shí)踐教學(xué)探索
        Cлово месяца
        中國(俄文)(2019年6期)2019-11-22 14:41:58
        ikbc R300機(jī)械鍵盤
        從細(xì)節(jié)入手,談PLC程序設(shè)計(jì)技巧
        電子制作(2019年9期)2019-05-30 09:42:04
        高職高專院校C語言程序設(shè)計(jì)教學(xué)改革探索
        一種多方向?qū)Ч獍存I結(jié)構(gòu)設(shè)計(jì)
        電子制作(2016年1期)2016-11-07 08:43:05
        PLC梯形圖程序設(shè)計(jì)技巧及應(yīng)用
        久久精品无码av| 扒开女性毛茸茸的视频| av天堂最新在线播放| 最近中文字幕免费完整版| 亚洲国产理论片在线播放| 激情亚洲的在线观看| 水蜜桃亚洲一二三四在线| 国产午夜精品一区二区三区不| 国产亚洲成年网址在线观看| 色视频不卡一区二区三区| 一本一道vs无码中文字幕| 男女肉粗暴进来120秒动态图| 夜夜综合网| 国产一区二区毛片视频| 日韩在线一区二区三区中文字幕| 日本熟妇美熟bbw| 性色av无码久久一区二区三区| 无码精品一区二区免费AV| 国产av精品久久一区二区| 国产精品亚洲一区二区三区| 少妇特黄a一区二区三区| 久久久亚洲精品午夜福利| 久久这黄色精品免费久| 黑人巨大精品欧美| 毛茸茸的中国女bbw| 国产人妖xxxx做受视频| 亚洲女人的天堂网av| 脱了老师内裤猛烈进入| 欧美v亚洲v日韩v最新在线| 精品无码AV无码免费专区| 日本一区二区啪啪视频| 亚洲精品乱码久久久久蜜桃| 久久亚洲精品无码va大香大香 | 亚洲av一二三又爽又爽又色| 又黄又刺激的网站久久| 18成人片黄网站www| 人妻少妇看A偷人无码电影| 亚洲视频免费在线观看| 天天天天躁天天爱天天碰2018| 国产av日韩a∨亚洲av电影| 国产一起色一起爱|