OpenEdv-开源电子网

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

stm32f4的定时器问题

[复制链接]

15

主题

79

帖子

0

精华

初级会员

Rank: 2

积分
167
金钱
167
注册时间
2012-8-7
在线时间
7 小时
发表于 2012-8-12 19:51:54 | 显示全部楼层 |阅读模式
求助。。。。。。。。。。。。。。谢谢!!!!!!!!!!!!!!!!!!
定时器的配置如下:
void Timer_Config(void)
{
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);

/* 基础设置*/
TIM_TimeBaseStructure.TIM_Period = 25000;    //计数值   
TIM_TimeBaseStructure.TIM_Prescaler = 33600-1;        //预分频,此值+1为分频的除数
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;  
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

TIM_ClearFlag(TIM2,TIM_FLAG_Update);
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
TIM_Cmd(TIM2, ENABLE);

}





我是这么算的:
F4的TIM2频率是168M,
那么按照这个配置后定时应该是168 000 000 ÷ 33600 = 5000  ,也就是一秒钟的时间计数器可以跑到 5000 ,
那么要计数到 25000 的话,计数器要经过 5s 的时间就可以到 25000 这个值。

我配置的现象是正常情况下 led1 闪烁,计数器到后 led2 闪烁。

现在的问题是:秒表测试后实际上要经过 10s 的时间 led2才闪烁,换了几个分频值都是要两倍的时间才达到效果!请问是为什么??????是我算错了还是有其它要注意的地方。。。

【好好学习天天向上】
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2012-8-12 21:34:27 | 显示全部楼层
回复【楼主位】yougen1314:
---------------------------------
差倍数的话,最好看看时钟树图,看看是不是有什么地方分频了.还可以软件仿真,直接看寄存器,是不是正确.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

15

主题

79

帖子

0

精华

初级会员

Rank: 2

积分
167
金钱
167
注册时间
2012-8-7
在线时间
7 小时
 楼主| 发表于 2012-8-13 09:28:02 | 显示全部楼层
看了这个图,没地方分频,我再用软件仿真试试。。。谢谢原子大哥





【好好学习天天向上】
回复 支持 反对

使用道具 举报

5

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2012-2-25
在线时间
0 小时
发表于 2012-8-16 15:49:33 | 显示全部楼层
168M是系统时钟
貌似TIM2-7默认分频是2,频率是84M

另外,印象中TIM2最高频率是84M
我试过TIM3的,就算分频数全为1,频率也是84M
回复 支持 反对

使用道具 举报

15

主题

79

帖子

0

精华

初级会员

Rank: 2

积分
167
金钱
167
注册时间
2012-8-7
在线时间
7 小时
 楼主| 发表于 2012-9-1 11:04:06 | 显示全部楼层
回复【4楼】Juuulien:
---------------------------------

那在程序里怎样可以看到这个84M呢?有木有方法。。。

这样说来是应该要84M才正确,嘿嘿
【好好学习天天向上】
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2012-11-15
在线时间
0 小时
发表于 2012-11-22 10:33:23 | 显示全部楼层
我写了一个和你一样的程序,调试程序的时候,就是不进入我写的中断函数里面去执行led的闪烁?这是中断嵌套向量。你看一下。。。。
void NVIC_Config(void)
{
NVIC_InitTypeDef NVIC_InitStruct;

NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

NVIC_InitStruct.NVIC_IRQChannel = TIM2_IRQn;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1; 
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStruct);

}
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2012-11-15
在线时间
0 小时
发表于 2012-11-22 10:35:17 | 显示全部楼层
回复【2楼】正点原子:
回复【楼主位】yougen1314: --------------------------------- 差倍数的话,最好看看时钟树图,看看是不是有什么地方分频了.还可以软件仿真,直接看寄存器,是不是正确.
---------------------------------
回复【6楼】dengbing111:
回复【2楼】正点原子:
---------------------------------
原子哥,我写了一个和上面一样的程序,调试程序的时候,就是不进入我写的中断函数里面去执行led的闪烁?这是中断嵌套向量。就是想实现tim2的溢出中断。你看一下。。。。
 void NVIC_Config(void) { NVIC_InitTypeDef NVIC_InitStruct; NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); NVIC_InitStruct.NVIC_IRQChannel = TIM2_IRQn; NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;  NVIC_InitStruct.NVIC_IRQChannelCmd = 
......
---------------------------------
回复 支持 反对

使用道具 举报

3

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2012-12-28
在线时间
5 小时
发表于 2012-12-28 20:18:39 | 显示全部楼层
回复【楼主位】yougen1314:
---------------------------------
建议你好好看看数据手册你这样的设置10s是对的!是你计算错了!!TIM2定时器是在APB1上!
回复 支持 反对

使用道具 举报

3

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2012-12-28
在线时间
5 小时
发表于 2012-12-28 20:19:45 | 显示全部楼层
回复【8楼】wfmartin28:
---------------------------------
回复【楼主位】yougen1314:
---------------------------------
你的定时器的工作频率为2500hz!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 17:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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