標題: stm32單片機定時中斷的問題 [打印本頁]

作者: XILUOAAA    時間: 2024-9-17 14:45
標題: stm32單片機定時中斷的問題
我在使用STM32F103RCT6做定時器中斷實驗的時候發(fā)現(xiàn),當(dāng)使用定時器5,6,7都不能觸發(fā)定時器中斷進入服務(wù)函數(shù),但是使用定時器12348卻可以,配置完全一樣,按道理也不應(yīng)該有區(qū)別才對呀,搞了一天也不知道為什么

屏幕截圖 2024-09-17 144510.png (145.31 KB, 下載次數(shù): 6)

屏幕截圖 2024-09-17 144510.png

作者: 飛云居士    時間: 2024-9-18 12:00
可能原因分析
時鐘配置問題:
APB1/APB2時鐘使能: 確保定時器5、6、7所在的APB1時鐘已經(jīng)正確使能。
時鐘源選擇: 檢查時鐘源是否正確選擇,尤其是對于不同組的定時器,時鐘源可能有所不同。
NVIC中斷配置問題:
中斷優(yōu)先級: 確認定時器5、6、7對應(yīng)中斷的優(yōu)先級是否設(shè)置過高,導(dǎo)致被其他中斷搶占。
中斷分組: 檢查NVIC中斷分組是否正確,確保定時器中斷可以被正常響應(yīng)。
試試下面的代碼看可行否?
void Timer5_Init(void) {
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);

    TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
    TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
    TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseInitStructure.TIM_Period = 999;  // 1000 - 1
    TIM_TimeBaseInitStructure.TIM_Prescaler = 7199;  // 7200 - 1
    TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;
    TIM_TimeBaseInit(TIM5, &TIM_TimeBaseInitStructure);

    TIM_ClearFlag(TIM5, TIM_FLAG_Update);
    TIM_ITConfig(TIM5, TIM_IT_Update, ENABLE);

    NVIC_InitTypeDef NVIC_InitStructure;
    NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);

    TIM_Cmd(TIM5, ENABLE);
}





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1