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.

[参考译文] 编译器/MSP430F5529:如何从用户输入64位字符串数据?

Guru**** 2606725 points
Other Parts Discussed in Thread: MSP430F5529, MSP-IQMATHLIB

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/654087/compiler-msp430f5529-how-to-input-64-bit-string-data-from-user

部件号:MSP430F5529
主题中讨论的其他部件: MSP-IQMATHLIB

工具/软件:TI C/C++编译器

您好,

我正在使用MSP430F5529启动板,希望以字符串格式输入PLL算法的频率。 由于频率都是在MHz范围内,我必须以Hz的频率工作,所以我需要处理64位数据。 以字符串格式输入频率的想法是,我可以提取分数部分并将其变为整数(例如,123.45.6789万 MHz到1.23456789亿 Hz)。 我正在尝试在CCS 7.2 0中对算法进行编码,这里它不能识别“字符串数据类型”。 另外,由于F5529是16位处理器,是否有办法在它中进行64位运算?

请帮助!!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    同样,当您的头部只能做1位数时,您也可以做4位数的算术。 你把东西写下来。 编译器可能支持64位类型(长)

    至于另一个,您并不是告诉我们输入字符的方式,而是查看string.h中的函数

    在最糟糕的情况下,加载您的所有字符,只需自己创建数字即可。


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

    您好Soumit:

    MSP430F5529具有32位x 32位硬件乘法器模块(MPY32),CCS编译器支持64位(长,带符号或无符号)数据类型。 如 MSP430优化C/C++编译器17.9 v.0.STS用户指南中的表5-1所示

    对于您的应用,您可能对 定点数学库(MSP-IQMATHLIB)感兴趣。


    此致,

    詹姆斯

    MSP客户应用程序

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

    您好,

    感谢您的即时响应。 我会为我的应用程序尝试定点数学库。 这很有帮助。 一个查询仍然是使用字符串。 在Visual Studio中编写C代码时,我使用字符串数据类型输入用户的频率。 但在MSP430中,在实施时,我发现不支持字符串数据类型,也不支持"strtod"功能。 我已经发布了我编写的代码。 请帮助我了解如何在MSP430中实施。

    /*用户必须提供I/O值*/
    cout <<“请提供(MHz)输入参考频率:";
    string inputVal;
    cin >> inputVal;
    
    char *inStr1 = new char[inputVal.length()+1];
    strcpy_s(inendStr1, inputVal.length()+1,inputVal va.putchar
    
    char* loc1 = strchr (inStr1,'.');
    int count1 = 0;
    if (loc1 != NULL)
    {
    long int mantissa1 = strtod (loc1 + 1,&endptr1); //将尾数部分与十进制数分开,例如:23.456 :尾数456
    long int整数1 = strtod (inStr1,&endptr1); //将整个部分与小数分隔开,例如:23.456 :整数23
    long int var1 =尾数1;
    }
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    strtod()包含在内,您需要包括stdlib.h 但这不是你想要的。 您需要strtoul()将字符串转换为长无符号长字符,即32位。 你可能需要自己滚动64位长。 我建议您选择K&R,它有一个可以长期修改的atoi()实现。