1 主程序使能了FPU,在进行浮点运算时,还能不能定义双精度变量?
2 我在主程序前定义了20个全局变量,当调换变量排序时,会得到不同的结果,为什么?内存不够吗?
3 我使用了两中断程序,同时使能,一为串口接收,在串口里梅40ms接收16个字节,共接收20s,然后对这些字节进行计算处理,有大约500us的计算量,一为系统定时器,每40ms在定时器中断程序里全局变量 i 加1,为什么必须要20s后,我的全局变量i才开始每40ms加1?
Michael Sun:
1.可以的。
2.正常来说变换变量顺序不会印象结果,只是每个变量分配的地址不一样。如果得到不同结果则程序可能存在问题,检查一下堆栈设置,数组操作是否越界等。
3.能否把程序贴上来看一下?全局变量的名字就是i吗?程序中还有没有别的地方也定义为i的?
Triton Zhang:
1 主程序使能了FPU,在进行浮点运算时,还能不能定义双精度变量?
主程序使能了FPU单元,程序中任然可以定义双精度浮点变量。需要注意的是仅仅在程序中使能FPU单元是不够的,还需要使能编译器的FPU功能,否者编译生成不了FPU的指令。
2 我在主程序前定义了20个全局变量,当调换变量排序时,会得到不同的结果,为什么?内存不够吗?
全局变量的定义位置不会影响到程序执行的结果,但是会影响到全局变量的分配位置。在编译其中选择合理的优化等级,可以让编译器优化变量的位置。另外,带初始化的全局变量和不带初始化的全局变量是分配在不同位置的。建议你在编译之前先清除之前的编译结果,或者用Build all的选项,有时候只编译增量代码会造成程序出错。