私の目標は、割り込み38kHzのを持っており、LEDを切り替えることはありませんが、関係なく、私はプリスケーラとして設定したものと期間なぜ私のSTM32F7は43秒ごとに中断しますか?
static TIM_HandleTypeDef s_TimerInstance = {
.Instance = TIM2,
};
void Hal::initTim()
{
__TIM2_CLK_ENABLE();
s_TimerInstance.Init.Prescaler = 96; // This does nothing
s_TimerInstance.Init.CounterMode = TIM_COUNTERMODE_UP;
s_TimerInstance.Init.Period = 26; // This does nothing
s_TimerInstance.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
HAL_TIM_Base_Init(&s_TimerInstance);
HAL_TIM_Base_Start_IT(&s_TimerInstance);
HAL_NVIC_SetPriority(TIM2_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(TIM2_IRQn);
}
extern "C" void TIM2_IRQHandler()
{
HAL_TIM_IRQHandler(&s_TimerInstance);
}
extern "C" void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
HAL_GPIO_TogglePin(GPIOI, GPIO_PIN_1); // Happens every 43 seconds for some reason
}
extern "C" void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef *htim){}
extern "C" void HAL_TIMEx_CommutationCallback(TIM_HandleTypeDef *htim){}
私はそれがターゲットに点滅すると、LEDはどんなプリスケーラごとに43秒を切り替えず、期間はに設定されます。
私は何かが欠けているに違いありませんが、私はそれを理解できません。誰かが割り込みの経験を持つことができますか?
、1はHAL :: initTimが実際に呼び出された場合に依頼する必要があり、他のコードの再があるかどうどこかであなたのタイマーをプログラミングする。 – nos
システムクロックとタイマーのソースクロックとは何ですか? (周波数) –
あなたのコード、特にクロック、割り込み、タイマーの開始をもう少し見るのに役立ちます。 – staringlizard