UP
TIM2のタイマー割り込みを使う
16bitタイマーのTIM2を使ってみる。前回
割り込みを使う
では青ボタンが押されると液晶に表示される数値が1ずつ増えていったが、
今回はそれに加えて一定時間LED4が点灯するようにする。
プログラム概要
青ボタンが押されたらLED4をONにしTIM2のカウントアップを
スタート、カウンタの値が設定した値になったら割り込みが発生しLED4を
OFFにする。
TIM2の初期等は
CLK_PeripheralClockConfig(CLK_Peripheral_TIM2, ENABLE);
TIM2_DeInit();
TIM2_TimeBaseInit(TIM2_Prescaler_128,TIM2_CounterMode_Up,2500);
TIM2_UpdateRequestConfig(TIM2_UpdateSource_Global);
TIM2_ITConfig(TIM2_IT_Update, ENABLE);
TIM2_SelectOnePulseMode(TIM2_OPMode_Single);
カウンタの設定値は2500、クロックは16MHzでプリスケーラは128分周だから
2500 x 128 / 16M = 0.02 secだけLEDが点灯する。
割り込み
stm8l15x_it.cの記述。
青ボタンによる割り込み
INTERRUPT_HANDLER(EXTI1_IRQHandler, 9)
{
itmp++; bp=1;
/* ↓今回書き加えた行 */
GPIO_HIGH(LED_BLUE_PORT,LED_BLUE_PIN); /* LED4 ON */
TIM2_Cmd(ENABLE); /* TIM2スタート */
/* ↑今回書き加えた行終わり */
EXTI_ClearITPendingBit(EXTI_IT_Pin1);
}
TIM2割り込み
INTERRUPT_HANDLER(TIM2_UPD_OVF_TRG_BRK_IRQHandler, 19)
{
GPIO_LOW(LED_BLUE_PORT,LED_BLUE_PIN); /* LED4 OFF */
TIM2_ClearITPendingBit( TIM2_IT_Update ); /* 割り込みフラグクリア */
}
プロジェクト一式(zipファイル)mtim2.zip
2012.03
mm@ils.uec.ac.jp