最近在使用freeRTOS,但是在使用过程中遇到全局变量自动变化的现象,这个全局变量只在一个任务中被读取和改写,其他地方都没有使用到,然而在全速运行时,却在不断变化哪位大神告诉我是怎么回事啊?
这个问题困扰了我好久,现在终于解决了,原来这种现象不是操作系统的问题,而是启动文件里面堆栈初始化有问题,这个启动文件是我从以前的工程中拷贝过来的,在设置堆栈的部分没有更新,导致堆和栈重叠,一旦跑起来,就会把一部分对空间当做栈使用了,所以全局变量会自动变化,实际上是程序不断的进栈出战导致的。 下面是在使用的.s文件:
下面是原版的.s文件: