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.

[参考译文] RM48L952:当中断被启用时、错误的浮点算术结果

Guru**** 2482105 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/709492/rm48l952-erroneous-floating-point-arithmetic-results-when-interrupts-are-enabled

器件型号:RM48L952

你好

启用中断时、我会定期看到一些错误的浮点算术结果。  

显然、这些计算是在从主循环定期调用的函数中完成的。 在大多数情况下、结果是正确的、但我定期看到、当使用相同的乘法器/乘法器/等时、结果变为零
 
我的例程执行几个浮点乘法、除法等
 
我注意到、当我禁用中断时、结果是正确和一致的。

代码片段的示例如下:

静态领域32A;
静态领域32 B;

A = 100.0 * 1500.0;
b =((A / 20000.0F)* 100);

B 的值有时随机变为0.0。

您能否提供一些有关这方面的见解?  

 

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

    该中断不会影响浮点运算的结果。 您是否启用了浮点? 请使用启用它 _coreEnableVfp_();

    这是我的测试代码。 我启用了浮点和 RTI 中断(每1秒一次)、并在 while (1)循环中重复运行浮点运算。 我看不到问题如预期的那样。

    int main (空)

    /*用户代码开始(3)*/
    静态浮点32 A;
    静态浮点32 B;
    uint32_t err = 0;

    _coreEnableVfp_();

    A = 100.0 * 1500.0;
    b =((A / 20000.0F)* 100);

    rtiInit();

    /*将高端计时器 GIO 端口 hetPort 引脚方向设置为所有输出*/
    gioSetDirection (hetPORT1、0xFFFFFFFF);

    /*启用 RTI 比较0中断通知*/
    rtiEnableNotification (rtiNOTIFICATION_COMPARE0);

    /*启用 IRQ -清除 CPS 寄存器中的 I 标志*/
    /*注意:这通常由操作系统或 SVC 调度程序来完成*/
    _enable_IRQ ();

    /*启动 RTI 计数器块0 */
    rtiStartCounter (rtiCOUNTER_BLOCK0);

    while (1){
    A = 100.0 * 1500.0;
    b =((A / 20000.0F)* 100);
    如果(B!= 750.00)
    ERR++;


    /*永久运行*/
    while (1);
    /*用户代码结束*/

    返回0;



    /*用户代码开始(4)*/
    void rtiNotification (uint32通知)

    /*在用户代码开始和用户代码结束之间输入用户代码。 *
    /*切换 HET 引脚0 */
    gioSetPort (hetPORT1、gioGetPort (hetPORT1)^ 0x00000001);

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

    您好 QJ Wang

    很抱歉我的回答延迟。

    在我们的代码库中、未 为 负责浮点算术的特定任务启用 UsingFPU。 当它被启用时、我们不再看到错误的浮点算术结果的问题。

    非常感谢。