Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 数据空间溢出_C_Embedded_Microcontroller_Keil_8051 - Fatal编程技术网

C 数据空间溢出

C 数据空间溢出,c,embedded,microcontroller,keil,8051,C,Embedded,Microcontroller,Keil,8051,我在keil中使用C8051F120的不同库编写了c代码。但在某些情况下,当我在主程序中使用库函数时,它工作得很好,但当我在定时器中断例程中使用该函数时,我的数据空间就会溢出 有谁能告诉我这背后的原因是什么,为什么数据空间会溢出 总数据空间:128字节 在main中使用时:119字节 在计时器例程中使用时:139字节溢出 我已经分析了地图文件,但无法获取它。所以请帮我解决这个问题 有谁能告诉我这背后的原因是什么,为什么数据空间会溢出 默认的小内存模型将变量放入数据内存空间——总共只有128字节

我在keil中使用C8051F120的不同库编写了c代码。但在某些情况下,当我在主程序中使用库函数时,它工作得很好,但当我在定时器中断例程中使用该函数时,我的数据空间就会溢出

有谁能告诉我这背后的原因是什么,为什么数据空间会溢出

总数据空间:128字节

在main中使用时:119字节

在计时器例程中使用时:139字节溢出

我已经分析了地图文件,但无法获取它。所以请帮我解决这个问题

有谁能告诉我这背后的原因是什么,为什么数据空间会溢出

默认的小内存模型将变量放入数据内存空间——总共只有128字节

一个可能的解决方案是将编译器切换到大内存模型,将变量放入扩展数据内存。C8051F120上的扩展数据明显大于8KB。请注意,这会带来性能损失,但对于运行频率高达100MHz的MCU来说,这几乎不重要

警告:如果扩展数据初始化量超过一定量,C8051Fxxx会因为看门狗而陷入启动代码中。看门狗超时时间比从闪存加载具有值的扩展数据所需的时间要短。在大内存模型中,这可能会对您不利。解决方法是使用正确处理WDT的启动代码或简单地禁用WDT

有谁能告诉我这背后的原因是什么,为什么数据空间会溢出

默认的小内存模型将变量放入数据内存空间——总共只有128字节

一个可能的解决方案是将编译器切换到大内存模型,将变量放入扩展数据内存。C8051F120上的扩展数据明显大于8KB。请注意,这会带来性能损失,但对于运行频率高达100MHz的MCU来说,这几乎不重要


警告:如果扩展数据初始化量超过一定量,C8051Fxxx会因为看门狗而陷入启动代码中。看门狗超时时间比从闪存加载具有值的扩展数据所需的时间要短。在大内存模型中,这可能会对您不利。解决方法是使用正确处理WDT的启动代码,或者干脆禁用它。

如果看不到任何代码,很难判断。请显示两个版本,包括被调用库函数的代码。还请显示映射文件,至少是两种情况下与堆栈和中断堆栈相关的部分。由于堆栈大小太小,因此会溢出。当您的程序位于堆栈深处接近溢出时,任何中断都会导致更深的堆栈使用,因此您可能会出现溢出。不要在中断中调用此函数,只需设置一些标志或增加堆栈。感谢大家对我的帖子发表评论,并与我分享您的知识。@tilz0R@YunnoschHard在没有看到任何代码的情况下告诉我。请显示两个版本,包括被调用库函数的代码。还请显示映射文件,至少是两种情况下与堆栈和中断堆栈相关的部分。由于堆栈大小太小,因此会溢出。当您的程序位于堆栈深处接近溢出时,任何中断都会导致更深的堆栈使用,因此您可能会出现溢出。不要在中断中调用此函数,只需设置一些标志或增加堆栈。感谢各位对我的帖子发表评论,并与我分享您的知识。@tilz0R@yunnoscht感谢您与我分享您的知识,这对我来说非常有效。我把我的大内存模型结构放入扩展数据中,它工作了。谢谢你和我分享你的知识,它对我真的很有效。我把我的大内存模型一样的结构放入扩展数据,它工作了..谢谢