volatile这个关键字要求每次从原始地址读取值,但是如果地址没发生变化,这个值肯定就不会改变啊

图片说明这个图片中说的寄存器或端口数据有什么不同呢,

1.volatile是说该变量的值可能被意想不到的修改,让编译器不要做优化,其实就是让编译器不要用寄存器来缓存该变量,每次都从内存读取该变量。
2.寄存器变量使用register修饰,就是建议编译器使用寄存器来存储该变量。
3.端口数据,我猜测可能是指io映射的内存地址中的数据,这种数据可能被外设修改。