STM32F303K8 タイマー割り込み 本番
開発環境
評価ボード | Nucleo STM32F303K8 |
IDE | System Workbench for STM32 (SW4STM32) |
Library | Hal Library |
OS | windows 10 pro |
今度はちゃんとTIMを使ってタイマー割り込みをしたいと思います。
CubeMXの設定
左のツリーのTIM1のClock Source: Internal Clockを選択します。
TIM1の設定
Configuration→TIM1→TIM1 Configuration→Parameter Settings
Prescaler: 16
Counter Period: 49999
として、100msのタイマー割り込みとしました。10Hzです。(こういう計算を周波数領域でやれる人うらやましい・・・絶対時間領域じゃないと計算できない・・・)
また、TIM1のClock SourceがInternal Clockとなりこれは8MHzとなっています。
TIM1はデータシートよりAPB2を参照しているみたいです。
ちなみにタイマーのクロックソースは
APB1: TIM2, 3, 4, 6, 7
APB2: TIM20, 17, 16, 15, 1
となっています。
この状態でgenerateします。
SW4STM32では
main.c
/* USER CODE BEGIN 2 */ HAL_TIM_Base_Start_IT(&htim1); /* USER CODE END 2 */
これでタイマーを動作させます。
stm32f3xx_it.c
void TIM1_UP_TIM16_IRQHandler(void) { /* USER CODE BEGIN TIM1_UP_TIM16_IRQn 0 */ /* USER CODE END TIM1_UP_TIM16_IRQn 0 */ HAL_TIM_IRQHandler(&htim1); /* USER CODE BEGIN TIM1_UP_TIM16_IRQn 1 */ HAL_GPIO_TogglePin(LD3_GPIO_Port, LD3_Pin); /* USER CODE END TIM1_UP_TIM16_IRQn 1 */ }
タイマーはこちらの関数を呼びます。
これで100msのタイマー割り込みを動作させることができました。
20170821の記事