你好,
有个C语言 请教一下!这个问题困扰我很久了!
你看看这个网友的观点是对的吗?
为了防止中断函数把某些共享数据破坏,在主函数中更改某个数据变量时,应该先关闭中断,修改完后再打开中断;如果是1个字节char变量没关系,如果是int等类型的2个字节以上的数据就有必要考虑一下。因为char是一个字节,在数据改变的时候,一条指令就可以更改完毕.而int是2个字节,更改数据的时候至少需要2条指令以上,所以我怕在刚执行一条指令的时候,还没来得及执行完第二条指令,也就是int数据还没更改完时出现定时中断,而恰好在定时中断里有发生了更改次变量的情况。
就是说中断里面用到的变量,如果主循环也有用,在主循环里面修改时,就要关中断,防止操作到一半,中断发生,中断里面改变了这个变量?
不知这个问题使用volatile能否解决?
谢谢! |