OpenEdv-开源电子网

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

定时器定时时间相差太大是什么原因

[复制链接]

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
发表于 2018-4-26 17:30:33 | 显示全部楼层 |阅读模式
2金钱
本帖最后由 关山难越 于 2018-4-27 08:44 编辑

在用定时器中断的时候,理论上计算的是隔了0.5S就发生一次中断,但实际上是大约5秒之后才发生中断,请教一下是什么原因,时钟是32M的,
[mw_shl_code=applescript,true]void TIM3_IT_Init(uint16_t psc,uint16_t arc)
{
        //3õê¼»ˉ¶¨ê±Æ÷½á11ìå
        TIM_TimeBaseInitTypeDef TIM_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;        
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);        //′ò¿a¶¨ê±Æ÷μÄíaéèê±Öó
        TIM_DeInit(TIM3);
   //TIM»ù′¡ÅäÖÃ
        TIM_InitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
        TIM_InitStructure.TIM_CounterMode=TIM_CounterMode_Up;        
        TIM_InitStructure.TIM_Period=arc;//×Ô¶ˉÖØ×°ÔØÖμ
        TIM_InitStructure.TIM_Prescaler=psc;        //Ô¤·ÖÆμÖμ
        TIM_TimeBaseInit(TIM3,&TIM_InitStructure);        
        TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
        TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);//ÔêDí¶¨ê±Æ÷3¸üDÂÖD¶Ïê1Äü        

        
        //NVIC configration
        NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
        NVIC_Init(&NVIC_InitStructure);
        
        TIM_Cmd(TIM3,ENABLE);//ê1Äü ¶¨ê±Æ÷3        
        
               
}

//¶¨ê±Æ÷4ÖD¶Ï·tÎñoˉêy
void TIM3_IRQHandler(void)
{
        //delay_ms(50);
        if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET) //òç3öÖD¶Ï
        {
     //LED3_ON;
                  printf("111111\n");        
                  LD_ALLON();        
                        TIM_ClearITPendingBit(TIM3,TIM_IT_Update);  //Çå3yÖD¶Ï±ê־λ
                  
               
        }

}



mian.c

int main(void)
{        
        //static uint8_t a;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        SystemInit();
        delay_init(32);
        uart_init();
        LED_ALLInit();
        KEY_ALLInit();
        //EXTI_Key_Init();        
  LD_ALLOFF();
        TIM3_IT_Init((5000-1),(3200-1));
        while(1)
        {
//                a=Get_KeyVal(KEY1_PORT,KEY1_Pin);
//     if(a==1)
//                 {
//                         delay_ms(50);
//                         LD_ALLON();
//                 }
        }
        
}[/mw_shl_code]


想问一下是 哪里没有配置好还是什么原因,我计算的  3200*5000/32000000=0.5s
但是实际上确实相差很大

QQ图片20180427084250.png
QQ图片20180427084302.jpg
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
 楼主| 发表于 2018-4-26 17:32:50 | 显示全部楼层
我其他的初始化的函数里没有任何延时,只运行了定时器中断,
回复

使用道具 举报

0

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2018-4-9
在线时间
30 小时
发表于 2018-4-26 17:35:27 | 显示全部楼层
去掉  printf("111111\n");试试
回复

使用道具 举报

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
 楼主| 发表于 2018-4-26 18:10:54 | 显示全部楼层
DOTHAT202 发表于 2018-4-26 17:35
去掉  printf("111111\n");试试

跟这个没关系,这是中断函数里的,就是不知道哪里没配好,有点郁闷
回复

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7464
金钱
7464
注册时间
2015-1-15
在线时间
1368 小时
发表于 2018-4-26 18:29:16 | 显示全部楼层
喜闻乐见
回复

使用道具 举报

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
 楼主| 发表于 2018-4-26 18:58:29 | 显示全部楼层

什么意思
回复

使用道具 举报

9

主题

87

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1435
金钱
1435
注册时间
2015-5-19
在线时间
132 小时
发表于 2018-4-26 19:28:59 | 显示全部楼层
32M时钟是系统时钟还是定时器时钟?定时器时钟有分频过吗?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-4-27 01:04:49 | 显示全部楼层
估计没倍频到72M, 学习下我们例程吧。
回复

使用道具 举报

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
 楼主| 发表于 2018-4-27 08:45:10 | 显示全部楼层
正点原子 发表于 2018-4-27 01:04
估计没倍频到72M, 学习下我们例程吧。

我上传了照片,系统就是36M的
回复

使用道具 举报

17

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
466
金钱
466
注册时间
2018-4-26
在线时间
78 小时
 楼主| 发表于 2018-4-27 08:45:35 | 显示全部楼层
胖子阳 发表于 2018-4-26 19:28
32M时钟是系统时钟还是定时器时钟?定时器时钟有分频过吗?

我上传了图片,系统时钟就是32的
回复

使用道具 举报

6

主题

126

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
207
金钱
207
注册时间
2018-4-18
在线时间
10 小时
发表于 2018-4-27 09:26:47 | 显示全部楼层
谢谢楼主分享~我也分享一个阻容感采购群:567145302
回复

使用道具 举报

6

主题

359

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1604
金钱
1604
注册时间
2017-12-18
在线时间
173 小时
发表于 2018-4-27 10:29:25 | 显示全部楼层
电子之家商城 发表于 2018-4-27 09:26
谢谢楼主分享~我也分享一个阻容感采购群:567145302

???
回复

使用道具 举报

0

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
361
金钱
361
注册时间
2018-3-29
在线时间
53 小时
发表于 2018-4-27 11:55:04 | 显示全部楼层

就是打广告的
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-7 16:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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