STM32 Timer
STM32 Timerのタイマー タイマーの設定 実は、下に書いてあるように設定して、動かしていると思っていたのにLEDがついたらつきっぱなしで思った通りの動きをしなかった・・・・かと言って何かしましたか?というと一晩寝かせて朝やったら動いた・・・(やった事は、桁で数字をかえる、分周率を7200、36000といった具合に・・それで元の数字に戻ったころにちゃんと動いた・・・謎) 先に時間を操作するので、基準になるクロックの設定をする。 RCCからHSEにCrystal/Ceramic Resonator クロックの画面で各クロックを設定 ここではTimer4を使ってみた。 Internal clockにチェックを入れると下の設定画面が出てくる。 Prescalerを設定 後で設定するクロック(ここでは72MHz)の分周率。7200(1はゼロから始まるから) 72MHz=72000kHzなので7200で割ると10kHz。 1秒のタイマーにするには、10000カウントという事になる タイマーだけ設定しても何も起こらないのでオンボードのPC13をOutputに設定して、LEDを点灯させると static void MX_TIM4_Init(void) { 中略・・・ /* USER CODE BEGIN TIM4_Init 2 */ HAL_TIM_Base_Start_IT(&htim4); /* USER CODE END TIM4_Init 2 */ } HAL_TIM_Base_Start_IT(&htim4);でタイマーをスタートさせる命令。 コールバックされたら、ピンをトグルするように記載して点滅間隔でタイマー割り込みを確認する。 /* Private user code ---------------------------------------------------------*/ /* USER CODE BEGIN 0 */ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){ static short Led = 1; if (htim == ...