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

[复制链接]
5485|57
 楼主| gdszzyq 发表于 2015-5-12 21:55 | 显示全部楼层
wangliuliu566 发表于 2015-5-12 21:15
其实养成良好的编程习惯,这类问题根本不是问题,既在中断中使用又在其他地方查询的变量,几乎都会加上
v ...

第一次用STM,以前在51时从来就没用过这个修饰符,请问是不是所有会变化的变量都要用volatile修饰?
linqing171 发表于 2015-5-12 22:51 | 显示全部楼层
双线程的,中断和主循环都要用到的,软件不修改自动会变的硬件寄存器。
编译器首先会根据上文来推测此处可能是什么。如果是易变的,则无法根据上文来推测了,必须去读一遍。
 楼主| gdszzyq 发表于 2015-5-12 22:58 | 显示全部楼层
那么GPIO算是自动会变的,定义GPIO也必须修饰为volatile?
Xflyan 发表于 2015-5-12 23:10 | 显示全部楼层
gdszzyq 发表于 2015-5-12 22:58
那么GPIO算是自动会变的,定义GPIO也必须修饰为volatile?

GPIO本身定义就是 volatile 的,你可以去头文件看看
 楼主| gdszzyq 发表于 2015-5-12 23:28 | 显示全部楼层
好,谢谢各位的热心帮助。
112207301219 发表于 2015-5-12 23:43 | 显示全部楼层
学习了
复仇之矛 发表于 2015-5-13 10:14 | 显示全部楼层
你的test=0,在while(1)的每次循环开始都会对test重新赋值为0,所以while(test<2000);永远也不能达到。
xiangnengji 发表于 2015-5-24 21:05 | 显示全部楼层
先用示波器看看你的 定时器,时间对不对,,,要是你初始化有问题,每次中断用了 1s 时间,你这个2000 都要等大半个小时了。
as564335sa 发表于 2015-5-24 22:51 | 显示全部楼层
volatile是很重要的东西
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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