します。https://github.com/0x1abin/MultiTimer良い数githubのプロジェクトを参照するには、公開
今日見て、単純な、それが移植された〜
説明は、私たちはドキュメントを見てみましょう
=================================
ソフトウェアタイマモジュールを使用する単純なを共有します- MultiTimer
。送信元アドレス:
https://github.com/0x1abin/MultiTimer
簡単な紹介
MultiTimer拡張モジュールは、ソフトウェアタイマ、あなたはときに、よりエレガントでより簡単に、プログラムのトリガタイミングを管理する方法を決定するために、伝統的な旗を交換する必要が無限にスケーラブルなタイマータスクです。
使用
1、最初のタイマ管理ハンドルを適用
struct Timer timer1;
2、Timerオブジェクト登録タイマコールバックハンドラ、セットタイマ時間(MS)、タイミングサイクルトリガ時間を初期化します
timer_init(struct Timer* handle, void(*timeout_cb)(), uint32_t timeout, uint32_t repeat);
3、タイマーを開始
timer_start(&timer1);
図4に示すように、ハードウェアタイマ1msのサイクルコールセットアップ )(timer_ticksを 時間基準を提供します
void HAL_SYSTICK_Callback(void)
{
timer_ticks();
}
5、メインループバックグラウンド処理機能でコールタイマー
int main()
{
timer_init(&timer1, timer1_callback, 1000, 1000); //1s loop
timer_start(&timer1);
timer_init(&timer2, timer2_callback, 50, 0); //50ms delay
timer_start(&timer2);
while(1)
{
...
timer_loop();
}
}
============================================
移植は非常に簡単です、
cubemxプロジェクトの新しいSTM32は、keil5プロジェクトを生成して、ソースコードを追加しますMultiTimer,在main函数中也实例,因此可以参考。
ヘッダファイルは、追加したいことに注意してください。
次のように私のエンジニアリングショットは以下のとおりです。
図1に示すように、ヘッダーファイルを追加
ハンドルを定義します。2.
3、初期化、および定期的なタスク機能に登録
図4に示すように、whileループを開始します
5、再定義のSysTickコールバック関数、削除__weak
図6に示すように、タイミングタスク機能
7、コンパイル