Ticker (STM32)

(2015.8.30 作成)

(2019.6.16 Update)

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

関数

コンストラクタ

プロトタイプ

Ticker(

    TIM_TypeDef *TIM,

     const uint16_t &TickInterval,

     const DKS::TimeUint &timeUnit) 

戻り値

なし

引数 

TIM

使用するタイマ

TickInterval

割り込みの時間間隔

timeUnit

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

TimeUnit型

未指定の場合 msになる

備考


サンプルコード

 以下のソースコードをSTM32F103C8T6基板に書き込むとTIM3を使用して100us毎にLEDを点滅させます。

/*
 Copyright (c) 2017 DenshiKousakuSenka
 This software is released under the MIT License.
 http://opensource.org/licenses/mit-license.php
 */

#include "DKS_Common_F103xB.h"
#include "DKS_Timer_F103xB.h"
#include "DKS_F103C8T6.h"

extern "C"
{

        DKS::Ticker ticker;
        DKS::STM32F103C8T6 board(DKS::BluePill);

        int main(void)
        {
                DKS::InitSystem();
                board.Init();

                ticker.Init(TIM3, 100, DKS::TimeUnit_MilliSec);
                ticker.Start();

                while (1)
                {
                }

        }
        extern "C" void TIM3_IRQHandler(void)
        {
                if (LL_TIM_IsActiveFlag_UPDATE(ticker.m_TIM) == 1)
                {
                        LL_TIM_ClearFlag_UPDATE(ticker.m_TIM);
                }
                board.led.toggle();
        }

}