4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

STM32 nucleoを使う (6) タイマー

Posted at

#はじめに
組込み系ではタイマーが必要不可欠です。まずタイマー割り込みを使って周期的な動作をさせてみます。

#タイマーの種類
STM32には多くのタイマーが搭載されています。
高機能タイマー TIM1/TIM8/TIM20
汎用タイマー TIM2/TIM3/TIM4、TIM16/TIM17
基本タイマー TIM6/TIM7
タイマー割り込みであれば基本タイマ―を使うのが簡単です。

#基本タイマ
基本タイマのTim7を使ってみます。
10ms毎にタイマー割り込みを発生させ、1秒毎にLED出力を反転させます。
Tim7はAPB1の配置されているのでクロックはTIM1CLKになります。クロックをプリスケーラ―で分周しカウンタ値と一致すると割り込みを発生させます。
V004.png

##CubeMx設定
Clock Confiigurationタブを選択しクロック設定を表示させます。
クロックの設定を確認します。APB1のタイマークロックは72MHzです。
V002.png

Pinout & Configurationを選択し、Timersを広げ、TIM7をクリックします。
まずModeのActivatedにチェックを入れます。
Parametar Settingsタブを表示します。

10msを作るにはいくつカウントさせればよいかというと

\frac{10ms}{\frac{1}{72MHz}}=720000

プリスケーラの値を64とすると

\frac{720000}{64}=11250

カウンタは0から始まるので1を引いた値11249となります

Prescalerに64、Counter Periodに11249を設定します。
V001.png

割り込みを有効にします。NVIC Settingタブを選択し、TIM7 global interruptのEnabledにチェックを入れます。
V003.png

##割り込みハンドラー
割り込みの種類がtim7によるものかチェックします。
カウンタをインクリメントし100を超えたらLED出力を反転させます。

/* USER CODE BEGIN 0 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){
	static unsigned char count = 0;

	if(htim == &htim7) {
		count++;
		if (count >= 100) {
			HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
			count = 0;
		}
	}
}
/* USER CODE END 0 */

Tim7の初期化終了後にHAL_TIM_Base_Start_IT()を呼びTim7を実行させます。

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART2_UART_Init();
  MX_TIM7_Init();
  /* USER CODE BEGIN 2 */
  HAL_TIM_Base_Start_IT(&htim7);	/* tim7 Start */
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */

1秒毎にLEDが点滅します。
STM32の使い方を学習した内容をまとめています。内容に不備等ありましたら連絡お願いします。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?