OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10390|回复: 11

请教一个寄存器操作效率的疑问

[复制链接]
头像被屏蔽

93

主题

160

帖子

0

精华

禁止发言

积分
457
金钱
457
注册时间
2012-4-3
在线时间
7 小时
发表于 2012-7-20 00:49:45 | 显示全部楼层 |阅读模式
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

100

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
278
金钱
278
注册时间
2012-4-15
在线时间
0 小时
发表于 2012-7-20 06:15:59 | 显示全部楼层
说位带操作效率高,是因为赋值时只需要“写”操作,改变了以往“读—改—写”的模式。这样的话使用BRR与BSRR和位带操作的效率应该是一样的(如果不考虑移位)。
喜欢单片机,没什么道理,就像爱吃水煮鱼,对味而已。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-7-20 08:48:58 | 显示全部楼层
回复【楼主位】 noip0726 :
---------------------------------
没听说过位带操作效率高的说法.
下面是ST的官方培训资料上面说的:









我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

头像被屏蔽

93

主题

160

帖子

0

精华

禁止发言

积分
457
金钱
457
注册时间
2012-4-3
在线时间
7 小时
 楼主| 发表于 2012-7-20 09:49:13 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-7-20 10:01:54 | 显示全部楼层
回复【4楼】noip0726:
---------------------------------
我的快速IO就是使用BSRR,BRR啊.
速度区别我注释都写明白了啊?
不使用的时候,刷频速度在14帧左右.
使用后速度在28帧左右.
提高一倍.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

46

主题

329

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1544
金钱
1544
注册时间
2012-4-9
在线时间
80 小时
发表于 2012-7-20 11:09:12 | 显示全部楼层
mark
回复 支持 反对

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2196
金钱
2196
注册时间
2012-2-8
在线时间
35 小时
发表于 2012-7-20 12:00:28 | 显示全部楼层
做了翻转测试,用示波器实测确实是BRR和BSSR的方式比较快,快一倍左右,虽然汇编代码是一样的。
https://github.com/roxma
回复 支持 反对

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2196
金钱
2196
注册时间
2012-2-8
在线时间
35 小时
发表于 2012-7-20 12:26:19 | 显示全部楼层
继续测试,
如果是对引脚设置的是一个未知的变量,结果就不一样了,位带的方式稍微快一点,而且代码量小得多。
因为如果要设置 BRR 和 BSRR,就不得不根据变量的值进行判断,然后还得进行逻辑运算得出写到BRR和BSRR的值。

不过这种情况还是比较少见的,
比如软件模拟 SPI 会用得到吧。
https://github.com/roxma
回复 支持 反对

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2196
金钱
2196
注册时间
2012-2-8
在线时间
35 小时
发表于 2012-7-20 13:11:00 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
不过我对翻转测试的结果是位带操作比

read-modify-write的方式 
GPIOA->ODR |= 0x00000008;
GPIOA->ODR &= ~0x00000008;

要快一些,所以也是有些区别的吧,
https://github.com/roxma
回复 支持 反对

使用道具 举报

3

主题

52

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2012-2-26
在线时间
0 小时
发表于 2012-7-20 14:42:04 | 显示全部楼层
回复【9楼】Pony279:
---------------------------------
楼上的探索精神值得我们学习
努力向前狂奔,只为追随吾心
回复 支持 反对

使用道具 举报

头像被屏蔽

93

主题

160

帖子

0

精华

禁止发言

积分
457
金钱
457
注册时间
2012-4-3
在线时间
7 小时
 楼主| 发表于 2012-7-20 17:45:03 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-7-20 21:22:30 | 显示全部楼层
回复【11楼】noip0726:
---------------------------------
为什么位带操作就要比寄存器操作快?这个原理你不关心?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 22:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表