【经验】如何正确设置EFM8LB1系列8位单片机的堆栈空间?
SILICON LABS推出的EFM8LB1系列8位单片机,具有集成度高、速度快、模拟性能好及体积小等优点,被广泛应用在光模块、电机驱动、工业控制等产品上。最近有软件工程师问,为了让EFM8LB1配合DSP工作, 如何才能扩大它的堆栈空间?本文就将讲解如何正确设置8位单片机EFM8LB的堆栈空间。
图1 EFM8LB1系列片内RAM区
如上图1,是EFM8LB1系列片内RAM区,理论上,EFM8LB1的堆栈可以位于256字节RAM区中的任何位置,深度最多可以扩展到256个字节。
堆栈区域是使用堆栈指针(SP)SFR指定的,SP指向最后使用的位置。 压入堆栈的下一个值放在SP + 1,然后SP递增。 复位将堆栈指针初始化到位置0x07,将压入堆栈的第一个值放置在位置0x08上,该位置也是寄存器组1的第一个寄存器(R0)。那么,如果堆栈不使用默认位置,该如何操作?
Silicon Labs原厂提供的例程在启动配置文件A51中操作,将堆栈分配在片内RAM 0x6F地址处。具体方法如下:
Step-01:给特殊功能寄存器SP命名。
; Standard SFR Symbols
ACC DATA 0E0H
B DATA 0F0H
SP DATA 81H
DPL DATA 82H
DPH DATA 83H
Step-02:给SP指定区域
?C_C51STARTUP SEGMENT CODE
?STACK SEGMENT IDATA
Step-03:给SP定义长度,即该部分将预留空间
RSEG ?STACK
DS 2
Step-04:给SP赋值地址,实现Step-02~ Step-03的规划。
MOV SP,#?STACK-1
通过如上操作,实现了将堆栈空间分配到片内RAM 0x6F的目的。
图2 检查SP分配空间
在编译后,会生成M51文件,查看如图2的“?STACK”的所在的地址,从而再次验证了通过运用Step-01~ Step-04步骤,可以实现将堆栈空间分配到片内RAM 0x6F的目的。
- |
- +1 赞 0
- 收藏
- 评论 0
本文由风起云扬提供,版权归世强硬创平台所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明“来源:世强硬创平台”。
相关推荐
【经验】如何下载、安装、设置Silicon Labs 8位单片机集成开发环境IDE?
Silicon Labs的8位单片机集成开发环境IDE,简单、容易、强大,是C8051F及EFM8等8位单片机软件开发的强大利器!为了让新手能够快速上手IDE,本将详细接收Silicon Labs IDE的下载、安装、设置等方法。
【经验】如何使用中微半导体8位单片机CMS8S6990N的串口配置波特率
中微半导体推出的8位单片机CMS8S6990N采用1T的8051内核,最大24MHz内核运行,集成2路模拟比较器,2路运算放大器,1路可编程增益放大器。本文将介绍如何使用CMS8S6990N的串口配置波特率。
【经验】如何计算8位单片机EFM8LB系列PWM最高输出频率?
在电机驱动、电源发生、可调电压发生等应用中,经常需要PWM波,Silicon Labs推出的高性能、高集成度、小体积、高性价比的EFM8LB系列8位单片机,可广泛应用光模块、电机控制等领域,它支持输出PWM波。本文将详细讲解如何计算EFM8LB系列8位单片机PWM最高输出频率。
【应用】基于双MCU的低成本400G PAM4光模块应用方案
基于双MCU的低成本400G PAM4光模块应用方案采用2个通用MCU,32位的MCU作为DSP的协处理器,8bit的MCU满足多路DAC来控制LD Driver,不但降低了设计难度同时降低了成本。采用多路电源输出解决方案比采用多颗单路电源芯片占用面积更小,且整体成本更低。
【经验】8位单片机EFM8系列的ADC对参考电压Vref引脚设计要求
Silicon Labs的8位单片机EFM8系列,高精度ADC功能时该芯片的一大特点,为了ADC获得准确的采用值,除了正确操作ADC外设外,还需要正确设计参考电压,结合EFM8芯片的特点,介绍参考电压设计需要注意的事项。
【IC】功耗低、高性能AD型8位单片机HC18P110A0/B0,用于测量、马达控制、工业控制、家电类产品等领域
HC18P110A0/B0是芯圣电子推出的AD型8位单片机,内置兼容RISC指令集的PIC内核,拥有1K的ROM、128Bytes的RAM;HC18P110A0/B0拥有2个8位与1个16位的定时/计数器、2路独立的12位的PWM。
8位单片机EFM8的烧录器有哪些?
8位单片机EFM8系列采用C2调试接口,常见的烧录器有:1,官方的EFM8 STK、USB Debug Adapter、ToolStick。2,第三方的U-EC2/6、WizPro200EFM(支持EFM8和EFM32)等。
【经验】如何基于SMBus接口让8位单片机EFM8实现bootloader操作?
Silicon Labs推出的8位单片机EFM8,具有模拟性能好、集成度高、运行速度快、体积小巧等优点,被广泛应用在光模块、电机控制、智能家居等领域。它还支持bootloader功能,而且出厂芯片即可自带boot代码(基于UART的,或基于SMBus的,根据型号而定)。那么在实际操作中,对于EFM8,在实现Bootloader时具体操作步骤是怎样的呢?本文将详细为你解读。
【经验】8位单片机EFM8BB51正确初始化ADC后不工作的问题处理经验
芯科最新推出的8位单片机EFM8BB51,EFM8BB51使用模拟部分功能(比如ADC,比较器),客户往往会忽略AMUXCP的初始化,导致模拟功能不能使用。本文介绍AMUXCP功能的使用。
【经验】如何通过解读M51文件确定EFM8系列的变量、函数定位?
Silicon Labs推出的EFM8系列8位单片机具有集成度高、速度高、体积小等优点,最近有使用的软件工程师询问笔者 “我的变量放哪里了?我的代码是如何分配的?”等问题,本文特做总结:通过解读M51文件确定EFM8系列的变量和函数定位。
【经验】如何让支持SMBus boot功能的8位单片机EFM8进入boot模式?
Bootloader操作带来的好处很明显,即可以在不需要烧录器的情况下,实现代码更新,甚至,基于Bootloader功能,还可以实现远程代码升级。 在实际操作中,对于很有意义的、原厂自带了基于SMBus接口的boot代码的EFM8,如何进入boot模式、从而实现代码更新呢?本文将详细为你解读三种进入boot的模式。
【经验】解决8位单片机EFM8BB51驱动三相电机过零检测不灵敏的问题
对于简单的8位MCU实现,块换向用于驱动电动机。这种驱动方法需要逆变器电路对根据霍尔传感器给出的转子位置,电机相位电角度每120度的电流或者无传感器方法。本文主要解决8位单片机EFM8BB51F16I-QFN20驱动三相电机过零检测不灵敏的问题。
Silicon Labs 8位单片机EFM8BB31 SPI通信调试注意事项
Silicon Labs EFM8BB31是一款资源丰富,高效率,小体积的8位单片机,已被许多用户选用,被广泛应用于消费电子,精密仪器,电源管理,工业控制自动化,智能传感器,汽车控制,安防监控等领域。在开发过程中,经常使用到SPI通信,EFM8BB31支持3线或4线模式的SPI主模式和从模式,在调试SPI通信的过程,有哪些注意事项呢?本文将详细介绍。
【经验】基于EFM8LB的CLU实现25G LANWDM光模块的曼彻斯特编、解码,减少对MCU带宽资源的占用
基于Silicon labs8位单片机EFM8LB的CLU实现硬件曼彻斯特编、解码,好处多多,不仅处理速度快,更能减少对MCU带宽资源的占用,提高MCU执行速率。那么,如何基于EFM8LB的CLU实现25G LANWDM光模块的曼彻斯特编、解码?本文将为你详细解读。
【经验】8位单片机C8051F360如何实现多个SPI通信?
快速与不同配置的多个从设备进行通信,已经成为当前MCU芯片设计中的核心技术点之一。在现有微控制器芯片中spi接口一般只有1个,如何实现多个SPI通信是个问题。本文将介绍Silicon Labs的8位单片机C8051F360实现多个SPI通信的方法。
电子商城
品牌:SILICON LABS
品类:Wireless Gecko SoC
价格:¥8.1764
现货: 103,878
现货市场
服务
可定制ATD TE Dehumidifier的冷却功率:20~220W;工作电压:12V(DC)/ 220V(AC);控温精度:≤±0.5℃;尺寸:冷面:20*20~500*300;热面:60*60~540*400(长*宽;单位mm)。
最小起订量: 1 提交需求>
拥有IC烧录机20余款,100余台设备,可以烧录各种封装的IC;可烧录MCU、FLASH、EMMC、NAND FLASH、EPROM等各类型芯片,支持WIFI/BT模组PCBA烧录、测试。
最小起订量: 1 提交需求>
登录 | 立即注册
提交评论