微机原理
堆栈指针SP(Stack Pointer)
“大家想象一下,单片机在运行代码,就像是你在读一本极厚的小说(这本小说就是 Flash 存储器)。
你的眼睛不可能一次性看完一整页,你必须一行一行地读。为了防止读串行,你会用一根食指指着当前正在读的那一行字。读完一行,手指就往下挪一行。
这根用来指路的食指,就是 PC(程序计数器)!
PC 里面存的永远是一个地址,也就是告诉你:‘CPU 老大,下一句该执行哪一行代码了?’
如果突然来了一个电话(中断),你该怎么办?你会把这根手指当前指的位置,写在一张纸条上(保存现场),然后跑去接电话。接完电话回来,看一眼纸条,手指重新指回刚才那行,继续往下读!如果你强行把这根手指掰到一个全是乱码的空白页(比如指到了 0x00000000),你就会瞬间懵逼死机,这就是 HardFault!”
总结:PC寄存器的值就是下一条要执行的代码的位置,非常重要!!