电子产业
数字化服务平台

扫码下载
手机洽洽

  • 微信小程序

    让找料更便捷

  • APP

    随时找料

    即刻洽谈

    点击下载PC版
  • 公众号

    电子元器件

    采购信息平台

  • 移动端

    生意随身带

    随时随地找货

  • 华强商城公众号

    一站式电子元器件

    采购平台

  • 芯八哥公众号

    半导体行业观察第一站

新手必看 堆栈指针在单片机当中的作用

来源: 作者:华仔 浏览:1186

标签:

摘要:与单片机有关的知识点错综复杂,并且对于新手来说,想要在短时间内掌握这些概念和技术并对其进行归类汇总是较为困难的。因此在学习过程中小编建议大家从一小部分开始学起,熟悉之后再进行下一部分。在本文中,小编给就将为大家介绍当中有关堆栈指针的相关概念。 堆栈指针sp在片内RAM128B中开辟栈区,并随时跟踪栈顶地址。它是按"先进后出"的原则存取数据。开机复位后,单片机栈底地址为07H。 主要用来保存临时数据

与单片机有关的知识点错综复杂,并且对于新手来说,想要在短时间内掌握这些概念和技术并对其进行归类汇总是较为困难的。因此在学习过程中小编建议大家从一小部分开始学起,熟悉之后再进行下一部分。在本文中,小编给就将为大家介绍当中有关堆栈指针的相关概念。 堆栈指针sp在片内RAM128B中开辟栈区,并随时跟踪栈顶地址。它是按"先进后出"的原则存取数据。开机复位后,单片机栈底地址为07H。 主要用来保存临时数据,局部变量和中断/自程序的返回地址。堆栈指针总是指向栈顶元素。所以数据入栈的时候,堆栈指针先加1,再压栈。向上增长方式与计算机的方式一样。 出栈的时候先弹出数据,堆栈指针再减1。 如果堆栈的实现是往上长的(就是说往顶的方向长,其实质是栈底是定死的不能动,入栈的东西只能不断往上叠,这就像在书桌上放书一样,桌底是定死的,所以书只能一本一本地往上堆,往上长),计算机内部的堆栈的实现采取的就是这种模式,所以就得像你说的那样,“先修改指针,然后插入数据,出栈时刚好相反”,因为堆栈指针指向的总是栈顶元素,栈底不能动,所以数据入栈前要先修改指针使它指向新的空余空间然后再把数据存进去,出栈的时候自然相反。 然而,如果堆栈的实现是往下长的(就是说每压一个元素入栈,栈底就自动下移一个元素的位置,其实质就是这种堆栈模型是一个“无底洞”型),这个时候,栈顶就变成了定死的,就可以先压入元素,然后再修改指针。因为栈底是无限的,压入一个元素,新的元素就取代先前的栈顶元素占据栈顶的位置,那么先前的指向栈顶元素的指针这个时候就该修改让它指向这个新的栈顶元素了。
型号 厂商 价格
EPCOS 爱普科斯 /
STM32F103RCT6 ST ¥461.23
STM32F103C8T6 ST ¥84
STM32F103VET6 ST ¥426.57
STM32F103RET6 ST ¥780.82
STM8S003F3P6 ST ¥10.62
STM32F103VCT6 ST ¥275.84
STM32F103CBT6 ST ¥130.66
STM32F030C8T6 ST ¥18.11
N76E003AT20 NUVOTON ¥9.67
Baidu
map