構文
unsigned int GetTickCount(void);
パラメータ
なし
戻り値
OS起動からのティックカウントを返します。
ティックカウントは、20msecごとに1ずつ増加します。例えば、1秒間に50増加します。
ティックカウントは、20msecごとに1ずつ増加します。例えば、1秒間に50増加します。
解説
OS起動からのティックカウントは、0から始まって20msecごとに0xFFFFFFFF(unsigned int型の最大値)まで1ずつ増加し、0xFFFFFFFFの次は0に回り込みます。0に回り込んだ場合でも、現在のティックカウントからunsigned int型で保持した過去のティックカウントを減算することにより、最大0xFFFFFFFFまでの経過時間を20msec単位で正しく計算できます。
(注意)
必要条件
ヘッダファイル:
lib.hライブラリファイル:
libSTARTUPOPH5000.a
サンプル
#include <stdio.h>
#include "lib.h"
void main(void)
{
unsigned int startTick;
int event;
int elapsedSeconds;
int prev_elapsedSeconds;
while(1){
printf("\n Press [ENT] to start\n");
while(1){
if (kbhit()){
if (getchar() == ENT_KEY){
break;
}
}
Idle();
}
printf(" Press [F1] within 10\n seconds.\n\n");
event = FALSE;
prev_elapsedSeconds = -1;
startTick = GetTickCount();
while(GetTickCount() - startTick < 10000/20){ // Wait for 10 seconds
if (kbhit()){
if (getchar() == F1_KEY){
event = TRUE;
break;
}
}
elapsedSeconds = (GetTickCount() - startTick) / 5; // 5 ticks = 0.1 secconds
if (elapsedSeconds != prev_elapsedSeconds ){
printf(" Elapsed:%2d.%d\r", elapsedSeconds/10, elapsedSeconds%10);
prev_elapsedSeconds = elapsedSeconds;
}
Idle();
}
if (event){
printf(" Good! \r\n");
}else{
printf(" Timeout! \r\n");
}
}
}
最終更新日:2021/06/16