|
>タイマ- を使い 100ms / 500ms などの
>3種類の割込みを使ったプログラムのサンプルがあれば教えてください
Coronのご愛用有難うございます。
タイマー割り込みを使った例としては、サンプルプロジェクト[Ex08_LOG_TXT]がそれにあたります。
このサンプルでは、TIM7をタイマー割り込み用として使って10msecの割り込みを発生させています。
割り込み周期の設定方法としては、例えば100msecの周期に変更する場合は
(以下、別トピックの転載です)、
/* Immediate load of TIM7 Precaler value */ TIM_PrescalerConfig(TIM7,72-1, TIM_PSCReloadMode_Immediate); //10msec
を
TIM_PrescalerConfig(TIM7,720-1, TIM_PSCReloadMode_Immediate); //100msec
のように設定してください(これで10倍遅くなります)。
※TIM_TimeBaseStructure.TIM_Prescaler = (72-1); となっているところも特に意味は無いのですが
紛らわしいので上記と合わせて= (720-1);と変更してください。
設定値の計算方法としては、
割り込み周期[Hz] = 72000000[Hz] / ((Prescaler値+1) x Period値)
となります。
※Prescaler値,Period値共に0x0000~0xFFFF
500msecにする場合も同様に、Prescaler値,Period値を変更してください。
(0xFFFF以上の値にならないように注意してください)
[coron_tim7int.c]ファイル内でTIM7のタイマー割り込み初期化関数(TIM7_init())と、タイマー割り込み処理関数
(TIM7_Intterupt())を記述しています。
タイマー割り込み処理関数 である[TIM7_Intterupt()]は[stm32f10x_it.c]にて以下のように宣言しています。
void TIM7_IRQHandler(void) { TIM7_Intterupt(); }
Coronで使用しているSTM32マイコンはタイマがTIM1~TIM8まで計8個あり、そのうちRCサーボや音楽再生などのCoronの周辺機能でTIM2~TIM6まで使用しています(※TIM1とTIM8は高機能タイマ)。
どのタイマが、どの機能にそれぞれ割り振られているかは、coron_conf.hに記述されています。
もし、特にCoronライブラリを使用する必要が無い機能(例えばDCモータの出力タイマ割り込みTIM2など)があれば、TIM2~TIM6もTIM7と同様にユーザが別のタイマ割り込みとして自由に使うことができます。
TIM2~TIM6のタイマ割り込み初期化方法などはTIM7と全く同じです。
(※TIM1とTIM8は機能が追加されている為、少し初期化処理が増えます。詳細はCPUのデータシートをご覧になってください) |