我用TM4C123GH6PZ来调四轴,在程序里面定义了几个数组,数组获得初始值后程序就一直未改变其值,但是在线仿真看数据时发现很多数组的值会莫名其妙的改变,而且数据一直都在变化,值都是e的多少次方了。然后我又试了下,又定义几个普通变量,将这些数组的值赋一次给变量,变量的值不会出错,但是数组的值还是会出错,然后我又在循环里面一直将数组的值给变量,然后就都出错了,这是什么原因。弄了一天了都找不到原因,麻烦工程师帮我下,非常感谢。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我用TM4C123GH6PZ来调四轴,在程序里面定义了几个数组,数组获得初始值后程序就一直未改变其值,但是在线仿真看数据时发现很多数组的值会莫名其妙的改变,而且数据一直都在变化,值都是e的多少次方了。然后我又试了下,又定义几个普通变量,将这些数组的值赋一次给变量,变量的值不会出错,但是数组的值还是会出错,然后我又在循环里面一直将数组的值给变量,然后就都出错了,这是什么原因。弄了一天了都找不到原因,麻烦工程师帮我下,非常感谢。
谢谢你的回答。。。数组在刚使用完后值都是对的,但是后面运行一会就出错了,后面一直没改变过他的值。我程序里用了5个定时器,一个用作定时,其他4个用作捕获,几个定时器的设置都没问题,我在程序里只使用一个定时器,其他4个用于捕获的都不用,数组的值就不会出错,但是我使用那4个定时器的一个时,数据就直接出错了,我在定时器中断中什么事都没做,所以不会改变数组的值,但是数组的值却出错了。
那就看看,是不是你的其他四个定时器冲突了,导致程序跑飞了。你用主定时器持续的闪烁一个LED或者执行其他明显的标志,看看是否出现其他异常变化。
不是定时器冲突,我用了5个定时器,有一个一直都在工作,没问题。我换了个启动文件,现在又没错了,不知道为什么,出错那个启动文件我用了差不多一年了,都没出过问题,现在多用个定时器就出错了。
启动文件不是唯一的么,换什么换,汗,TI每个型号的外设都是不通的,最好选择对应芯片的启动文件。
找到原因了,是启动文件里面的堆栈设置的太小了。应该是中断嵌套比较多,堆栈小了,你知道堆栈最多设置多大吗?
堆和栈都是在RAM中的,应该不超过RAM的大小就可以的。