将定时器3做为定时器2 的时钟输入,可用定时器2的值作为定时器3的中断次数、PWM方波个数等

定时器3作为主定时器,需要配置更新事件作为从定时器的预分频器,另外需将定时器3作为主模式运行,置位从模式控制寄存器(TIMx_SMCR)中的第7位。

定时器2作为从定时器,需要设置从模式控制寄存器(TIMx_SMCR)中的TS位为010,

#include "timer.h"
#include "led.h"
/*使用正点原子模板例程改编使用定时器3作为主定时器,定时器2作为从定时器PB5指定为LED输出,观察定时器运行情况
*/
void TIM2_Slave_Init(u16 period,u16 prescaler)
{TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //时钟使能//定时器TIM2初始化TIM_TimeBaseStructure.TIM_Period = period-1;                //设置在下一个更新事件装入活动的自动重装载寄存器周期的值   TIM_TimeBaseStructure.TIM_Prescaler =prescaler-1;          //设置用来作为TIMx时钟频率除数的预分频值TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;     //设置时钟分割:TDTS = Tck_timTIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);             //根据指定的参数初始化TIMx的时间基数单位TIM_SelectInputTrigger(TIM2,TIM_TS_ITR2);                    //选择TIMx输入触发源   TIM_SelectSlaveMode(TIM2,TIM_SlaveMode_External1);          //选中触发( TRGI)的上升沿作为计数器时钟NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;              //TIM2中断NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;      //先占优先级0级NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;        //从优先级3级NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;            //IRQ通道被使能NVIC_Init(&NVIC_InitStructure);                           //初始化NVIC寄存TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE );                    //使能指定的TIM2中断,允许更新中断TIM_Cmd(TIM2, ENABLE);                                      //使能TIMx
}void TIM2_IRQHandler(void)   //TIM3中断
{if(TIM_GetITStatus(TIM2,TIM_IT_Update)!=RESET){TIM_ClearITPendingBit(TIM2, TIM_IT_Update  );              //清除TIMx更新中断标志 LED1 = !LED1;}
}void TIM3_Init(u16 period,u16 prescaler)
{TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);        //时钟使能//定时器TIM3初始化TIM_TimeBaseStructure.TIM_Period = period-1;                 //设置在下一个更新事件装入活动的自动重装载寄存器周期的值   TIM_TimeBaseStructure.TIM_Prescaler =prescaler-1;          //设置用来作为TIMx时钟频率除数的预分频值TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;     //设置时钟分割:TDTS = Tck_timTIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);             //根据指定的参数初始化TIMx的时间基数单位TIM_SelectMasterSlaveMode(TIM3, TIM_MasterSlaveMode_Enable);//主定时器模式TIM_SelectOutputTrigger(TIM3, TIM_TRGOSource_Update);        //主定时器更新事件作为从定时器时钟源TIM_ITConfig(TIM3,TIM_IT_Update,DISABLE );                   //使能指定的TIM3中断,允许更新中断TIM_Cmd(TIM3, ENABLE);                                      //使能TIMx
}

定时器源码见本链接,使用MDK5.18,单片机是STM32F103RET6

源码链接

STM32F1主从定时器设置相关推荐

  1. 【STM32学习】(10)STM32F1通用定时器实现脉冲计数器

    STM32F1通用定时器实现脉冲计数器 通过TIM3实现定时,我设计的一秒计数一次,然后在数码管(光阳极)上显示.数码不仅记录脉冲,还可以通过按键来调节: 按键1 清零 按键2加一 按键3减一 按键4 ...

  2. mysql 去重 根据id_mycat数据库集群系列之mysql主从同步设置

    最近在梳理数据库集群的相关操作,现在花点时间整理一下关于mysql数据库集群的操作总结,恰好你又在看这一块,供一份参考.本次系列终结大概包括以下内容:多数据库安装.mycat部署安装.数据库之读写分离 ...

  3. html倒计时timer,JavaScript定时器设置、使用与倒计时案例详解

    本文实例讲述了JavaScript定时器设置.使用与倒计时案例.分享给大家供大家参考,具体如下: 1.设置定时器 定时器,适用于定时执行的任务中.在BOM的window对象中,有这样的两个函数是用于设 ...

  4. DNS基础:域名解析、多重域名解析、特殊域名解析、主从同步设置

    DNS基础:域名解析.多重域名解析.特殊域名解析.主从同步设置 作者:卖兔子的萝北 分类:学习笔记 虚拟机A ip:192.168.4.7 虚拟机B ip:192.168.4.207 一.域名解析 1 ...

  5. nRF51822定时器设置

    一.nRF51822的时钟系统 nRF51822有两种时钟源:1.高频时钟HFCLK:2.低频时钟LFCLK.这两种时钟只有当系统处于System ON模式的情况下才可用. 低频时钟源 系统有三种低频 ...

  6. 关于jquery定时器设置问题 ios定时器无法响应问题 ios 时间显示为NaN问题 优惠时间倒计时

    设计时间为:"2019-12-17"发现安卓端和浏览器端,浏览器模拟器显示均没问题,但是ios 手机显示为NaN 解决办法 :把"2019-12-17"改为&q ...

  7. Floquet port激励及主从边界设置

    相控阵天线建模,请参照李明洋的<HFSS电磁仿真设计应用详解>中阵列天线分析一章 Floquet port激励及主从边界设置 1.Floquet port简介 2.基本模型建立 3.主从边 ...

  8. mysql设置主从同步只读_MySql主从同步设置

    主MySql服务器A:192.168.1.3 从MySql服务器B:192.168.1.4 1.编辑A的my.cnf,一般在/etc/my.cnf,在[mysqld]下面添加 log-bin=mysq ...

  9. 51单片机c语言定时器程序,51单片机定时器设置入门与程序解析

    89C51单片机有两个计数器T0和T1,每个计数器都是由两个8位的RAM 单元组成的,即每个计数器都是16 位的计数器,最大的计数容量是216=65536,记住是从0-65535. 其次.提供给定时器 ...

  10. 关于STM32的定时器设置

    1.定义RCC时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); 2.定义时钟触发 TIM_TimeBaseInit(TIM2, & ...

最新文章

  1. 无线网络连接一直显示“正在获取网络地址”的解决办法
  2. 美国计算机专业录取率,美国留学高录取率院校计算机专业申请条件是什么? 爱问知识人...
  3. asp.net用Zxing库实现条形码输出
  4. Android Studio 找不到EventBus/ButterKnife等第三方包解决方案
  5. 桥接模式下的手机-电脑-开发板连接
  6. 程序设计爬楼梯问题_楼梯案例:解决楼梯问题的C ++程序
  7. live2dviewer android,live2dviewerex安卓版
  8. 寻找必败态——一类博弈问题的快速解法
  9. python列表定义和操作_Python 列表的定义及操作
  10. Oracle 字符集
  11. 计算学生成绩 c语言,c语言项目实战2学生成绩的输入与计算.ppt
  12. RTI_DDS自定义插件开发 2 NDDS传输插件API
  13. 怎么查看电脑开关机时间记录
  14. 向日葵在mac不能以服务器运行吗,macOS系统向日葵远程控制鼠标无法点击的问题...
  15. 单号查询方法,怎么查快递物流到哪里了
  16. MTCNN源码详细解读(1)- PNet/RNet/ONet的网络结构和损失函数
  17. android应用开发入门
  18. 你了解吗?小游戏和H5小游戏不是一码事
  19. 小苹果活动助手1.27最新版电脑版
  20. 科技企业上市就是一大悲剧(下)

热门文章

  1. windows悬浮按钮_如何在Windows 10上配置笔及其按钮
  2. Softing pnGate系列网关:将PROFIBUS总线集成到PROFINET网络
  3. 服务器上可以监控虚拟机操作吗,使用Vmware免费虚拟机监控程序的利弊
  4. 豆腐锅巴--怀念娭毑_原水_新浪博客
  5. 为什么项目验收前的总是非常忙乱?
  6. 【分享】ArcGIS实现分子分母等标注实用技巧
  7. 图像处理——中值滤波
  8. 计算机导航窗格有两个c盘,电脑怎么格式化所有盘只留系统
  9. 有向图(网)、无向图(网)的构造以及遍历
  10. 苹果iPhone手机怎么恢复备份?详细iOS备份怎么恢复教程