OpenEdv-开源电子网

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

库和寄存器使用

[复制链接]

40

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
255
金钱
255
注册时间
2013-5-22
在线时间
0 小时
发表于 2013-8-16 20:40:17 | 显示全部楼层 |阅读模式

 #define GPIO_KEY  GPIOA             

GPIO_KEY->ODR = (GPIO_KEY->ODR | 0x00ff) & 0xfffe ;   

// GPIO_Write(GPIO_KEY ,(GPIO_KEY->ODR | 0x00ff & 0xfffe)); //先让PA0到PA3全部输出高。

原子哥,这两条语句一样吧,但是运行结果不同啊

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-16 20:52:01 | 显示全部楼层
这样:GPIO_Write(GPIO_KEY ,(GPIO_KEY->ODR | 0x00ff )& 0xfffe);
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
发表于 2013-8-16 21:33:50 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
应该一样啊,|和&都是左结合。
->优先级也高过|、&。
请原子哥指教。这个括号是多余的。
一直努力就很好。
回复 支持 反对

使用道具 举报

40

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
255
金钱
255
注册时间
2013-5-22
在线时间
0 小时
 楼主| 发表于 2013-8-16 23:12:38 | 显示全部楼层
回复【3楼】qq942266575:
---------------------------------
1.&的优先级高于|
2.如果程序改为原子哥说的GPIO_Write(GPIO_KEY ,(GPIO_KEY->ODR | 0x00ff )& 0xfffe); 程序可以正常运行
但是如果是GPIO_Write(GPIO_KEY ,(GPIO_KEY->ODR | 0x00ff & 0xfffe)); 是将GPIO_KEY->ODR 的低8位置成0xfe(先算&再算|)
原子哥说的GPIO_Write(GPIO_KEY ,(GPIO_KEY->ODR | 0x00ff )& 0xfffe); 也是将GPIO_KEY->ODR 的低8位置成0xfe(先算|再算&)(我的目的也是将低8位置成0xfe)
但是两种结果为什么不同了?回复【3楼】qq942266575:
---------------------------------
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-16 23:13:49 | 显示全部楼层
回复【3楼】qq942266575:
---------------------------------
是么?
我没测试哦,只是对比上下两句话,发现这里不一样。
实际测试下才知道。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
发表于 2013-8-16 23:20:37 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
我错了,我学艺不精。我错了。。
我忘掉了,回去查书,
|  10级优先级
&   8级优先级。。
一直努力就很好。
回复 支持 反对

使用道具 举报

76

主题

355

帖子

0

精华

高级会员

Rank: 4

积分
671
金钱
671
注册时间
2012-9-19
在线时间
5 小时
发表于 2013-8-17 10:59:54 | 显示全部楼层
回复【6楼】qq942266575:
---------------------------------
我也遇到过类似问题。导致我现在只要是一体运算我就加()反正加上不会错。。。嘎嘎嘎
具有资深STM32点灯技术,
回复 支持 反对

使用道具 举报

40

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
255
金钱
255
注册时间
2013-5-22
在线时间
0 小时
 楼主| 发表于 2013-8-17 12:03:00 | 显示全部楼层
回复【7楼】敌害:
---------------------------------
是啊,要养成这种习惯才不会犯这种低级错误滴
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
发表于 2013-8-17 13:19:27 | 显示全部楼层
回复【7楼】敌害:
---------------------------------
一般情况我都加(),不过还是会去背下来。
一直努力就很好。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-14 22:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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