前言
本文是个人学习笔记,是通过观看B站UP主(孤独的二进制)的教学视频后所写。
平常使用Arduino编程时,知道有volatile这个关键字,知道它的意思是可变的,但是并未深究它的真正作用,平常也很少用到它,为了弥补基础知识盲区,特作学习以记之。
volatile介绍
从单词的中文释义上,它是指:易挥发的,易变的。
volatile 关键字和const 一样是一种类型修饰符,用它修饰的变量表示可以被某些编译器未知的因素更改,比如操作系统、硬件或者其它线程等。
在Arduino C中,被它修饰的变量,作用可以概括为以下两点:
- 告诉编译器被修饰的变量不能被优化
- 被修饰变量的读和写是直接通过内存,不能通过寄存器或缓存
中断中的变量尽量使用volatile修饰
编程对比
编写一个超鸡简单的程序来体验一下,有没有volatile修饰带来的效果:
- 未使用volatile修饰
- 使用volatile修饰
补充
从存储结构上看,volatile修饰的变量所在区域。