如何优化单片机C程序及堆栈溢出、RAM空间优化.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《如何优化单片机C程序及堆栈溢出、RAM空间优化.doc》由会员分享,可在线阅读,更多相关《如何优化单片机C程序及堆栈溢出、RAM空间优化.doc(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品文档,仅供学习与交流,如有侵权请联系网站删除如何优化单片机中的C程序 堆栈溢出:在调试程序的时候有事会碰到堆栈溢出的情况,堆栈为什么会溢出呢,个人总结主要有以下几点:a、是否有修改堆栈指针;c语言编写者一般不会主动修改堆栈指针的,除非在特殊情况下才会涉及到与此相关的操作,如在扩展区独立开辟一段存储空间用于压栈时数据的存储区。b、是否嵌套的数据保护的内容超过堆栈; 此种情况发生的几率比较多,个人估计占到80%左右,这种情况就是RAM本就不是很充足,此时又发生了中断嵌套,上一个中断占用的现场保护空间还没有释放,另一个中断又要重新占用大量空间进行现场数据的保存。这样可定会造成空间不够用,堆栈溢出
2、是很显然的。建议避免中断嵌套(方法1:可以再优先级低的中断中先关掉优先级高的中断,这或许会影响程序的执行效果。方法2:换用RAM比较大的IC或扩展RAM,这种方法要提高成本。)c、程序中进行的算术运算比较多计算机最擅长的运算就是加法运算,在程序中弄了好多浮点运算、求余运算、除法运算,而且数据量很大,运算过程中是要占用很多空间的,建议能优化算术运算的尽量优化,下面介绍如何优化程序,个人总结加上网上搜索。优化程序:1、选择合适的算法和数据结构应该熟悉算法语言,知道各种算法的优缺点,具体资料请参见相应的参考资料,有很多计算机书籍上都有介绍。将比较慢的顺序查找法用较快的二分查找或乱序查找法代替,插入排
3、序或冒泡排序法用快速排序、合并排序或根排序代替,都可以大大提高程序执行的效率。.选择一种合适的数据结构也很重要,比如你在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多。数组与指针语句具有十分密码的关系,一般来说,指针比较灵活简洁,而数组则比较直观,容易理解。对于大部分的编译器,使用指针比使用数组生成的代码更短,执行效率更高。但是在Keil中则相反,使用数组比使用的指针生成的代码更短。2、使用尽量小的数据类型能够使用字符型(char)定义的变量,就不要使用整型(int)变量来定义;能够使用整型变量定义的变量就不要用长整型(long int),能不使用浮点型(float)变量就不
4、要使用浮点型变量。当然,在定义变量后不要超过变量的作用范围,如果超过变量的范围赋值,C编译器并不报错,但程序运行结果却错了,而且这样的错误很难发现。在ICCAVR中,可以在Options中设定使用printf参数,尽量使用基本型参数(%c、%d、%x、%X、%u和%s格式说明符),少用长整型参数(%ld、%lu、%lx和%lX格式说明符),至于浮点型的参数(%f)则尽量不要使用,其它C编译器也一样。在其它条件不变的情况下,使用%f参数,会使生成的代码的数量增加很多,执行速度降低。3、使用自加、自减指令通常使用自加、自减指令和复合赋值表达式(如a-=1及a+=1等)都能够生成高质量的程序代码,编
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 如何 优化 单片机 程序 堆栈 溢出 RAM 空间
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内