STM32 Timer
STM32 Timerのタイマー
タイマーの設定
実は、下に書いてあるように設定して、動かしていると思っていたのにLEDがついたらつきっぱなしで思った通りの動きをしなかった・・・・かと言って何かしましたか?というと一晩寝かせて朝やったら動いた・・・(やった事は、桁で数字をかえる、分周率を7200、36000といった具合に・・それで元の数字に戻ったころにちゃんと動いた・・・謎)
先に時間を操作するので、基準になるクロックの設定をする。
RCCからHSEにCrystal/Ceramic Resonator
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 == &htim4){
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
}
}
/* USER CODE END 0 */
コメント
コメントを投稿