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/TMS320F28335:我正在使用 string.h 上提供的函数、该函数的 dosn#39;t 工作方式与我想的不一样

Guru**** 2952510 points

Other Parts Discussed in Thread: TMS320F28335

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/952353/ccs-tms320f28335-i-am-using-a-function-provided-at-string-h-that-it-dosn-t-work-like-i-would-like

器件型号:TMS320F28335

工具/软件:Code Composer Studio

大家好、  

我们收到了客户的询问、要求获得有关 CCS 和 TMS320F28335器件的支持。 为了让我不会错过任何信息、我将复制下面的查询。

"

当我尝试转换数据并将其发送到串行时、似乎我使用的是 string.h 中提供的函数、该函数无法正常工作。 代码如下所示:
中断空 Task_2 ()
{
DefaultType fZOH36、fBlock13、fZOH34、fZOH37、fZOH38、 fZOH39;

PS_MaskIntr (M__INT14);

fZOH39 = fGblADC1_10;
fZOH38 = fGblADC1_11;
fZOH37 = fGblADC1_8;
fZOH34 = fGblADC1_9;
{
静态 int contador = 0;
静态 char mensaje_1[17]="0000000000000";
静态 char Vin[7]="0000000";
静态 char Vout[7]="0000000";
静态字符 Iin[7]="0000000";
静态字符 Iout[7]="0000000";
fBlock13=1;
if (contador >=4){
contador = 0;
}
否则{
contador++;
}
switch (contador){
情况0:
sprintf (Iin、"%f"、fZOH39);
sprintf (Iout、"%f"、fZOH38);
sprintf (Vin、"%f"、fZOH37);
sprintf (Vout、"%f"、fZOH34);

strcpy (mensaje_1、"ADC:CH1:");
strcat (mensaje_1、Vin);
Mensaje_1[15]='\n';
Mensaje_1[16]='\0';

我认为这是我使用 sprintf 和连接的方式、因为我删除 mensaje_1[15]='\n';
Mensaje_1[16]='\0';并且只使用1或2等数字、存储 SCIA 失速的变量不会变得疯狂。
内存浏览器还显示:

Mensaje_1.
A D C:C H 1:0。 7 6 4 6 4 。
Mensaje_2
A D C:C H 2:0。 7 6 5 3 8 1 2

"

感谢您的参与、并期待您的善意回应。

此致、

梅纳德

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

    首先、您的初始化不允许字符串末尾的'\0'、但这应该是可以的。

    其次、这是一个很好的机会

    sprintf (Vin、"%f"、fZOH37);

    在 Vin 中存储7个以上的字符、并对其旁边的变量进行 clobber 处理。

    如果 Vin 大于7个字符,strcat()比您想象的要长,并且也是对内存进行编号。

    始终为您的弦留出足够的空间、不要忘记留下的细微差别。

    我建议您查看 snprintf(),它有助于防止这些超限,但将所有的32个字符串都设置为可以解决这个特定的问题。 此外、也可以使用字段宽度进行检查、例如、使用%7.5f 也可以防止这种情况发生。