Ticker (STM32)

(2015.8.30 作成)

 タイマーを使用して一定間隔で割り込みを発生させます。Timerクラスと同じ話なのですが、STM32では割り込みで呼び出される関数名が決まっています。このため、ユーザーはこの関数名を用いて処理を記載する必要があります。関数名はTimerクラスの説明ページに一覧を記載していますので参考にしてください。

関数

コンストラクタ

プロトタイプ

Ticker(

    TIM_TypeDef *TIM,

     const uint16_t &TickInterval,

     const DKS::TimeUint &timeUnit) 

戻り値

なし

引数 

TIM

使用するタイマ

TickInterval

割り込みの時間間隔

timeUnit

タイマの動作単位 usまたはms

TimeUnit型

未指定の場合 msになる

備考


サンプルコード

 以下のソースコードをNucleoF401REに書き込むとTIM2を使用して1ms毎にLEDを点滅させます。

#include "DKS_Util_NucleoF401.h"
#include "DKS_Timer_NucleoF401.h"
#include "DKS_GPIO_NucleoF401.h"

extern "C"
{
DKS::DigitalOut *led;
DKS::Ticker *ticker;

int main(void)
{
        DKS::InitSystem();

        led=new DKS::DigitalOut(GPIOA, GPIO_PIN_5, DKS::Push_Pull, DKS::Pull_Up);
        ticker = new DKS::Ticker(TIM2, 1, DKS::TimeUnit_MilliSec);
        ticker->Start();
        while (1)       {       }
}

//呼び出されるルーチン
void TIM2_IRQHandler()
{
        __HAL_TIM_CLEAR_IT(&ticker->Tim_Handle, TIM_IT_UPDATE);  //Clear Interrupt Flag 忘れずに
        led->toggle();
}

}