C語言、 51單片機(jī)、STM32等學(xué)習(xí)階段總結(jié)
學(xué)習(xí)階段總結(jié)
? ? ? 這幾天思考了很多東西,感覺很有必要總結(jié)一下學(xué)習(xí)的東西了。從起初進(jìn)步大學(xué)到步入社會已經(jīng)一年有余,在大學(xué)感覺學(xué)也學(xué)了,玩了玩了。所以不存在什么很大的遺憾。之前零零散散的也學(xué)了不少東西了,感覺有必要對自己做一個總結(jié)了。
? ? ? C語言:從大一下學(xué)期就開始學(xué)習(xí)C語言,只不過上課的時候基本上都不能專心上課。對于C語言的學(xué)習(xí)主要還是在課下的時候看書看視頻自學(xué)的,郝斌老師的C語言視頻算是指導(dǎo)我入門的視頻,那時候看視頻還是很有激情的。譚浩強(qiáng)的《C語言程序設(shè)計》算是一本基礎(chǔ)的語法教材,看過也了解了基礎(chǔ)的東西(包括標(biāo)識符、各種表達(dá)式、數(shù)組、函數(shù)、指針、文件等);后來看了《c語言深度剖析》這本書將的真的是比較好,含金量是真的高;再后來又看了《C和指針》《C陷阱》《C專家》。強(qiáng)烈推薦多看幾遍C語言深度剖析,是真的寫得好。推薦練手項目:《電子詞典》《萬年歷》《xx管理系統(tǒng)》等
? ? 51單片機(jī):說到51單片機(jī),這也算是我學(xué)習(xí)C語言的一個動力;不會C語言簡直都不能玩單片機(jī),雖然匯編也可以寫,但是C語言的移植性好,所以為了學(xué)習(xí)單片機(jī)惡補(bǔ)過C語言?!妒职咽纸棠銓W(xué)單片機(jī)》小宋老師講的單片機(jī)是很有趣味的,代碼寫的也很有條理;也有很多是看郭天祥的書和視頻入門的。不過我個人還是推薦小宋老師的《手把手教你學(xué)單片機(jī)》。也買過開發(fā)板,學(xué)習(xí)(視頻,書),敲過代碼,那時候覺得51單片機(jī)好強(qiáng)大。推薦練手項目:《數(shù)字鐘》等。
? ? ? STM32:51學(xué)了之后深深感覺到控制器的有趣,一個單片機(jī)隨便加點(diǎn)外設(shè),就有不錯的功能。當(dāng)時是野火的《STM32庫開發(fā)指南》帶我入門STM32,詳細(xì)講了很多基礎(chǔ)的東西,對初學(xué)者絕對的好書。GPIO/Timer/UART/I2C/SPI/SD/TFT/NRF/UCOS等,講的比較詳細(xì)。大三上學(xué)期算是把這個學(xué)了一遍,但是使用起來還是很吃力。不過寫程序的功力不是一天兩天就能練好的,會了基礎(chǔ)的操作為后面的學(xué)習(xí)可以打下很好的基礎(chǔ)。學(xué)習(xí)了近半年,算是比較熟悉了,精通算不上,但是庫文件都看過。例程大部分都看過。STM32做信息采集這塊比較強(qiáng)大,溫度濕度光照強(qiáng)大等,配合各種傳感器。推薦練手項目:《倉儲管理系統(tǒng)》客戶端【采集一些基礎(chǔ)信息通過NRF或者CAN傳到服務(wù)器】
? ? Linux基礎(chǔ):大三下學(xué)期的時候,偶然一次聽到了嵌入式這個詞,確實以前沒有聽過。后來自己查了許多資料,知道了學(xué)習(xí)嵌入式還有很多需要學(xué)習(xí)的東西,從而走向了Linux的道路。想當(dāng)初第一次裝虛擬機(jī),第一次裝ubuntu,第一次裝cygwin......那時候是真的高興,體會到學(xué)習(xí)是很有趣的事情。感受到了shell的強(qiáng)大?!而B個私房菜》這本書我只是看了命令的大部分,還有很多目前不能用的我都沒有看。
? ? 數(shù)據(jù)結(jié)構(gòu):想到這個就頭疼,一早就知道要活用數(shù)據(jù)結(jié)構(gòu)不是個容易的事情。還是硬著頭皮學(xué)下去,畢竟寫出高質(zhì)量的代碼是離不開數(shù)據(jù)結(jié)構(gòu)的。黃國瑜的《數(shù)據(jù)結(jié)構(gòu)》是我的指導(dǎo)書,雖然里面大部分代碼都是有問題的,但是我看中的是這本書的分析部分,著實精彩。學(xué)了鏈表、堆棧、隊列和各種排序。太過高深的樹和圖之類的目前還沒有研究。再多說一句:鏈表、隊列、快讀排序這幾個是比較重要的,但是hash表也是很重要的,最好這幾個著重學(xué)一下。
? ? ? Linux C高級編程:學(xué)了linux基礎(chǔ)和windows下的C語言,后來想Linux下應(yīng)該也是可以學(xué)習(xí)C語言的。后來買了《Linux高級程序設(shè)計》第三版的黃皮書和《Linux C一站式編程》。學(xué)習(xí)了GCC,GDB,Makefile、文件操作、進(jìn)程管理及通信,線程管理和通信、網(wǎng)絡(luò)編程等。推薦練手項目:《web服務(wù)器》《Linux C局域網(wǎng)聊天室》等。
? ? ARM:最初接觸ARM是了解完了STM32之后,聽說ARM要運(yùn)行Linux系統(tǒng),因此才學(xué)的Linux。買的是天嵌的開發(fā)板,那時候的資料是真的少,各種淘寶視頻都是幾百上千的,想想作為學(xué)生的自己,沒錢的孩子就應(yīng)該努力奮斗??戳嗽S多的免費(fèi)視頻,韋東山的,國嵌的,等各種視頻資料,學(xué)習(xí)了uboot,內(nèi)核、文件系統(tǒng)和驅(qū)動的一些皮毛。不過學(xué)習(xí)這個事情就是日積月累的。沒有學(xué)不好的技術(shù),只有不努力的人。幾年之后你也可以成為研發(fā)的主力軍。Linux做服務(wù)器的比較多,一個服務(wù)器對應(yīng)多個小的客戶端。推薦練手:《相冊》--這需要QT的知識(個人覺得學(xué)習(xí)C++和QT是有好處的)。