|
我寫了個(gè)指定ms的定時(shí)器接口
但是那個(gè)ms 參數(shù)沒有作用 我不管寫多少 在調(diào)試時(shí)進(jìn)入中斷的時(shí)間間隔一直是 0.0000119s
而且程序死在了中斷
我都想了一天了
都不知道問題在那
希望得到幫助
那個(gè)函數(shù)如下
void ConfigTimer2ms(u16 ms)
{
TIM_Cmd(TIM2,DISABLE);//關(guān)閉TIM2定時(shí)器
TIM_TimeBaseInitTypeDef timerInit;//定義TIM2的配置結(jié)構(gòu)體
NVIC_InitTypeDef NvicInt;//定義TIM2中斷配置結(jié)構(gòu)體
//定時(shí)器配置
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//使能TIME2時(shí)鐘
timerInit.TIM_Period= 36000 -1;//設(shè)置TIM2自動(dòng)填充寄存器
timerInit.TIM_Prescaler = ()ms*2) - 1; //72M晶振 設(shè)置預(yù)分頻
timerInit.TIM_ClockDivision = TIM_CKD_DIV1; //設(shè)置時(shí)鐘分割
timerInit.TIM_CounterMode = TIM_CounterMode_Up;//向上計(jì)數(shù)模式
TIM_TimeBaseInit(TIM2,&timerInit);//進(jìn)行定時(shí)器配置 傳入TIM2的配置結(jié)構(gòu)體指針
//定時(shí)器中斷配置
TIM_ClearITPendingBit(TIM2,TIM_IT_Update);//清除中斷代處理位
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置NVIC中斷分組2
NvicInt.NVIC_IRQChannel = TIM2_IRQn;//選擇TIM2
NvicInt.NVIC_IRQChannelPreemptionPriority = 0;//搶占優(yōu)先級(jí)0
NvicInt.NVIC_IRQChannelSubPriority = 2;//從優(yōu)先級(jí)2
NvicInt.NVIC_IRQChannelCmd = ENABLE;//TIM2通道使能
NVIC_Init(&NvicInt);//進(jìn)行定時(shí)器中斷配置 傳入TIM2中斷的配置結(jié)構(gòu)體指針
TIM_Cmd(TIM2,ENABLE);//開啟中斷
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE ); //使能TIM2中斷
}
中斷函數(shù)
void TIM2_IRQHandler(void)
{
if(TIM_GetITStatus(TIM2,TIM_IT_Update) != RESET)
{
TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
/**
*中斷服務(wù)
**/
KeyInterrupt();//按鍵處理
}
}
經(jīng)過不斷調(diào)試
發(fā)現(xiàn)TIM_TimeBaseInit(TIM2,&timerInit);
這個(gè)無效
是怎么回事啊
我用的是keil5
|
|