#单片机##嵌入式编程##RTOS##程序员#
1、前言
大部分从事STM32单片机嵌入式开发工作N年的人,项目也做了N个,是否曾经程序无缘无故跑飞了?系统无缘无故地重启?是否无缘无故发生“HardFault”呢?是否试着把栈调大一些,问题就少了,再调大一些,问题就不发生了呢?这些问题都是对栈大小的拿捏问题,即是否配置了合适的栈大小?那么多少算合适呢?有没有量化标准呢?关于RAM分配使用问题可以参考《从事开发多年,分不清STM32的RAM使用情况?一图弄清它 》包含已分配使用部分与剩余多少均有测试方法。
2、量化栈使用率
如何量化栈使用率,我们通常使用百分比来量化某些参数,比如考试100分满分60分及格,这里我们也使用百分比来量化栈使用率。量化公式如下:
栈使用率=100X历史使用栈大小/分配栈大小
注意:下文计算栈使用率时计算单位为字而不是字节(即四字节为一个计量单位)。
特别规定,系统连续运行一定时间(如24小时)后“栈使用率”不超过60%为及格。要注意的是这里我们是以不超60%为及格与考试不一样哟,与考驾照更不一样。要是达到90%及以上就等着系统崩溃吧。