熱門(mén): 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2024-9-17 14:45
正文摘要:我在使用STM32F103RCT6做定時(shí)器中斷實(shí)驗(yàn)的時(shí)候發(fā)現(xiàn),當(dāng)使用定時(shí)器5,6,7都不能觸發(fā)定時(shí)器中斷進(jìn)入服務(wù)函數(shù),但是使用定時(shí)器12348卻可以,配置完全一樣,按道理也不應(yīng)該有區(qū)別才對(duì)呀,搞了一天也不知道為什么 |
可能原因分析 時(shí)鐘配置問(wèn)題: APB1/APB2時(shí)鐘使能: 確保定時(shí)器5、6、7所在的APB1時(shí)鐘已經(jīng)正確使能。 時(shí)鐘源選擇: 檢查時(shí)鐘源是否正確選擇,尤其是對(duì)于不同組的定時(shí)器,時(shí)鐘源可能有所不同。 NVIC中斷配置問(wèn)題: 中斷優(yōu)先級(jí): 確認(rèn)定時(shí)器5、6、7對(duì)應(yīng)中斷的優(yōu)先級(jí)是否設(shè)置過(guò)高,導(dǎo)致被其他中斷搶占。 中斷分組: 檢查NVIC中斷分組是否正確,確保定時(shí)器中斷可以被正常響應(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); } |
Powered by 單片機(jī)教程網(wǎng)