完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
主要是SUB R0,R0,#0x20和STM R0,{R4-R11}这两句话没理解清楚。 当PSP不为0的时候,就让PSP指向的位置向下移动0x20,接着就在PSP+0x20这个位置开始向下入栈?那中间不是空了一截的栈空间?求指导 |
|
相关推荐
1个回答
|
|
看图给你讲
1、如图所示,堆栈的栈顶地址为0X20000200,栈底地址为0X20000000。 2、此时PSP在栈顶0X20000200,我们暂定PSP此时不为0,即要将R4-R11入栈。 3、首先STM R0,{R4-R11}将R4-R11入栈,你要了解STM指令是怎么执行的,在Cortex-M系列中,STM指令等同与STMIA,STMIA的意思存储一组寄存器,注意,重点来了:STMIA指令每存储一个寄存器,地址就要增加,以便存储下一个寄存器!我们这里要存储R4-R11共8个寄存器,每个寄存器4字节,八个寄存器就是8*4=32=0X20字节,所以我们就需要计算出存储R4-R11这8个寄存器的基地址,就是用0X20000200-0X20=0X200001E0。从0X200001E0开始存储R4-R11寄存器。即:R4存储在0X200001E0,那么R5就存在0X200001E4 的位置,以此类推! 4、计算基地址用的程序就是:SUB R0,R0,#0X20。SUB是减法,即将0X20000200减去0X20。 5、注意STM32的堆栈是向下增长的! |
|
|
|
只有小组成员才能发言,加入小组>>
663 浏览 0 评论
1083 浏览 1 评论
2456 浏览 5 评论
2784 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2619 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
640浏览 9评论
637浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
767浏览 6评论
611浏览 5评论
652浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 17:13 , Processed in 0.706722 second(s), Total 47, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号