打印
[应用方案]

很怀念WinAVR的_BV位操作和loop_until_bit_is_set等函数

[复制链接]
2217|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Lbsonggz|  楼主 | 2016-12-29 09:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
作为32位的ARM,M0的寄存器操作在不使用CMSIS时还是挺麻烦的,字节长了啊。虽然麻烦,还是其乐无穷。不可否认,CMSIS的使用简化了ARM 程序的设计,但归根到底还是使用寄存器操作实现的。如果不看寄存器,有时还真不好调试。于是,因为使用惯了WinAVR编程软件和ATmega系列MCU,对其中的位操作函数_BV()和循环等待函数loop_until_bit_is_set(,)、loop_until_bit_is_clear(,)函数非常怀念啊,直接的移位操作,简单而高校。下一步,打算把这几个函数移植到emIDE和EmBITZ下使用了,.............。2017的愿望。
其实就是告诉大家寄存器操作还有一种更简单的方法,就是移位。为便于设计,更简单的方法就是移植BV()和循环等待函数loop_until_bit_is_set(,)、loop_until_bit_is_clear(,)函数,这在初始化和UART发送函数中有独到用处。
沙发
643757107| | 2016-12-29 19:05 | 只看该作者
如果使用多的话,就慢慢觉得其实比寄存器操作的好记多了

使用特权

评论回复
板凳
dongnanxibei| | 2016-12-29 21:26 | 只看该作者
那个东西就是通过宏替换实现的。你这里用宏可以做到一样的。

使用特权

评论回复
地板
wahahaheihei| | 2016-12-29 23:21 | 只看该作者
你可以看那个AVR的头文件,在头文件里是通过宏定义好的,所以你可以用,你也可以在这个里面自己定义一个头文件用于实现类似的函数功能。

使用特权

评论回复
5
zhuotuzi| | 2016-12-29 23:54 | 只看该作者
楼主可以定位一下,看看那个怎么实现的,照着做一个就行了。各种函数,其实C本来没有的

使用特权

评论回复
6
springvirus| | 2016-12-30 14:49 | 只看该作者
同样怀念CVAVR的位操作~~

使用特权

评论回复
7
zhuotuzi| | 2016-12-30 17:02 | 只看该作者
每一家提供的开发资源都是不同的,比如51都是P1,P2
PIC都是PORTA,PORTB
等等,实际上后面都是宏替换了一个地址

使用特权

评论回复
8
墙上的咖啡| | 2016-12-30 20:06 | 只看该作者
现在速度上去了,用库更直观和方便。

使用特权

评论回复
9
yiyigirl2014| | 2016-12-30 23:03 | 只看该作者
坐等楼主实现这些内容。

使用特权

评论回复
10
戈卫东| | 2016-12-31 08:56 | 只看该作者
这些东西需要编译器支持才会方便高效。。。

使用特权

评论回复
11
yiyigirl2014| | 2016-12-31 10:10 | 只看该作者
戈卫东 发表于 2016-12-31 08:56
这些东西需要编译器支持才会方便高效。。。

嗯,大神说的有道理。

使用特权

评论回复
12
戈卫东| | 2016-12-31 10:38 | 只看该作者
yiyigirl2014 发表于 2016-12-31 10:10
嗯,大神说的有道理。

我是渣渣不是大神。。。。。。

使用特权

评论回复
13
Lbsonggz|  楼主 | 2017-1-3 22:40 | 只看该作者
已经移植好,在另外帖子中,欢迎使用和测试,只要是C编译器都支持的。但类似Keil 的那种位操作我是不建议的(但不反对),破坏C语言的美感

使用特权

评论回复
14
yiyigirl2014| | 2017-1-6 10:24 | 只看该作者
总的来说还是用官方的库函数实现比较好,这样方便移植程序

使用特权

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

本版积分规则

33

主题

240

帖子

7

粉丝