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.

[参考译文] CCS/MSP430F5528:在调试模式下上载固件时,SQRT函数导致程序失败

Guru**** 2616675 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/654663/ccs-msp430f5528-sqrt-function-causes-my-program-to-fail-when-firmware-is-uploaded-in-debug-mode

部件号:MSP430F5528

工具/软件:Code Composer Studio

我正在设备中使用MSP430进行光测量。  我进行了20次测量并将其存储在阵列中。  我想计算测量值的标准偏差,但sqrt函数存在问题。  我包括math.h,在该函数中调用sqrt:

双标准偏差(int average,int measurements [],int positions){//kg 1/8/2017计算数据集的标准偏差

	双偏差= 0;
	int i = 0;

	for (i = 0;i <= positions;i++){
		measurements [i]= measurements [i]- average;
		measurements[i]= measurements [i]* measurements [i];int i = 0;
		+
	

	deviation)
	偏差= sqrt (偏差);

	返回偏差;

} 

#include <mathing.h>位于我的.c文件的标题。

我使用的是CCS v 5.5 编译器4.1 t.11,输出格式为eabi。  优化级别设置为0。  当我注释包括sqrt的行时,所有内容都按预期编译和工作。  包括sqrt时,调试模式将自动运行,当我尝试暂停它时,我收到错误。  断开调试器时,设备顶部的输入和输出工作正常。

有几个奇怪的地方是sqrt文本是紫色的,当我查找声明时,有两个选项:从编译器4.1 9,和从4.2 1

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    测量[]是否可以容纳测量的平方[]? 这可能会使偏差为负值。

    尝试在main开头添加double s = sqrt(2)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我应该提到这个,我用4替换了sqrt内的偏差变量,并注释掉了方形测量线,得到了相同的结果
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    听起来像是一个软壳数学库。 这实际上应该在MSP430讨论中移动。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    I am using CCS 5.5 v,compiler 4.1 t.9 with an output format of eabi (报价用户="Kyle Goble">我正在使用CCS在线驱动程序编译器T.T.9,输出格式为eabi  [/引述]

    这些都是相当旧的版本。 您是否可以尝试使用更新版本的CCS和编译器?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是一个旧项目,我想稍微修改一下。 我在使用较新版本的CCS和编译器时遇到了困难,因为使用相同的未经修改的项目文件和较新的工具,代码将不适合MSP430

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否需要在项目中包含的文件列表中手动添加math.h文件? 我认为它是编译器的一部分,但这可能是我的问题。 我也没有将其链接到我的文件搜索路径上。 除了在我的.c文件的标题中放置#include <mathing.h>之外,我还需要做什么吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Kyle Goble 说:
    除了在我的.c文件的标题中输入#include <mathing.h>之外,我还需要做什么吗?[/QUOT]

    对于典型的CCS项目,您不应该再做什么了。 默认情况下,应将此文件所在的目录(编译器的/include目录)添加 到项目的编译器的include路径,因此编译器将在该路径中搜索/查找include文件。 您可以通过转到“项目属性”->“生成”->“编译器”->“包括选项”来检查路径是否已设置。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回复。 我正在检查目录,除了我自己添加的路径之外,还有这两个路径:"${CCS_base_root}/MSP4S/include"和"${CG_tool_root}/include"。 这两种编译器都不包括选项,但我不确定。 我错过了什么吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    ${CG_TOOL_ROOT}/INCLUDE指向编译器工具根目录中的/INCLUDE目录,该目录是math.h所在的位置。 所以这看起来不错。