打印

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

[复制链接]
2662|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楼请教
阅读第一种写法应遵循什么步骤才能找到与具体硬件的联系,谢谢。

使用特权

评论回复
5
abin0415| | 2012-11-4 19:23 | 只看该作者
第一种可读性好,第二种看上去效率高,但是第一种若是用宏的话,和第二种的效率没有差别。个人比较喜欢第一种写法。

使用特权

评论回复
6
xuyaqi|  楼主 | 2012-11-4 19:43 | 只看该作者
我觉得搞硬件的要阅读明白第一种写法,首先要认真学习一下C语言基础(搞硬件普遍不足),然后另外找一张纸将他们的宏,结构,联合等互相关系画出来才能看明白,我是把第一种看了几天都还没看明白,大家不知还有什么好办法。

使用特权

评论回复
7
songhere| | 2012-11-4 23:24 | 只看该作者
第一种类似固件库的东西,易懂。  关键底层的寄存器还是应该很熟悉的,不然底层固件库程序出了问题,根本无法找出程序的错误所在。。。

使用特权

评论回复
8
jlass| | 2012-11-5 09:40 | 只看该作者
第一种AT91SAM3U例程     PIO_Configure(pinsADC, PIO_LISTSIZE(pinsADC));
一般驱动都是这么写的(程序比较复杂,各种包涵)。
第二种LPC1368例程               LPC_PINCON->INSEL3 &= ~(3UL<<30);
一般直接写单片机的代码都是这么写的(程序简单,没几个文件)。
第一种更为规范,第二种效率更高,但维护性差。
看使用情况而定,没什么优劣之分。
更简单的说,大公司用第一种,小公司用第二种。

使用特权

评论回复
9
阿南| | 2012-11-5 10:17 | 只看该作者
还要考虑每种写法对于不同人的思维习惯,合适是最好的。

使用特权

评论回复
10
xuyaqi|  楼主 | 2012-11-5 10:45 | 只看该作者
是否我的学习方法有问题,我老想把第一种写法还原到第二种来理解,结果由于程序封装了一些东西有些东西就看不到造成无法还原到第二种。
联想到当年由汇编转c,门坎老过不去,因为汇编要求工作的每一步你都要为它规划好,当年为了理解c语言总想把它还原到汇编来理解,结果总是非常困难,后来突然开窍放开汇编直接理解c才过了这个坎。难道我又犯了同样问题,而应该只理解用户需要理解的内容,厂家解决和硬件相关的部分,ARM—KELL解决编译链接的问题。
希望大家谈谈自己的看法。

使用特权

评论回复
11
阿南| | 2012-11-5 11:18 | 只看该作者
如果只是学习的话,就不用太在意,两种都需要理解。

使用特权

评论回复
12
AppBaby| | 2012-11-5 11:40 | 只看该作者
如果把 3UL<<30 换成 宏定义, 第二种写法更好. 适当使用宏定义.

对于第一种, 若是全盘使用宏定义,感觉是在耍酷.... 我最怕面对 各种宏嵌套,

使用特权

评论回复
13
xuyaqi|  楼主 | 2012-11-5 11:55 | 只看该作者
可不可以这样讲,第一种简化了厂家编程,维护工作量,增加了用户理解,应用工作量。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

47

主题

1638

帖子

6

粉丝