工具/软件:Code Composer Studio
尊敬的 Hercules 团队:
我目前正在寻找将 RTI 模块用作"SLEE()函数。
我注意到 rtiSetPeriod()函数仅在前一个周期长度的额外"节拍"通过后更新(预期行为)。
不幸的是、当将周期设置为较大值(如1000ms)、然后尝试更改为较小值(100us)时、我们必须等待额外的1000ms、才能更改计时器。
是否有办法强制"节拍"更快发生、以便我们可以立即将周期切换为更小的值?
下面是我当前尝试用作"睡眠"或"延迟"函数的代码、以帮助澄清我尝试执行的操作:
//******** //延迟功能,输入=微秒数 //******** void delayus (uint16us){ 如果(us = 0) 返回; 其他 { rtiSetPeriod (rtiCOMPARE0,10*us); rtiEnableNotification (rtiNOTIFICATION_COMPARE0); rtiStartCounter (rtiCOUNTER_BLOCK0); while (RTI_TIMEOUT=0);//this 在 notification.c rtiNotification 中设置为1 RTI_TIMEOUT = 0; rtiDisableNotification (rtiNOTIFICATION_COMPARE0); rtiStopCounter (rtiCOUNTER_BLOCK0); rtiResetCounter (rtiCOUNTER_BLOCK0); } } //******* //notificait.c: //******* void rtiNotification (uint32 notification) { /*在用户代码开始和用户代码结束之间输入用户代码。 */ *用户代码开始(9)*/ RTI_TIMEOUT = 1; /*用户代码结束*/ }
要使上述代码正常工作、我需要添加另一个"while ()"循环、等待"rtiSetPeriod"生效前出现一个节拍。
谢谢!
Vince Toledo