0

私は現在の時刻を与​​えるこの文字列を持っていddmmyyhhmmss:sssますuint8_t array[8];

array[0] = date;
array[1] = month;
array[2] = year;    //13
array[3] = hours;
array[4] = minutes;
array[5] = seconds;
array[6-7] = milliseconds;

私が望むのは、1970 年 1 月 1 日の午前 0 時から現在の時刻 (ミリ秒) までの時差をuint64_t変数で取得することだけです。

これはできますか?--> tm1 構造 = 1 1970 年 1 月 1 日午前 0 時 tm2 構造 = 配列 [] からの現在時刻。

time1 = mktime(tm1);
time2 = mktime(tm2);
Difference = time1-time2;   //in milliseconds, if not then multiply by 1000
4

1 に答える 1

0

Time.h は 1 秒単位で機能し、1970 年 1 月 1 日からの秒数として time_t時間を指定する 32 ビット値が必要です。

毎秒割り込みを生成するにはリアルタイムクロックが必要であり、ISR はtimeをインクリメントする必要があります。timeを初期化する手段が必要です。次に、time.h の関数を使用して、時刻から現在の時刻と日付をさまざまな形式で導き出すことができます。

システムに 1KHz の割り込みクロックもある場合は、別の変数 int msを作成し、1KHz ISR からインクリメントすることができます。RTC ISR はミリ秒をゼロにリセットする必要があります。現在の時刻は、 timemsを連結することで推測できます。1970 年 1 月 1 日の午前 0 時は、時間ミリ秒の両方がゼロの時間でした。

于 2013-09-06T11:28:49.227 に答える