端口状态问题

[复制链接]
1487|14
 楼主| hsbjb 发表于 2013-11-30 10:42 | 显示全部楼层 |阅读模式
(1):
if(KM0&(0x0001|0x0002)==0) x=0;
else x=1;
(2):
if(KM0&(0x0001|0x0002)) x=1;
else x=0;
以上两个程序,逻辑功能应该是一样的,但是在stm32里运行,第一种方式工作不正常,第二种方式正常,
请问这是为什么?
秋天落叶 发表于 2013-11-30 10:52 | 显示全部楼层
KM0 是 多少?
sinadz 发表于 2013-11-30 11:00 | 显示全部楼层
KM0由外部端口状态决定。
这是判断KM0最低两位是否同时为0,用第一种方式编程,总是只执行else后的指令,即x=1;
yybj 发表于 2013-11-30 11:08 | 显示全部楼层
是不是运算符优先级没考虑好?
smilingangel 发表于 2013-11-30 21:13 | 显示全部楼层
把0x0001|0x0002改成0x0003的直接再试一下这两个相不相同的吧
smilingangel 发表于 2013-11-30 21:13 | 显示全部楼层
按照逻辑关系来说,这两个都是一样的效果的啊
820481597zhao 发表于 2013-12-17 17:31 | 显示全部楼层
“==”比 “&”优先级高
戈卫东 发表于 2013-12-24 11:37 | 显示全部楼层
这个问题我已经在N个地方看到无数次了。。。。。。。。。。。。。。。。。
是一个人在问么?
smilingangel 发表于 2013-12-28 23:56 | 显示全部楼层
这个可能是STM32的编程环境的问题的吧
smilingangel 发表于 2013-12-28 23:57 | 显示全部楼层
我在用430单片机坐时间的延时的时候用了while语句的
smilingangel 发表于 2013-12-28 23:58 | 显示全部楼层
用while(delay_flag)等待延时的,利用定时器定时清除该标志位的
smilingangel 发表于 2013-12-28 23:58 | 显示全部楼层
在MSP430单片机里面是非常正常的啊,也可顺利运行的
smilingangel 发表于 2013-12-28 23:59 | 显示全部楼层
可就是在stm32单片机运行的keil编译软件里面不可以的,一直停留在该出的
smilingangel 发表于 2013-12-29 00:00 | 显示全部楼层
查了下的,我的定时器也是正常运行的,到了时间点的,该delay_flag标志位也清零了。可就是走不下去的
smilingangel 发表于 2013-12-29 00:02 | 显示全部楼层
所以很是郁闷的,也不知哪的问题的,,,请教各位了啊,先谢谢啦
您需要登录后才可以回帖 登录 | 注册

本版积分规则

193

主题

2354

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部