工具/软件:TI-RTOS
您好!
我使用的是 TIRTOS 2.16.0.14。
在我的项目中、我使用的是在.cfg 文件中创建的 timer3、如下所示。 我正在从我的函数启动计时器。
现在、它使用的周期为1。 我需要 周期为1us 的计时器。 要实现这一点、必须如何设置周期? 如果周期以计数形式表示、我可以设置的最大计数是多少?
此致
Sandra
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.
工具/软件:TI-RTOS
您好!
我使用的是 TIRTOS 2.16.0.14。
在我的项目中、我使用的是在.cfg 文件中创建的 timer3、如下所示。 我正在从我的函数启动计时器。
现在、它使用的周期为1。 我需要 周期为1us 的计时器。 要实现这一点、必须如何设置周期? 如果周期以计数形式表示、我可以设置的最大计数是多少?
此致
Sandra
您是否考虑使用 Timestamp_get64 (),然后使用 Timestamp_getFreq ()将结果转换为微秒,以确定 Timestamp_get64 ()中返回的值的单位?
Types_FreqHz freq; Types_Timestamp64时间; uint64频率;//*以 MHz 为单位*/ uint64 timeInu;//*以微秒为单位的时间*/ //*执行以下操作一次*/ Timestamp_getFreq (&freq);//* freq 以 Hz 为单位*// *将 freq 转换为 MHz */ 频率=(hi)(<.0000)(&freq) /* 从那时起,只需执行以下操作即可获得系统启动后经过的时间 */ Timestamp_get64 (&time);/*获取当前时间戳*/ timeInU =((uint64)(time.hi << 32)|(time.lo)))/频率;/*转换为微秒*/
Alan
尊敬的 Alan:
感谢您的回复。
我也在应用程序中运行秒计数器。 因此、在读取微秒值时、我将得到3232892 us、持续11秒。 13秒后、它给出了3063887 us。 微秒值应对应于秒值、对吧? 溢出将需要多长时间?
我尝试使用
ui32Time0 = Timestamp_get32 (); //找到经过的时间的初始值
/*获取当前时间戳*/
ui32TimeInU = Timestamp_get32 ();
ui32TimeInus =(ui32TimeInus - ui32Time0)/频率; // Timestamp_getFreq ()获得的频率(如建议)
然后、我得到的是、
34秒、35740198us 和35秒、38538855 us 已获得。
此实现是否正确? 溢出需要多长时间?
此致
Sandra
在我的 Tiva Launchpad 上、时间戳频率为120MHz。 在该速率下、32位时间戳每35.79秒回滚一次。
我在电路板上尝试过此代码、它的运行方式符合预期:
uint32 ui32TimeInU; uint32 ui32Time0; uint32频率; Types_FreqHz freq; ui32Time0 = Timestamp_get32 (); TIMESTAMP_getFreq (&freq); frequency = freq.lo;//频率(Hz)*/ ui32TimeInU = Timestamp_get32 (); ui32TimeInU =(ui32TimeInU - ui32Time0)/ FREQUENCY;
使用上述代码、ui32TimeInU 每秒先进1次、因为频率以 Hz 为单位。
如果您希望 ui32TimeInU 真正以微秒为单位、则需要将频率预除以1、000、000:
频率=频率/1000000;/*频率、单位为 MHz */
然后、ui32TimeInU 的所有后续计算将以微秒为单位、每1秒将前进1、000、000。
全部