0
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?

Nucleo-F446RE 3.Timer2

Last updated at Posted at 2025-12-10

Time2

1msインターバル、アップカウントタイマーを作ります。
LLライブラリーを使用しています。
timer2設定.png

Timer2初期化の追記

カウント開始と、オーバーフロー割り込み許可は、ユーザーが行う。

Timerの初期化で自分で追記する部分
/* USER CODE BEGIN TIM2_Init 2 */
  LL_TIM_EnableCounter(TIM2);
  LL_TIM_EnableIT_UPDATE(TIM2);
  /* USER CODE END TIM2_Init 2 */

Timer2のインターバル時間の計算
Timer2が接続しているバスは、APB1。1msインターバル。
Timer計算.png

SYSCLKは、180MHzに設定してあります。
Timer2計算2.png

TIM2 割り込みハンドラ

stm32F4xx_it.c
/**
  * @brief This function handles TIM2 global interrupt.
  */
void TIM2_IRQHandler(void)
{
  /* USER CODE BEGIN TIM2_IRQn 0 */
	LL_TIM_ClearFlag_UPDATE(TIM2);//割り込みフラグクリア

	tm2.count++;
	if(tm2.count==500)//1ms x 500回=500msインターバルでLEDを点滅
	{
		tm2.count=0;
		tm2.completed = true;//処理は、mainで行う。
		LL_TIM_DisableIT_UPDATE(TIM2);//割り込み停止
	}
  /* USER CODE END TIM2_IRQn 0 */
  /* USER CODE BEGIN TIM2_IRQn 1 */

  /* USER CODE END TIM2_IRQn 1 */
}

TIM2初期化関数

上記、カウント開始、割り込み許可の2行は、ユーザー記入。

TIM2初期化(MX生成)
/**
  * @brief TIM2 Initialization Function
  * @param None
  * @retval None
  */
static void MX_TIM2_Init(void)
{

  /* USER CODE BEGIN TIM2_Init 0 */

  /* USER CODE END TIM2_Init 0 */

  LL_TIM_InitTypeDef TIM_InitStruct = {0};

  /* Peripheral clock enable */
  LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_TIM2);

  /* TIM2 interrupt Init */
  NVIC_SetPriority(TIM2_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),1, 0));
  NVIC_EnableIRQ(TIM2_IRQn);

  /* USER CODE BEGIN TIM2_Init 1 */

  /* USER CODE END TIM2_Init 1 */
  TIM_InitStruct.Prescaler = 16;
  TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP;
  TIM_InitStruct.Autoreload = 0x15F9;
  TIM_InitStruct.ClockDivision = LL_TIM_CLOCKDIVISION_DIV1;
  LL_TIM_Init(TIM2, &TIM_InitStruct);
  LL_TIM_EnableARRPreload(TIM2);
  LL_TIM_SetClockSource(TIM2, LL_TIM_CLOCKSOURCE_INTERNAL);
  LL_TIM_SetTriggerOutput(TIM2, LL_TIM_TRGO_RESET);
  LL_TIM_DisableMasterSlaveMode(TIM2);
  /* USER CODE BEGIN TIM2_Init 2 */
  LL_TIM_EnableCounter(TIM2);//カウント開始
  LL_TIM_EnableIT_UPDATE(TIM2);//オーバーフロー割り込み許可
  /* USER CODE END TIM2_Init 2 */

}
0
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
0
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?