我的目標是有中斷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秒切換無論什麼分頻器和期間設定爲。
我必須錯過一些東西,但我無法弄清楚。任何有中斷經驗的人都可以幫忙?
因爲這不是所有的代碼,我們需要問,如果HAL :: initTim實際上是調用,以及是否有其他的代碼重用 - 在某處編程你的計時器。 – nos
什麼是系統時鐘和定時器的源時鐘? (頻率) –
這將有助於查看更多的代碼,特別是時鐘,中斷和計時器的啓動。 – staringlizard