ソフトウェアタイマモジュールを使用する単純なを共有する - ベースのKeil社+ stm32f103zet + HALライブラリ(ベアメタル実装)

します。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、コンパイル

 

おすすめ

転載: www.cnblogs.com/CodeWorkerLiMing/p/12021124.html