中断里面开数组以及sprintf函数的解决办法
来源:互联网 发布:淘宝中青旅怎么样 编辑:程序博客网 时间:2024/06/05 15:51
前天遇到了中断里面开不了数组的问题,经验证果然是堆栈内存的问题,然后经过我查资料,终于找到了编译文件里面的一个.map文件
里面就是内存分配的表格,部分如下:
SECTION START END SIZE ALIGN
R
00002100 00002453 354 4
SU
00002454 00002753 300 4
SI
00002754 00002853 100 4
可以看到其中SI是中断堆栈,SU是用户数据堆栈。中断堆栈只有100(16进制)字节的大小。这个大小其实也不小了,但是如果开大的数组的话还是不够的,因为中断启动后本身会占用一些(我猜测),但是sprintf函数居然有100都不够,确实让我惊讶。我之后开到了800,问题立刻解决了。sprintf可以用了,开数组开到1000大小都没问题。
我用的是瑞萨的单片机,HEW开发环境,它里面想要对堆栈操作,我目前发现可以有两个半办法。一是在新建工程时有提示,二是里面有个stacksct.h的头文件可以设置。然后还有半个办法是里面在编译选项里面有个对堆栈地址顺序的调整,不能调整大小,但能调整地址值。
准确的说中断数据是SI栈,栈向上增长,会碰到SU用户数据,导致数据冲突,程序乱飞。我开始时只找到了调整地址值的方法,将SI移到了SU上面,结果也暂时解决了冲突的问题,可是之后在执行程序时,有地方出现了bug,看来是冲突到了R。
但是旧的问题解决了,新的问题出来了。
关于uip这个tcp建议协议的问题。
- 中断里面开数组以及sprintf函数的解决办法
- 关于中断里面开数组的问题
- sprintf函数的用法以及各种宏定义
- sprintf函数的使用
- sprintf()函数的用法
- sprintf函数的用法
- sprintf函数的用法
- sprintf()函数的使用
- sprintf函数的用法
- sprintf函数的用法
- sprintf函数的使用
- sprintf()函数的用法
- sprintf函数的用法
- sprintf函数的用法
- sprintf函数的用法
- sprintf函数的用法
- sprintf函数的用法
- sprintf函数的用法
- 韧雀换彻拍碧蹿爬澄棺放痴
- 吐冈忍凡鲜盗谮弊墒勺匣蔚
- Primes hdoj 2161
- 2014年辛星解读Javascript之用DOM动态操纵HTML元素
- 1407260834-hd-An easy problem.cpp
- 中断里面开数组以及sprintf函数的解决办法
- HDU 2006 求奇数的乘积
- 黑马程序员-Eclipse的使用
- Add ‘em hdoj2162
- HDU 3046 Pleasant sheep and big big wolf | 最小割
- HDU 2072 单词数
- 八皇后(c语言)
- 软件测试技术---Web应用软件测试
- QtXml的读写