国产电影一区二区三区,,欧美大片免费观看,伊人久久大香线蕉av,国产日韩成人内射视频

  • 回復
  • 收藏
  • 點贊
  • 分享
  • 發新帖

對51轉到ARM的新人的一些建議

我以前一直用的是51,不過一直是C51,對C已經有10多年的經驗,匯編用的很少。后來因為項目需要轉到了arm.一開始對arm什么都不懂,看了本《arm體系結構與編程》也是云里霧里的。但是也許是因為無知者無畏吧,我直接就在mdk中建立一個工程,添加了自帶的啟動文件,然后做了個main函數,里面一個死循環沒有操作任何硬件,居然跑起來了。然后以此為基礎,慢慢的開始控制GPIO和串口通信,當時突然發現,我的項目不就是搞搞這些嗎?其他的什么運行模式、什么鏈接寄存器、什么PC寄存器關我鳥事,我只要能控制外設就行了。至于它是怎么實現的,那是編譯器和鏈接器的事情。

    現在回頭想想開發arm還是很簡單的,特別是使用mdk的話,會c也就能做一些簡單的開發了。不要被那些稀奇古怪的東西給搞糊涂了。邊開發邊學習,項目做深了,那些東西自然就懂了。我們公司來了新人,我一般就叫他做個簡單的東西,比如按鍵、串口等,做完也就差不多會了。

    羅嗦這么久說幾點建議吧:

    1.arm的匯編沒必要去精通的,能夠大概看懂就行了。我一般在調試的時候才需要看看。如果一個速度要求苛刻到需要你使用匯編的話,我認為可能你更需要的是轉變思路,修改算法。比如使用查表代替計算等。我做了5年arm開發,完成了n個項目,至今沒寫過一句匯編。

    2.工業控制方面因為有實時性和成本要求,我一般不使用操作系統,但我會自己實現一些內存管理,事件管理,郵箱之類的東西。這些需要時間積累,平時寫程序注意盡量通用化,然后建立自己的庫,以后再用就爽了。以前使用過一些操作系統,發現并沒有提高我的開發速度,而且還造成了調試困難的問題,出了bug找都沒法找。

    3.對于公司來說,如果項目很大需要用到操作系統、網絡、gui、文件系統等,自己做還不如直接買個板子,人家都已經做好了,而且bug很少,自己只要做應用就行了。量大的話還可以定制,算上開發成本,可能更便宜。如果你是個人興趣,那當我沒說。

    4.現在對于外設一般都有現成的庫,我建議能不用還是不要用吧。因為想要用好這些庫,你必須對外設寄存器比較熟悉才行,這時候你自己寫一個就行了,而且簡單的一個寄存器賦值,函數庫往往需要調用一個函數來實現,太奢侈了。但是對于運算庫還是要用的,比如DSP庫等,畢竟人家寫的肯定效率要高點。

    5.用好中斷,這對51和arm是一樣的。能用中斷的地方絕對不用輪詢,中斷是單片機的靈魂,你的所有程序都應該圍繞中斷展開。

    6.學好C語言,注意形成自己的編程風格,起好函數名和變量名,多寫注釋。不要怕麻煩,這些很重要,我一直認為最好的程序風格是使人不需要看注釋就能立刻理解程序的意思也就是:程序即注釋。我有時候會寫出a=b-2-1之類的東西,不要認為這很傻,其實是因為2和1分別代表了兩個東西,你直接寫成3就給理解增加了難度,而且這也不會降低效率,編譯器會把它翻譯成a=b-3的。

    7.對于C語言多羅嗦一句,用好指針,如果說中斷是單片機的靈魂,那么指針就是C的靈魂。

    總之一句話,做arm和做51差不多,關鍵還是各種外設的寄存器操作。

全部回復(20)
正序查看
倒序查看
971631040
LV.3
2
2013-09-29 16:48
mark
0
回復
dulai1985
LV.10
3
2013-09-30 13:59
@971631040
mark
LZ,看到你寫的,現在才開始在學STM32~~對于ARM剛入門~~以后多提點~~
0
回復
2013-10-03 15:55

你好,請問如何動態改變CM3中斷的時間,比如用IO按鍵做中斷時間的加減。用51只要刷新定時器的高8位和低8位就可以了,但是CM3的定時器好像不好改。或者是我的方法不對。

0
回復
2013-11-05 23:54

說點不同意見吧

 2、用操作系統對于arm類的處理器來說盡量用,大幅度的簡化程序邏輯,加快開發進度,占用資源微乎其微的。

 5、除了中斷,arm大多數有dma,這個對于處理速度幫助很大,還有就是arm相比于51的片內硬件多了太多,選擇合適的片內外設可以極大的提高效率的。

 7、能不用指針盡可能不用指針,風險偏大,差錯困難,但是必須要用的時候也別客氣。不要用遞歸或其他不確定執行時間的編程實現,控制風險是嵌入式開發的核心。

 用arm開發絕大多數比用51更便利,用牛刀殺雞肯定更簡單。太多的時候開發的時間成本遠遠比芯片差價大,用資源豐富的芯片提高開發速度是劃算的選擇。

0
回復
wddzzj
LV.2
6
2014-03-14 16:49
@wangshujun
說點不同意見吧2、用操作系統對于arm類的處理器來說盡量用,大幅度的簡化程序邏輯,加快開發進度,占用資源微乎其微的。5、除了中斷,arm大多數有dma,這個對于處理速度幫助很大,還有就是arm相比于51的片內硬件多了太多,選擇合適的片內外設可以極大的提高效率的。7、能不用指針盡可能不用指針,風險偏大,差錯困難,但是必須要用的時候也別客氣。不要用遞歸或其他不確定執行時間的編程實現,控制風險是嵌入式開發的核心。用arm開發絕大多數比用51更便利,用牛刀殺雞肯定更簡單。太多的時候開發的時間成本遠遠比芯片差價大,用資源豐富的芯片提高開發速度是劃算的選擇。
受教了
0
回復
2014-04-15 13:54
學好指針,推薦一本書吧,,
0
回復
2014-04-16 08:34
@sherlocked
學好指針,推薦一本書吧,,
指針要會用,但是盡量少用
0
回復
2014-04-16 12:28
@wangshujun
指針要會用,但是盡量少用
這又是怎么回事啊
0
回復
nyfddz
LV.1
10
2014-04-26 05:53
@sherlocked
[圖片]這又是怎么回事啊

三人行必有我師

謝謝

0
回復
2014-04-26 10:24
讀此文,有所獲,感恩!
0
回復
土土豆
LV.1
12
2014-05-04 22:47
學習了,謝謝分享。
0
回復
2015-01-15 09:50
@wangshujun
指針要會用,但是盡量少用
我也想知道這個是為什么
0
回復
苑留記
LV.8
14
2015-01-15 11:42

我頂下吧,唉感覺貌似對我也沒用

0
回復
尤小翠
LV.7
15
2015-01-15 12:27

對于常量 如果是有意義的最好給#define一下

比如 0x80 || 0x02 這種經過長時間就忘記是啥了

0
回復
wangshujun
LV.8
16
2015-01-15 17:25
@又一個暑假
我也想知道這個是為什么
指針能帶給c程序極大的靈活性和效率,但是非常容易出現嚴重和隱蔽的錯誤
0
回復
a2895812
LV.2
17
2015-01-16 10:17
@又一個暑假
我也想知道這個是為什么

結構不復雜的時候指針必要性不大,只有在數據結構或程序結構到一定規模時指針才能體現他的必要性。舉個不恰當的例子,比如我在看CM3權威指南,其中有第四章第一節第二小節:通用目的的寄存器R8-R12;可以比喻為一個叫“CM3權威指南”的大的數據(庫),有一級指針“章”,二級指針“節”,三級指針“小節”,目的數據“通用目的的寄存器R8-R12”。這樣我們是不是可以很方便的用“章”“節”小節“很方便的查找到我們需要的東西?這就是我理解的指針的意義。

     至于很多時候為什么不需要指針這個問題,就像你寫個800字的作文,需要什么:”章“”節“嗎?給一個變量定義一個指針還不如給他預定義一個別名來的實在。給一個一維數組定義一個指針還不如直接訪問這個數組來的方便,反正他們實際操作的時候都是一樣的,自己怎么順手就怎么來。

0
回復
wfc0312
LV.5
18
2015-03-18 08:17
@尤小翠
對于常量如果是有意義的最好給#define一下比如0x80||0x02這種經過長時間就忘記是啥了
好吧, 我當年就這么寫的。現在已經完全看不懂自己的代碼了。
0
回復
dxsmail
LV.11
19
2015-03-18 08:37
很好的經驗。。。有人帶入門就比較容易了。。。
0
回復
duhanyu
LV.2
20
2015-03-20 10:17

之間用了一次STM32,學的一知半解,一般都是看使用手冊和開別人例程

想系統的了解ARM開發,樓主有好的書推薦么?

0
回復
2016-03-01 11:26
真是對于新人非常寶貴的意見呢~本帖已經由小編整理成技術文章啦~感謝樓主和大家的積極討論與貢獻~
0
回復