初级会员

- 积分
- 68
- 金钱
- 68
- 注册时间
- 2017-8-25
- 在线时间
- 13 小时
|
5金钱
stm32定时器3第一次开启定时器中断,中断时间正常;第二次再开中断立刻就进去了?求助可能是什么问题?
void TIM3_Int_Init(u16 arr,u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
TIM_TimeBaseStructure.TIM_Period = arr;
TIM_TimeBaseStructure.TIM_Prescaler =psc;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE );
TIM_Cmd(TIM3, ENABLE);
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
void TIM3_IRQHandler(void)
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
{
TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
TIM_Cmd(TIM3, DISABLE);
}
if(moter1_flag==1)
{
Can_Send_Msg("SM1S", 4);
moter1_flag=0;
}
if(moter_3flag==1)
{
Can_Send_Msg("SM3S", 4);
moter_3flag=0;
}
}
main{
......
......
if (!strncmp(msg1->cmd_type, "RP1Q", 4))
{
moter1_flag=1;
TIM3_Int_Init(30000,7199);
TIM_Cmd(TIM3, ENABLE);
}
else if (!strncmp(msg1->cmd_type, "RP3J", 4))
{
moter_3flag=1;
TIM3_Int_Init(30000,7199);
TIM_Cmd(TIM3, ENABLE);
}
}
|
最佳答案
查看完整内容[请看2#楼]
http://www.openedv.com/forum.php?mod=viewthread&tid=97072
|