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.

[参考译文] TMS320F28335:Misra 10.3问题- DELAY_US (A)

Guru**** 2524550 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1023259/tms320f28335-misra-10-3-problem---delay_us-a

器件型号:TMS320F28335
主题中讨论的其他器件:C2000WARE

大家好、


在测试代码中检查 MISRA C:2012。
我遇到了库函数 delay_US 的问题、需要帮助。

//不要修改此行。
#define DELAY_US (a) DSP28x_usDelay (((( long double) A * 1000.0L)/(long double) cpu_rate)- 9.0L)/ 5.0L
extern void DSP28x_usDelay (uint32计数);

计算出 long double 类型变量并成为 uint32 Count。
因此问题违反 MISRA_C:2012 10.3。
有没有解决方案?

添加至、

我应该在位置 A 放置一个无符号 int 变量还是一个 long double 变量?

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

    我们的编译器专家将于星期二结束。  当他返回时、他可以看一下。

    此致、

    John

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

    我认为这个代码...

    [引用 userid="295051" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1023259/tms320f28335-misra-10-3-problem---delay_us-a "/>请勿修改此行。
    #define DELAY_US (a) DSP28x_usDelay (((( long double) A * 1000.0L)/(long double) cpu_rate)- 9.0L)/ 5.0L
    extern void DSP28x_usDelay (uint32计数);

    (笑声) 来自 C2000Ware。  虽然我不确定、但 C2000Ware 头文件可能未经过测试或记录以构建 MISRA 清理。  

    要考虑的一个解决方案是添加一个转换,使从 long double 转换 uint32显式...

    #define DELAY_US(A) DSP28x_usDelay((Uint32) (((((long double) A * 1000.0L) / (long double)CPU_RATE) - 9.0L) / 5.0L))

    谢谢、此致、

    乔治  

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

    根据您的建议,我修改了以下代码:

    #define DELAY_US(A) DSP28x_usDelay((Uint32)((((((long double) A * 1000.0L) / (long double)CPU_RATE) - 9.0L))/5.0L))

    问题 Misra 10.3已解决。 顺便说一下、 我能否修复显示"请勿修改此行"的代码?

    谢谢!  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="295051" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1023259/tms320f28335-misra-10-3-problem---delay_us-a/3790993 #3790993"] 我能否修复显示"请勿修改此行"的代码?

    由于此问题是 C2000Ware 特有的、因此我无法回答。  请在 C2000器件论坛中开始新主题。 或者、如果您愿意、我可以将此主题通知这些专家。

    谢谢、此致、

    乔治

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

    我 在 C2000器件论坛中开始新的主题。谢谢!