OpenEdv-开源电子网

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

timer定时一秒,周期为什么只有0.6秒左右

[复制链接]

1

主题

5

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2017-8-17
在线时间
2 小时
发表于 2017-8-17 08:19:52 | 显示全部楼层 |阅读模式
1金钱
void TIM3_PWM_Init(u16 arr,u16 psc)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);

TIM_TimeBaseStructure.TIM_Period = arr;
TIM_TimeBaseStructure.TIM_Prescaler = psc;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode =TIM_CounterMode_CenterAligned1;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OCInitStructure.TIM_Pulse = 3000;               
TIM_OC1Init(TIM3, &TIM_OCInitStructure);
TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable);
TIM_Cmd(TIM3, ENABLE);
}
int main(void)
{

        TIM3_PWM_Init(9999,7199);

       
         
        while (1)
        {

        }
       
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2017-8-17 08:51:02 | 显示全部楼层
RCC_APB1Periph_TIM3 是使用APB1Periph时钟为36MHz
让我们的思维驾驭在电的速度之上!
回复

使用道具 举报

6

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
198
金钱
198
注册时间
2017-7-25
在线时间
39 小时
发表于 2017-8-17 09:01:57 | 显示全部楼层
APB1时钟36M
回复

使用道具 举报

4

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2017-8-15
在线时间
11 小时
发表于 2017-8-17 09:07:56 | 显示全部楼层
你用的主芯片是F几的,不同型号的ABP1的时钟频率不一样。并且你还要先看下,你的程序里现在不ABP1的时钟频率设置为了多少。
回复

使用道具 举报

13

主题

107

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
472
金钱
472
注册时间
2016-7-15
在线时间
175 小时
发表于 2017-8-17 10:48:22 | 显示全部楼层
DongInker 发表于 2017-8-17 08:51
RCC_APB1Periph_TIM3 是使用APB1Periph时钟为36MHz

看你的而配置了,timer时钟我用的就是72M
QQ截图20170817104552.png
回复

使用道具 举报

6

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
198
金钱
198
注册时间
2017-7-25
在线时间
39 小时
发表于 2017-8-17 11:32:44 | 显示全部楼层
建议你看一下RCC时钟的框图,然后按着路线检查一下配置,可能是哪里设置的倍频或者分频不对,导致到最后TIM所用的时钟不是72MHz,包括系统时钟也要检查一下
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2017-8-17
在线时间
2 小时
 楼主| 发表于 2017-8-17 15:48:09 | 显示全部楼层
duruedubbie 发表于 2017-8-17 09:07
你用的主芯片是F几的,不同型号的ABP1的时钟频率不一样。并且你还要先看下,你的程序里现在不ABP1的时钟频 ...

f107vct6,时钟没有设置,是按默认的
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2017-8-17
在线时间
2 小时
 楼主| 发表于 2017-8-17 16:11:00 | 显示全部楼层
DongInker 发表于 2017-8-17 08:51
RCC_APB1Periph_TIM3 是使用APB1Periph时钟为36MHz

如果是36M,按我这个配置时间不应该是2s左右吗
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2017-8-17
在线时间
2 小时
 楼主| 发表于 2017-8-17 16:14:31 | 显示全部楼层

如果是36M,按我这个配置时间不应该是2s左右吗
回复

使用道具 举报

4

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2017-8-15
在线时间
11 小时
发表于 2017-8-17 18:11:18 | 显示全部楼层
明远527 发表于 2017-8-17 15:48
f107vct6,时钟没有设置,是按默认的

手册上说:用户可通过多个预分频器配置AHB、高速APB(APB2)和低速APB(APB1)域的频率。 AHB和APB2域的最大频率是72MHz。 APB1域的最大允许频率是36MHz。
你最好找到你的程序里有关RCC配置的部分,找到几个预分频系数实际计算一下。如果你使用的CUBE问题就比较好解决了,直接查看时钟树。用固件库的话,就要花功夫找一下了。
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2017-8-17
在线时间
2 小时
 楼主| 发表于 2017-8-17 19:57:48 | 显示全部楼层
duruedubbie 发表于 2017-8-17 18:11
手册上说:用户可通过多个预分频器配置AHB、高速APB(APB2)和低速APB(APB1)域的频率。 AHB和APB2域的最大 ...

好的,谢啦
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2017-8-17
在线时间
4 小时
发表于 2017-8-18 19:24:01 | 显示全部楼层
T=ARR*PSC/TIM3_CLK
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-15 01:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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