(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 未指定の場合 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(); } }