你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

对51转到ARM的新人的一些建议

[复制链接]
党国特派员 提问时间:2015-1-5 09:52 /
      我以前一直用的是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差不多,关键还是各种外设的寄存器操作。

收藏 评论2 发布时间:2015-1-5 09:52

举报

2个回答
ajane 回答时间:2015-1-5 16:38:46
嗯,楼主10多年的经验,大神啊,大神
flintlovesam 回答时间:2015-1-6 10:33:22
10多年的经验   路过  话说我加起来也有2 年多啦  比楼主差远了  哈哈  向楼主学习了  楼主提上网建议也很中肯

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版