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/LAUNCHXL-F28069M:ltoa memcpy 问题

Guru**** 2611705 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/690960/ccs-launchxl-f28069m-ltoa-memcpy-problem

器件型号:LAUNCHXL-F28069M

工具/软件:Code Composer Studio

大家好、

我应该将整数参数转换为 ASCII、并通过 SCIA 发送、但我想内存有一些问题。 我测试了一个示例、以检查它是否正常工作。  

#include 

long abc =15;
char qdataA[16]="0"; 

if (sendParameterToPc = 1)
{
ltoa (abc、qdataA);
} 

因此结果如下所示:

当我使用“Step Inta (F5)”时,代码卡在这里:

它是 memcpy.c 文件。

/ /*
memcpy */
* */
/*版权所有(c) 1993 Texas Instruments Incorporated */
/* http://www.ti.com/                                                       */
* 如果


满足以下条件*/*/*,则允许以源代码和二进制形式重新分发和使用,无论是否进行了*/*修改: */
* */
* 重新分发源代码必须保留上述版权*//*
声明、此条件列表和以下免责声明。 */
* */
* 二进制形式的再发行必须复制上述版权*/
* 请注意,本条件列表和以下免责声明位于*/*中
随*/
/*提供的文档和/或其他材料 分配。 */
* */
* 德州仪器公司的名称和名称均不是*/*
其贡献者可用于认可或推广产品*//*
源自此软件,未经过特别事先编写*/
* 权限。 */
* /*
本软件由版权所有者和贡献者提供。///*
"按原样"提供,

且不承认任何明示或暗示的保证,包括但不限于对适销性和对*/*特定用途适用性的暗示保证。 在任何情况下、对于
任何直接、间接、偶然、*
//*特殊、模范、 或间接损害(包括但不
限于*///*采购替代产品或服务;丧失使用、*/
/*数据或利润; 或业务中断)、但出于

任何*//*责任理论、无论是合同、严格责任还是侵权行为*///*(包括疏忽或其他原因)、即使
被告知可能会发生此类损坏、也是出于任何原因。 */
* */
********* /#include


void *memcpy (void *to、const void *from、size_t n)
{
将寄存器 char * RTO =(char *)更改为;
从以下位置删除了寄存器 char * rffrom =(char *);
寄存器 unsigned int rn;
寄存器 unsigned int nn =(unsigned int) n;

/********* /
/*复制到前64K。 最后比较字符数*/
/*以 n 大小移动。如果它们相等,则返回。 否则继续*/
/*复制其余字符。 *
/********* /
对于(rn = 0;rn < nn;rn++)* RTO +=* rffrom ++;
if (nn == n) return (to);

/********* /
/*使用嵌套循环编写大小大于64K 的 memcpy 以使用*/
// BANZ 函数。 *
/********* /
{
寄存器 unsigned int upper =(unsigned int)(n >> 16);
注册 unsigned int tmp;
对于(tmp = 0;tmp <上部;tmp++)
{
对于(rn = 0;rn < 65535;rn++)
*RTO++=*rffrom ++;
*RTO++=*rffrom ++;
}


返回(到);
}

文件包括在这里:

sprintf 也是如此(使用#include )、因为它会占用较大的内存空间。 ltoa 可能仍然很大、但这不是浮点值、只是整数(或 long、因为 stdlib.h 显示"_code_access int    ltoa (long val、char * buffer);")。

我没有内存使用方面的资格。 我应该怎么做?

谢谢你。

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

    rdataA[charcounter-1]=SciaRegs.SCIRXEMU;
    integerBuffer= atoi (rdataA);
    
    
    

    我还有 ltoa 这个。 阿托伊和阿托瓦同时工作。 算法问题。 当我重新配置这些组件时、问题就会得到解决。

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

    感谢您将解决方案发布到您的问题。