定时器中断初始化存在问题

2019-07-20 03:26发布

void TimeInterrupt_InIt(u16 arr,u16 pas)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
NVIC_InitTypeDef NVIC_InitStruct;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);

TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInitStruct.TIM_Period=arr;
TIM_TimeBaseInitStruct.TIM_Prescaler=pas;
TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStruct);

TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);

NVIC_InitStruct.NVIC_IRQChannel=TIM3_IRQn;
NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=0x01;
NVIC_InitStruct.NVIC_IRQChannelSubPriority=0x03;
NVIC_Init(&NVIC_InitStruct);

TIM_Cmd(TIM3,ENABLE); //执行到这句就没法执行出来了
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
1208
1楼-- · 2019-07-20 05:06
        NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;  //TIM3中断
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //先占优先级0级
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  //从优先级3级
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
改成这样试下用源程序可以用吗
xiatianyun
2楼-- · 2019-07-20 10:20
看下TIM3的中断服务函数,可能里面有问题。原因是执行开启TIM3之前其实就已经进入中断服务函数一次了。
Electronic
3楼-- · 2019-07-20 11:20
 精彩回答 2  元偷偷看……
CandyGX
4楼-- · 2019-07-20 12:01
请问楼主解决了么
edmund1234
5楼-- · 2019-07-20 12:19
 精彩回答 2  元偷偷看……

一周热门 更多>