Nuvoton Keil技巧篇5 -- 栈的使用率

日期2025-08-22

       最近经常有攻城狮咨询,使用我们的MCU时,如何知道当前使用的栈大小情况呢?针对这个问题,我也在网上查阅了一些方法,对比来看,使用填充法是最直观的。我这边通过使用新唐M480来编写程序,计算当前栈使用情况,各位有更好的办法也欢迎推荐给我,三人行必有我师焉。

1、首先确定当前设定的栈区域大小,比如在startup文件上设定0x800,这个大小可以根据实际使用的情况修改大小。

 

 

2、调试的时候设计优化等级最高,方便调试验证。

 

 

3、栈使用是栈顶地址向下使用的,所以我们要确认下栈顶地址。这个可以通过debug查看SP指针地址,这个就是栈顶地址。

 

 

4、定义栈顶和栈底地址

栈顶地址 = 栈底地址+栈大小

 

 

5、给栈空间填写固定数据,方便后续查看栈使用情况

 

 

6、编写计算栈使用情况函数

 

 

7、验证
赋初值地址范围:0x20000038 -0x20000838写0x11111111

 

 

8、执行程序

 

 

9、打印log

 

 

       查看发现使用的地址范围是0x20000770 -0x20000838,计算实际使用是200个字节,符合log结果。这里要注意下,我是单步执行的,如果在计算程序下面由增加其他程序,那这个结果就会不准确,最直观是通过debug去查看哪些空间未使用。

 

=

★方案内容均由个人提供,与平台无关,如有违法或侵权,请联系大大芯方案专属信箱