请有经验人谈谈这两种方法优缺点

[复制链接]
3325|12
 楼主| xuyaqi 发表于 2012-11-4 11:02 | 显示全部楼层 |阅读模式
pi, ADC, dc, IO, nsa
本帖最后由 xuyaqi 于 2012-11-4 11:12 编辑

请有经验人谈谈这两种方法优缺点,都是给寄存器赋值。
第一种AT91SAM3U例程     PIO_Configure(pinsADC, PIO_LISTSIZE(pinsADC));
第二种LPC1368例程               LPC_PINCON->INSEL3 &= ~(3UL<<30);
对于熟悉硬件的人第二种好理解,第一种为了寻找与硬件联系看得有点晕。
 楼主| xuyaqi 发表于 2012-11-4 16:32 | 显示全部楼层
第一种是否有利于跨硬件平台但增加了阅读困难。
渤海三叠浪 发表于 2012-11-4 18:03 | 显示全部楼层
第一种好。
如果你长时间不接触这个片子了,就会发现第二种写的很差了。
但是如果你一直用这个片子就会发现都可以
 楼主| xuyaqi 发表于 2012-11-4 18:42 | 显示全部楼层
3楼请教
阅读第一种写法应遵循什么步骤才能找到与具体硬件的联系,谢谢。
abin0415 发表于 2012-11-4 19:23 | 显示全部楼层
第一种可读性好,第二种看上去效率高,但是第一种若是用宏的话,和第二种的效率没有差别。个人比较喜欢第一种写法。
 楼主| xuyaqi 发表于 2012-11-4 19:43 | 显示全部楼层
我觉得搞硬件的要阅读明白第一种写法,首先要认真学习一下C语言基础(搞硬件普遍不足),然后另外找一张纸将他们的宏,结构,联合等互相关系画出来才能看明白,我是把第一种看了几天都还没看明白,大家不知还有什么好办法。
songhere 发表于 2012-11-4 23:24 | 显示全部楼层
第一种类似固件库的东西,易懂。  关键底层的寄存器还是应该很熟悉的,不然底层固件库程序出了问题,根本无法找出程序的错误所在。。。
jlass 发表于 2012-11-5 09:40 | 显示全部楼层
第一种AT91SAM3U例程     PIO_Configure(pinsADC, PIO_LISTSIZE(pinsADC));
一般驱动都是这么写的(程序比较复杂,各种包涵)。
第二种LPC1368例程               LPC_PINCON->INSEL3 &= ~(3UL<<30);
一般直接写单片机的代码都是这么写的(程序简单,没几个文件)。
第一种更为规范,第二种效率更高,但维护性差。
看使用情况而定,没什么优劣之分。
更简单的说,大公司用第一种,小公司用第二种。
阿南 发表于 2012-11-5 10:17 | 显示全部楼层
还要考虑每种写法对于不同人的思维习惯,合适是最好的。
 楼主| xuyaqi 发表于 2012-11-5 10:45 | 显示全部楼层
是否我的学习方法有问题,我老想把第一种写法还原到第二种来理解,结果由于程序封装了一些东西有些东西就看不到造成无法还原到第二种。
联想到当年由汇编转c,门坎老过不去,因为汇编要求工作的每一步你都要为它规划好,当年为了理解c语言总想把它还原到汇编来理解,结果总是非常困难,后来突然开窍放开汇编直接理解c才过了这个坎。难道我又犯了同样问题,而应该只理解用户需要理解的内容,厂家解决和硬件相关的部分,ARM—KELL解决编译链接的问题。
希望大家谈谈自己的看法。
阿南 发表于 2012-11-5 11:18 | 显示全部楼层
如果只是学习的话,就不用太在意,两种都需要理解。
AppBaby 发表于 2012-11-5 11:40 | 显示全部楼层
如果把 3UL<<30 换成 宏定义, 第二种写法更好. 适当使用宏定义.

对于第一种, 若是全盘使用宏定义,感觉是在耍酷.... 我最怕面对 各种宏嵌套,
 楼主| xuyaqi 发表于 2012-11-5 11:55 | 显示全部楼层
可不可以这样讲,第一种简化了厂家编程,维护工作量,增加了用户理解,应用工作量。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

47

主题

1639

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部