私は MCU に取り組んでおり、私の目的は MCU に時刻/日付を実装することです。
秒単位で刻むタイマーを使用し、uint32_t count
136 年を保存するのに十分なサイズのタイマーを保存します。2000 を参考にしたいのですが、最大値は 2099 にする必要があります。
ここに私のデータ構造があります:
typedef struct
{
uint8_t sec; // Seconds. [0-60] (1 leap second)
uint8_t min; // Minutes. [0-59]
uint8_t hour; // Hours. [0-23]
uint8_t day; // Day. [1-31]
uint8_t month; // Month. [0-11]
uint8_t year; // Year - from 2000. [00-99]
} osal_time_t;
uint32_t count
秒 ( ) を分/時/日/月/年に正しく変換し、最も低いリソースを使用する最善の方法は何ですか?
時間、時間、年は単純に見えますが、1 日は 28-29-30-31 日と複雑になり、2 月は 4 年ごとに 29 日です。
Linux のソース コードの実装が表示されますが、これは OS として設計されたものであり、質素な MCU ではありません。
MCU で最小値が必要になるように、MCU でどのようなアルゴリズムを使用すればよいか、誰でもヒントを得ることができますか? 資力?
例として、これを計算するためにどのアルゴリズムが使用されているかhttp://www.mathcats.com/explore/elapsedtime.html
コード スニペットがあれば、共有していただければ幸いです。