小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

推薦一篇軟件編程極佳的文章,值得讀一讀

 昵稱29273511 2015-12-11

本片文章親自操刀所寫,絕非網(wǎng)上粘貼復(fù)制輿論大眾,嘩眾取寵。以自己大學(xué)四年專業(yè)學(xué)習(xí)經(jīng)歷,和工作三年經(jīng)驗(yàn),有感而發(fā),目前不能自稱高手,只是小有所成,為那些在軟件編程道路上迷茫的大學(xué)生們和同行業(yè)者,寫一些個(gè)人感悟和想法,希望你們從中有所收獲,在軟件編程的道路上走的更高更遠(yuǎn),有所成就。

我的專業(yè)是測(cè)控技術(shù)與儀器,可能很多人想軟件編程應(yīng)該是計(jì)算機(jī)專業(yè)才學(xué)的,我們專業(yè)屬于跨學(xué)科專業(yè),介于計(jì)算機(jī),自動(dòng)化,機(jī)械相關(guān)性的綜合學(xué)科,最終的工作崗位是由自己選擇的。大學(xué)四年自己自學(xué)51單片機(jī),從最簡(jiǎn)單的LED流水燈學(xué)起,在軟件編程領(lǐng)域一直走了7年,工作后才發(fā)現(xiàn)自己大學(xué)四年的自學(xué)過(guò)程是,滿懷熱情,學(xué)習(xí)路線錯(cuò)誤。我這里所講的軟件編程主要集中是嵌入式領(lǐng)域基于各種微控制器編程。

那么如何寫好一段下位機(jī)代碼?如何駕馭上萬(wàn)行代碼進(jìn)行修改思路不會(huì)混亂?如何快速有效的進(jìn)行軟件問(wèn)題定位?如何與別人寫的代碼進(jìn)行可靠有效移植和應(yīng)用?等等相關(guān)性問(wèn)題,可能這些問(wèn)題你現(xiàn)在沒(méi)遇到,但是在工作中這些都是你必須面對(duì)和解決的問(wèn)題,否則你都不好意思在這個(gè)行業(yè)混了,因?yàn)樘肆恕?/p>

我所接觸過(guò)的MCU芯片有51單片機(jī),AVR系列,STM32系列,DSP28系列,ARM7,和ARM9。不要小看51單片機(jī),那是入門最好的芯片,把任何一款芯片的資源和運(yùn)行效率用到極致,你就是高手(高手名言)。工作中使用時(shí)間最長(zhǎng)的是STM32系列和DSP28系列,通過(guò)大量的控制器使用和對(duì)比,要明白選擇芯片的標(biāo)準(zhǔn)是最適合你項(xiàng)目需求的那一款,而不是最牛逼的那一個(gè)。

回答上面的問(wèn)題答案:1.寄存器 2.數(shù)據(jù)結(jié)構(gòu) 3.狀態(tài)流程 4.算法 5.模塊化的編程思想。看答案很簡(jiǎn)單,理解它并且努力的去做好它不容易。我們一個(gè)一個(gè)分析。

1.寄存器。我不想用百度百科和課本的標(biāo)準(zhǔn)答案告訴你是什么,因?yàn)槲艺f(shuō)了,你看了,還在云里霧里。打開任何一款控制器的芯片手冊(cè),你所看到的基本都是對(duì)寄存器的詳細(xì)描述,想要深刻的理解一款芯片怎么使用,必須熟悉它的所有寄存器。當(dāng)你用到它的某個(gè)外設(shè),就去研究它的相關(guān)外設(shè)寄存器。不需要你去背下來(lái),應(yīng)為你背不下。工作中還需要一個(gè)能力,快速學(xué)習(xí),消化理解,加以運(yùn)用。寫到這,總結(jié)就一句話,你是否深刻的理解你現(xiàn)在所使用芯片的相關(guān)外設(shè)寄存器,如果還不夠,這是你要做的第一件事情。

2.數(shù)據(jù)結(jié)構(gòu)。對(duì)于測(cè)控專業(yè)來(lái)講,這是硬傷。應(yīng)為沒(méi)有這門課,我沒(méi)有上過(guò),不知道現(xiàn)在的學(xué)弟學(xué)妹有沒(méi)有這門課,沒(méi)有的話請(qǐng)自學(xué)數(shù)據(jù)結(jié)構(gòu)和軟件工程兩門課,因?yàn)閷?duì)于寫軟件來(lái)講很有用。舉個(gè)例子我們看一下對(duì)于串口通信模塊的數(shù)據(jù)結(jié)構(gòu)定義。

CommCtrl.h(頭文件相關(guān)代碼)


CommCtrl.C(C文件相關(guān)代碼)


這里的內(nèi)容包含有數(shù)據(jù)結(jié)構(gòu)定義,初始化賦值,結(jié)構(gòu)體聲明。結(jié)構(gòu)體定義的變量都是在通信協(xié)議解析過(guò)程中會(huì)用到的變量。Start表示一包數(shù)據(jù)的包頭,End表示一包數(shù)據(jù)的包尾。還有包的數(shù)據(jù)長(zhǎng)度,功能碼,檢索碼,數(shù)據(jù)位(最大12個(gè)16Bit數(shù)據(jù)),標(biāo)志位內(nèi)容。我們看通過(guò)這樣的一個(gè)結(jié)構(gòu)體定義,可以把串口通信協(xié)議所有內(nèi)容包含在內(nèi),我們可以根據(jù)自己的要求定義你所需要的模式。如果我們的操作對(duì)象是電機(jī)模塊,可以把電機(jī)的狀態(tài),速度,方向,當(dāng)前位置,加速度等參數(shù)以結(jié)構(gòu)體的形式進(jìn)行定義。這樣的一種定義方式可以使我們思路清晰,操作對(duì)象明確,具有面向?qū)ο蟮木幊趟枷?,和模塊化編程的設(shè)計(jì)理念。

3.狀態(tài)流程。所謂的狀態(tài)流程,就是要在自己的腦子里構(gòu)建出你所要寫的項(xiàng)目代碼的狀態(tài)流程圖。我們一點(diǎn)一點(diǎn)的來(lái),比如說(shuō)你要點(diǎn)一個(gè)LED,你要想的是第一:系統(tǒng)初始化(系統(tǒng)時(shí)鐘,相關(guān)外設(shè),相關(guān)變量),LED的初始化狀態(tài),第二:LED亮滅方式,2種狀態(tài)在時(shí)間上的切換,狀態(tài)標(biāo)志位的賦值切換。這是一個(gè)簡(jiǎn)單的分析。如果復(fù)雜的項(xiàng)目,比如有電機(jī)運(yùn)動(dòng)模塊,串口通信模塊,數(shù)據(jù)采集模塊,存儲(chǔ)芯片數(shù)據(jù)存儲(chǔ),蜂鳴器,LED,等等10到20個(gè)外設(shè)的操作時(shí)。如何在頭腦清醒的規(guī)劃出幾百個(gè)狀態(tài)之間的切換,尤其對(duì)于比較大的項(xiàng)目,解決方法是在你的每一個(gè)外設(shè)的結(jié)構(gòu)體模塊定義時(shí)加入Status變量,通過(guò)對(duì)Status變量賦值,進(jìn)行任務(wù)切換。

4.算法。算法是程序中進(jìn)行數(shù)據(jù)處理必不可少的東西,常見的算法有數(shù)字濾波算法,二分法查表,排序算法等。最常見的數(shù)字濾波算法大量的運(yùn)用于數(shù)據(jù)采集,數(shù)據(jù)處理的設(shè)備當(dāng)中。因?yàn)閺腁DC芯片采集到的原始AD值,可能有跳變值,數(shù)據(jù)波動(dòng)幅度較大,在硬件不能優(yōu)化的情況下就要考慮軟件濾波算法,在有些項(xiàng)目中最核心的東西就是算法,建議多去積累學(xué)習(xí)有用的算法程序。

5.模塊化的編程思想,面向?qū)ο蟮脑O(shè)計(jì)理念。任何一個(gè)新生事物的學(xué)習(xí)必須要有一套正確方法和思想,在錯(cuò)誤方向上努力再多也沒(méi)有用。計(jì)算機(jī)學(xué)院有一門課,面向?qū)ο蟮某绦蛟O(shè)計(jì),希望各位看客有時(shí)間了可以學(xué)習(xí)看看,理解其中的編程思想。如何駕馭上萬(wàn)行的代碼,必須要有模塊化的思想,比如電機(jī)就是一個(gè)對(duì)象,它的屬性啟動(dòng)/停止?fàn)顟B(tài),速度,方向,加速度,位置等參數(shù);比如對(duì)控溫模塊,它的屬性升溫/降溫狀態(tài),升降溫速率,PID等參數(shù)。對(duì)于不同的模塊單獨(dú)進(jìn)行數(shù)據(jù)結(jié)構(gòu)定義劃分。這樣的處理可以使程序員在編寫程序的任何時(shí)候都保持思路清晰,按照設(shè)計(jì)要求和時(shí)間進(jìn)度要求完成任務(wù)。

廢話就寫到這里,任何一門專業(yè)學(xué)科的學(xué)習(xí)有其一定的方法,這是我工作三年來(lái)的深刻體會(huì)。希望各位看客從文章中有所體悟和獲得,也不枉我大清早起來(lái)花時(shí)間和精力寫這篇文章,經(jīng)驗(yàn)的總結(jié)可能寥寥幾筆,更多的是花時(shí)間和精力在正確的道路上不斷的去練習(xí)和自我總結(jié),OK完畢。

來(lái)源與網(wǎng)絡(luò)!

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多