TI中文支持网
TI专业的中文技术问题搜集分享网站

TM4C123GH6PZ的几个问题,求解答

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的选项,有时候只编译增量代码会造成程序出错。

 

   

赞(0)
未经允许不得转载:TI中文支持网 » TM4C123GH6PZ的几个问题,求解答
分享到: 更多 (0)