发新帖本帖赏金 0.08元(功能说明)我要提问
返回列表
打印
[STM32F1]

大家怎么看正点原子的代码?

[复制链接]
楼主: 千帆归尽
手机看帖
扫描二维码
随时随地手机跟帖
21
diweo| | 2014-11-24 11:13 | 只看该作者 回帖奖励 |倒序浏览
本帖最后由 diweo 于 2014-11-24 11:14 编辑

反正我是先用库函数写,然后再把中断里边的东西换成寄存器直接操作。中断外面的就无所谓了。
良好的程序结构带来的性能提升应该比寄存器替代库函数带来的性能提升要高的多。

使用特权

评论回复
22
Dick00| | 2014-11-24 11:36 | 只看该作者
为了确定程序的正确性,一般都是自己按照寄存器直接写的,别人给的库函数我不太信任。所以干脆对照寄存器自己搞定,出现bug也好找。还有就是,代码是先给自己看的,你看得懂看不懂是你的事,能不能实现才是我的事。

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
zqjqq88 + 2
23
qq4988| | 2014-11-24 11:41 | 只看该作者
我觉得原子做的代码很好,库函数方便开发,寄存器操作有助于对芯片各个外设的了解,我支持原子

使用特权

评论回复
24
zjzto| | 2014-11-24 11:56 | 只看该作者
关键时候还是要了解寄存器的,库函数的功能毕竟有限

使用特权

评论回复
25
qbasicljx| | 2014-11-24 11:58 | 只看该作者
stm32 必须 ucos+库
对于我来说
汇编 还有 寄存器操作 略懂一点即可
要用的时候 查书

使用特权

评论回复
26
sedatefire| | 2014-11-24 12:19 | 只看该作者
我说一下我自己的个人判断。

非静态栈式(M0/M3/M0)mcu的大量推广、使用,从长期上讲,指针等技术会大量运用,
会逐步的抽象出来一个,脱离了具体mcu的“纯软件层”,reg这一层的重心会逐步往厂商方面倾斜,他们会按标准接口封装起来
例如:CMSIS这个协议也会逐渐丰满起来,最终形成一个类似POSIX的接口标准。

当然,未来要拼成本的话,还是要掌握reg啦,自己写终究可裁剪,成本会做到最低。

但从国家的整体产业链布局上来说,拼成本的机会越来越少。
未来拼的是质量、服务、和开发的响应速度。

使用特权

评论回复
评论
飞行员 2015-3-4 19:05 回复TA
拼规模,规模大成本低。小企业不好做了。 
评分
参与人数 2威望 +12 收起 理由
千帆归尽 + 2 10
icecut + 10
27
sedatefire| | 2014-11-24 12:22 | 只看该作者
得补充一下,我没有褒贬正点原子的任何倾向,楼主不要误解。
对于创业者,我持万分的敬意。
不过正点原子得侧重一下宣传重点,免得客户误会。

使用特权

评论回复
28
sdkdwyb| | 2014-11-24 12:48 | 只看该作者
其实那些不喜欢寄存器的童鞋,做的东西应该偏软,如果学嵌入式不知道寄存器,只是拿别人的库来用,如果换一种嵌入式处理器是不是又不会了啊。即使用库的也要看看人家的库具体怎样实现的,知其然,知其所以然。这才是嵌入式工程师啊。

使用特权

评论回复
29
ranqingfa| | 2014-11-24 13:08 | 只看该作者
寄存器操作学会了是好的,只要是玩stm32的,还是经常在必要的时候用下寄存器的

使用特权

评论回复
30
tianli1980| | 2014-11-24 13:45 | 只看该作者
原子哥的产品不错,资料也是真心的不少,大赞!

使用特权

评论回复
31
千帆归尽|  楼主 | 2014-11-24 13:46 | 只看该作者
这里要阐述一下观点,免得被大家误解,大家这样吵来吵去最终只会变成人身攻击,就偏移了这个帖子的主题了。
1.这篇帖子不是来褒贬原子的,不是像1楼那样的愤青来对其进行人身攻击的。
2.楼主我从不讨厌操作寄存器,相反,我很喜欢寄存器。我刚入门的时候使用的是V3.50版本的库,但是学到最后,我发现这种方式不足。因为那时候只是调用库,不了解底层,一直在库上面的时候,我甚至不知道为什么设置成为输入的时候不需要设置结构体中的速度。只有看了寄存器之后我才知道为什么。
3.这篇帖子不是对正点原子进行人身攻击的。
4.这篇帖子不是单独说正点原子的,只是说明这一类的库,就行他的寄存器的库那样。这样的写作方式只是把STM32当做51来使用,就算直接操作寄存器能够在时间上面节省一点,但是STM32快速的运算速度也能够掩饰这点瑕疵。而类似51的写作方式只能显示出他的弊端。举个例子:
原子的操作寄存器的时候,每次需要设置某一个引脚的时候,都需要反复的调用GPIOx->xxx|=0xABCDEF;像这样的方式,每次写的时候我都需要记住输出,50M,推挽的数值是多少,如果有一天我记错了,那么程序就会出现bug。
5.Arduino也是直接操作寄存器的,但是他们不仅仅是操作寄存器,他们会对寄存器进行封装。封装出类似digitalWrite,pinMode这样的函数。当我们对寄存器做了这样的封装时候,还用费力的记住输出,50M,推挽,寄存器应该写什么值吗?即使不提Arduino,那么以STM32为主控芯片的Maple不也是很好的例子吗?

使用特权

评论回复
32
千帆归尽|  楼主 | 2014-11-24 13:48 | 只看该作者
sedatefire 发表于 2014-11-24 12:19
我说一下我自己的个人判断。

非静态栈式(M0/M3/M0)mcu的大量推广、使用,从长期上讲,指针等技术会大量运 ...

版主就是版主,思想独特,看看我的31楼吧,大家可以理解错这篇帖子了,

使用特权

评论回复
33
仙人球W| | 2014-11-24 14:10 | 只看该作者
原子,野火 都很赞

使用特权

评论回复
34
Kevinpang| | 2014-11-24 14:23 | 只看该作者
直接用库函数的路过,

使用特权

评论回复
35
luodanoo| | 2014-11-24 14:39 | 只看该作者
我一直用寄存器操作,不喜欢库函数

使用特权

评论回复
36
icecut| | 2014-11-24 15:00 | 只看该作者
私下里听到野火作者说自己代码质量好.这个我也信

但是我还是比较推崇官方的.也会朝这个方向推广.
当然我也在被官方代码坑,但是还是觉得用他的代码,级别和我写的一致.我超不过官方也不会比官方差.

使用特权

评论回复
评论
tuzihog 2014-11-26 12:36 回复TA
不错,个人也是推崇官方代码 
37
mylsf| | 2014-11-24 16:04 | 只看该作者
挺好的,我入门就是看的这个,学的库函数版本,但有的也看了库里面是什么。

使用特权

评论回复
38
千帆归尽|  楼主 | 2014-11-24 16:37 | 只看该作者
icecut 发表于 2014-11-24 15:00
私下里听到野火作者说自己代码质量好.这个我也信

但是我还是比较推崇官方的.也会朝这个方向推广.

自己感觉,官方的代码有点多,官方的代码考虑了很多方面,就行SPI吧,有的时候我们只需要使用它的主模式,但是官方的东西太多了,配置起来太麻烦,我们还要考虑很多我们不用的细节。ST的官方库应该写几个不同的版本,像专业版,家庭普通版,等等,满足不同层次的需求。

使用特权

评论回复
39
千帆归尽|  楼主 | 2014-11-24 16:39 | 只看该作者
ranqingfa 发表于 2014-11-24 13:08
寄存器操作学会了是好的,只要是玩stm32的,还是经常在必要的时候用下寄存器的 ...

像这些东西,要考虑的远远比51多的多,这方面更多的考虑的是可移植性,对代码的质量要求的更高。不管是原子还是野火,都没有使用C++对代码就行进一步封装。

使用特权

评论回复
40
千帆归尽|  楼主 | 2014-11-24 16:40 | 只看该作者
仙人球W 发表于 2014-11-24 14:10
原子,野火 都很赞

但是两者都没有使用C++进一步封装。个人感觉最高的层次是Arduino那样的。

使用特权

评论回复
发新帖 本帖赏金 0.08元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则