OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2186|回复: 1

STM32F103定时器中断问题?stm32定时器3第一次开启定时器中断,中断时间正常;第二次再开中断立刻就进去了?

[复制链接]

5

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2017-8-25
在线时间
13 小时
发表于 2018-3-22 15:00:42 | 显示全部楼层 |阅读模式
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
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5141
金钱
5141
注册时间
2014-8-26
在线时间
1317 小时
发表于 2018-3-22 15:00:43 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 04:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表