keil 给数组赋值 另一个变量的值不明改变

2025-03-06 11:41:53
推荐回答(3个)
回答1:

51的内部RAM(包括idata)总共才256个字节,还要保留一部分给堆栈使用,实际可用的也就200出头点,其他的变量和你的结构都在这个范围内,如果结构太大,那当然会侵占到其他变量了。
你可以将这个结构变量定义到外部RAM中,我记得F120有几K的外部RAM的。
单片机资源都是很紧张的,一定要精打细算啊。
你看看最后编译出来的xdata共占用了多少,就是xdata= xxxx
编译当然不会报错,你需要在项目文件中,告诉KEIL你有几K 的XRAM。这个单片机我记得只有8K的外部RAM,也就是8192个字节,到不了五位数啊。所以在实际运行时,外部RAM赋值超过了8K后,又从外部RAM的0地址开始赋值了

回答2:

另外一个全局变量是谁?怎么定义的?

项目配置里面要根据实际芯片以及外围配置设置合理的地址限制范围,要不然Keil怎么知道你超界了没有?

xxx结构体的单位大小是多少?

回答3:

你有什么东西需要200这么多?不可以放在code里面么?