OpenEdv-开源电子网

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

STM32F103 定时器级联TIM1 TIM2 组成32位定时器

[复制链接]

16

主题

147

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7140
金钱
7140
注册时间
2015-1-23
在线时间
106 小时
发表于 2016-3-29 15:25:47 | 显示全部楼层 |阅读模式
定时器1的配置程序, 功能如下: 通过通道1 TIM_TS_TI1FP1  形成外部触发,  同时作为主定时器
        TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
        TIM_ICInitTypeDef        TIM_ICInitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);
       
        TIM_ICStructInit(& TIM_ICInitStructure);   //缺省设置

        //重新将Timer设置为缺省值
        TIM_DeInit(TIM1);
        //采用内部时钟给TIM2提供时钟源
        //TIM_InternalClockConfig(TIM2);
        //预分频系数为36000-1,这样计数器时钟为72MHz/36000 = 2KHz                             0.5ms
        TIM_TimeBaseStructure.TIM_Prescaler = 1-1;
        //设置时钟分割
        TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
        //设置计数器模式为向上计数模式
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;   //  TIM_CounterMode_Down
        //设置计数溢出大小,每计2个数就产生一个更新事件
        TIM_TimeBaseStructure.TIM_Period = 65536-1;                                                   //   10*0.5=5ms               
        //重复计数,就是重复溢出多少次才给你来一个溢出中断
        TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
        //将配置应用到TIM2中
        TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);

        TIM_ICStructInit(&TIM_ICInitStructure);                                                 //默认初始化结构体         
        TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
        TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
        TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
        TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
        TIM_ICInitStructure.TIM_ICFilter = 0x0;
        TIM_ICInit(TIM1, &TIM_ICInitStructure);

        TIM_SelectInputTrigger(TIM1, TIM_TS_TI1FP1);                                        //选择触发引脚
        TIM_SelectOutputTrigger(TIM1, TIM_TRGOSource_Update);                        //选择输出模式  主模式选择      这是级联的关键
        TIM_SelectSlaveMode(TIM1, TIM_SlaveMode_Trigger);                                 //从模式设置  触发模式
        TIM_SelectMasterSlaveMode(TIM1, TIM_MasterSlaveMode_Enable);         //启动定时器的主从模式

以下是TIM2的配置, 主要就是配置成外部时钟模式,选择输入信号
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//       //重新将Timer设置为缺省值

        TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_External1);                        //外部时钟模式    外部时钟模式1 – 选中的触发输入(TRGI)的上升沿驱动计数器
        TIM_SelectInputTrigger(TIM2, TIM_TS_ITR0);                                //定时器1 的Trigger 0做为触发输入
这样就可以了


以上是花了两天时间做出来的,  在网上没有找到同样的例子, 在此发表.  有问题的请留言


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

使用道具 举报

0

主题

5

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2016-4-1
在线时间
0 小时
发表于 2016-4-2 14:21:34 | 显示全部楼层
厉害,学习                                                                                                                                                   
回复 支持 反对

使用道具 举报

8

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2016-3-11
在线时间
47 小时
发表于 2016-5-4 13:43:34 | 显示全部楼层
定时器1的输入捕获中断函数要咋写,大神晓得不?
回复 支持 反对

使用道具 举报

16

主题

147

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7140
金钱
7140
注册时间
2015-1-23
在线时间
106 小时
 楼主| 发表于 2016-10-20 15:22:47 | 显示全部楼层
031441229 发表于 2016-5-4 13:43
定时器1的输入捕获中断函数要咋写,大神晓得不?

还没用过
回复 支持 反对

使用道具 举报

5

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2015-10-2
在线时间
5 小时
发表于 2016-10-20 21:38:35 | 显示全部楼层
学习~                  
回复 支持 反对

使用道具 举报

17

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2017-7-12
在线时间
20 小时
发表于 2017-8-7 10:08:04 | 显示全部楼层
这个是从定时器更新一次,主定时器+1么
回复 支持 反对

使用道具 举报

16

主题

147

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7140
金钱
7140
注册时间
2015-1-23
在线时间
106 小时
 楼主| 发表于 2017-8-17 11:42:19 | 显示全部楼层
巧呀巧呀巧克力 发表于 2017-8-7 10:08
这个是从定时器更新一次,主定时器+1么

这个是定时器级联  组成32位定时器
回复 支持 反对

使用道具 举报

16

主题

147

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7140
金钱
7140
注册时间
2015-1-23
在线时间
106 小时
 楼主| 发表于 2017-8-17 11:59:37 | 显示全部楼层
东方赤那 发表于 2017-8-17 11:42
这个是定时器级联  组成32位定时器

你的理解是对的
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2019-7-1
在线时间
3 小时
发表于 2019-8-8 13:21:06 | 显示全部楼层
一个TIM我知道,那组成32位的定时器后,2个TIM定时多少秒该怎么算
回复 支持 反对

使用道具 举报

16

主题

147

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7140
金钱
7140
注册时间
2015-1-23
在线时间
106 小时
 楼主| 发表于 2019-8-16 10:44:54 | 显示全部楼层
长安街上 发表于 2019-8-8 13:21
一个TIM我知道,那组成32位的定时器后,2个TIM定时多少秒该怎么算

从定时器计满后, 主定时器加一
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2020-9-10
在线时间
0 小时
发表于 2020-9-10 18:51:25 | 显示全部楼层
定时器启动了没有
回复 支持 反对

使用道具 举报

16

主题

147

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7140
金钱
7140
注册时间
2015-1-23
在线时间
106 小时
 楼主| 发表于 2020-11-13 13:04:59 | 显示全部楼层

可以工作
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-4 06:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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