发新帖我要提问
123
返回列表
打印
[STM32F1]

冒昧再次出现请教WHILE语句的问题

[复制链接]
楼主: gdszzyq
手机看帖
扫描二维码
随时随地手机跟帖
41
gdszzyq|  楼主 | 2015-5-12 21:55 | 只看该作者 回帖奖励 |倒序浏览
wangliuliu566 发表于 2015-5-12 21:15
其实养成良好的编程习惯,这类问题根本不是问题,既在中断中使用又在其他地方查询的变量,几乎都会加上
v ...

第一次用STM,以前在51时从来就没用过这个修饰符,请问是不是所有会变化的变量都要用volatile修饰?

使用特权

评论回复
42
linqing171| | 2015-5-12 22:51 | 只看该作者
双线程的,中断和主循环都要用到的,软件不修改自动会变的硬件寄存器。
编译器首先会根据上文来推测此处可能是什么。如果是易变的,则无法根据上文来推测了,必须去读一遍。

使用特权

评论回复
43
gdszzyq|  楼主 | 2015-5-12 22:58 | 只看该作者
那么GPIO算是自动会变的,定义GPIO也必须修饰为volatile?

使用特权

评论回复
44
Xflyan| | 2015-5-12 23:10 | 只看该作者
gdszzyq 发表于 2015-5-12 22:58
那么GPIO算是自动会变的,定义GPIO也必须修饰为volatile?

GPIO本身定义就是 volatile 的,你可以去头文件看看

使用特权

评论回复
45
gdszzyq|  楼主 | 2015-5-12 23:28 | 只看该作者
好,谢谢各位的热心帮助。

使用特权

评论回复
46
112207301219| | 2015-5-12 23:43 | 只看该作者
学习了

使用特权

评论回复
47
复仇之矛| | 2015-5-13 10:14 | 只看该作者
你的test=0,在while(1)的每次循环开始都会对test重新赋值为0,所以while(test<2000);永远也不能达到。

使用特权

评论回复
48
xiangnengji| | 2015-5-24 21:05 | 只看该作者
先用示波器看看你的 定时器,时间对不对,,,要是你初始化有问题,每次中断用了 1s 时间,你这个2000 都要等大半个小时了。

使用特权

评论回复
49
as564335sa| | 2015-5-24 22:51 | 只看该作者
volatile是很重要的东西

使用特权

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

本版积分规则