打印
[STM32F1]

定时器中断服务函数

[复制链接]
1021|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
铜牌之路|  楼主 | 2015-8-13 10:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
定时器中断服务函数和外设使能无关?我不开启TIM_Cmd(TIM5,ENABLE),LED 灯照样发光。 当我设置为LED0=0;时,LED灯还是发光,这是怎么回事呢?还有发现定时器扫描时间不是我设置的时间,求解答一下,谢谢各位

​ // TIM_Cmd(TIM5, ENABLE);  //不使能LED照样发光

void TIM5_IRQHandler(void)   
{if (TIM_GetITStatus(TIM5, TIM_IT_Update) != RESET)  
        {       
                  LED0=0;
                  KEY_AnJian();
         TIM_ClearITPendingBit(TIM5, TIM_IT_Update  );
                }
}





沙发
铜牌之路|  楼主 | 2015-8-13 11:30 | 只看该作者
不胜感激

使用特权

评论回复
板凳
铜牌之路|  楼主 | 2015-8-13 11:51 | 只看该作者
坐等,为什么没人回答一下呢?

使用特权

评论回复
地板
songchenping| | 2015-8-13 12:13 | 只看该作者
首先看不到你的硬件连接。还有不知道你的软件配置如何。

使用特权

评论回复
5
铜牌之路|  楼主 | 2015-8-13 12:58 | 只看该作者
songchenping 发表于 2015-8-13 12:13
首先看不到你的硬件连接。还有不知道你的软件配置如何。

就是stm32f103ze的开发板
void TIM5_Int_Init(u16 arr,u16 psc)
{
       
  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        NVIC_InitTypeDef NVIC_InitStructure;

        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, 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(TIM5, &TIM_TimeBaseStructure);
        TIM_ITConfig(TIM5,TIM_IT_Update,ENABLE );

        NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn;  
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);  

  TIM_Cmd(TIM5, ENABLE);  

                                         
}


void TIM5_IRQHandler(void)   
{
       
        if (TIM_GetITStatus(TIM5, TIM_IT_Update) != RESET)                 
                     {
                LED0=!LED0;
                KEY_AnJian();
         TIM_ClearITPendingBit(TIM5, TIM_IT_Update);
                }
}

使用特权

评论回复
6
songchenping| | 2015-8-13 13:08 | 只看该作者
你的arr 和psc 分别等于多少。还有你运行的是官方例程还是自己写的。

使用特权

评论回复
7
songchenping| | 2015-8-13 13:09 | 只看该作者
最好运行官方的例程看看。

使用特权

评论回复
8
amanda_s| | 2015-8-13 13:50 | 只看该作者
从你的硬件设计上,是输出低电平LED灯亮,还是输出高电平LED灯亮。
当你改变设置时,实际的引脚电平是否发生了变化?
你控制的引脚和LED灯连接的引脚是否一致?
参考官方例程,检查你的初始化代码。

使用特权

评论回复
9
铜牌之路|  楼主 | 2015-8-13 15:19 | 只看该作者
songchenping 发表于 2015-8-13 13:08
你的arr 和psc 分别等于多少。还有你运行的是官方例程还是自己写的。

自己写的,找到原因了, TIM_ClearFlag(TIM5,TIM_FLAG_Update);这句少了

使用特权

评论回复
10
铜牌之路|  楼主 | 2015-8-13 15:19 | 只看该作者
amanda_s 发表于 2015-8-13 13:50
从你的硬件设计上,是输出低电平LED灯亮,还是输出高电平LED灯亮。
当你改变设置时,实际的引脚电平是否发 ...

找到原因了,谢谢

使用特权

评论回复
11
songchenping| | 2015-8-13 17:23 | 只看该作者
铜牌之路 发表于 2015-8-13 15:19
自己写的,找到原因了, TIM_ClearFlag(TIM5,TIM_FLAG_Update);这句少了

那就好,遗漏了最重要的一句啊。:lol

使用特权

评论回复
12
铜牌之路|  楼主 | 2015-8-13 17:30 | 只看该作者
songchenping 发表于 2015-8-13 17:23
那就好,遗漏了最重要的一句啊。

嗯嗯,现在又有一个问题能不能帮忙看一下呢

使用特权

评论回复
13
铜牌之路|  楼主 | 2015-8-13 17:31 | 只看该作者

使用特权

评论回复
14
mmuuss586| | 2015-8-13 19:15 | 只看该作者
LED灯还发光,跟踪下程序看看,哪里置位了;

时钟不准,看下初始化的,分频和倍频是否正确;。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

85

帖子

0

粉丝