请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:HALCOGEN 工具/软件:Code Composer Studio
我不知道是否已经报告过这种情况,但我发现了一个导致 rtiGetCurrentTick()中溢出的错误。
此函数为:
uint32 rtiGetCurrentTick (uint32比较) { uint32 tick; uint32计数器=((rtiREG1->COMPCTRL &(uint32)(uint32) 1U <<(比较<< 2U))!= 0U)? 1U:0U; uint32 RTI_CNT_FRCx = rtiREG1->CNT[计数器].FRCx; uint32 RTI_CMP_COMPx = rtiREG1->CMP[比较].Compx; uint32 RTI_CMP_UDCPx = rtiREG1->CMP[比较].UDCPx; //用户代码开始(27)*/* 用户代码结束*/ Tick = RTI_CNT_FRCx -(RTI_CMP_COMPx - RTI_CMP_UDCPx); /**@请注意,必须先调用函数 rtiInit,然后才能使用此函数。 */ *用户代码开始(28)*/ *用户代码结束*/ 返回刻度; }
问题在于同步、在将 FRC 寄存器读取到 RTI_CNT_FRCx 和将 COMP 寄存器读取到 RTI_CMP_COMPx 之间发生。 如果在这两个事件之间、寄存器 FRC 的值增加并达到 COMP、RTI_CMP_COMPx 的值将保持新的增加值。 但 RTI_CNT_FRCx 仍会在增加前保持 FRC 的值。 这会导致计算函数返回值时行中出现溢出。
感谢您的阅读!