首页 > 其他分享 >关于定时器ETR计数功能

关于定时器ETR计数功能

时间:2023-04-17 14:55:32浏览次数:43  
标签:ETR 定时器 TIM 计数 TimeBaseStructure TIM1 GPIO

关于使用定时器计算外部脉冲的方式,除却使用输入捕获方式之外,还可以使用定时器的ETR计数方式。
如下图,首先关于定时器的时钟输入来源,可以分为4类,如下图:

当使用选择外部时钟源模式2时,可在外部时钟输入引脚的每一个上升沿或者下降沿计数,如下图介绍:

关于使用ETR计数功能的初始化配置程序,具体如下:

 void TIM_ETR_Init()
 {
     GPIO_InitTypeDef         GPIO_InitStructure={0};
     TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure={0};

     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_TIM1, ENABLE);

     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
     GPIO_Init(GPIOA, &GPIO_InitStructure);

     TIM_TimeBaseStructure.TIM_Period = 0xFFFF;
     TIM_TimeBaseStructure.TIM_Prescaler = 0x00;
     TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
     TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
     TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
     TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);  // Time base configuration

     //注意使用ETR引脚脉冲计数时,需要选择时钟外部模式2
     TIM_ETRClockMode2Config(TIM1, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);

     TIM_SetCounter(TIM1, 0);
     TIM_Cmd(TIM1, ENABLE);
 }

注意使用ETR计数功能,要选择使用对应的ETR引脚,例程选择使用PA12引脚,如下图。

 获取计数器的值,程序如下:

 uint32_t Get_TIM1_ETR_Counter(void)
 {
     uint32_t u32Counter;

     u32Counter = TIM_GetCounter(TIM1);
     TIM_SetCounter(TIM1, 0);
     return u32Counter;
 }

关于脉冲频率的计算:
脉冲频率 = 定时器计数个数/计数时间

 

标签:ETR,定时器,TIM,计数,TimeBaseStructure,TIM1,GPIO
From: https://www.cnblogs.com/liaigu/p/17325840.html

相关文章

  • archery entered FATAL state, too many start retries too quickly
    #################################一、配置文件:supervisord.conf(venv)[root@wy3-db245archery]#catsupervisord.conf[unix_http_server]file=supervisor.sock[supervisord]logfile=logs/supervisord.lognodaemon=false[supervisorctl]serverurl=unix://supervisor.s......
  • 论文解读(PAWS)《Semi-Supervised Learning of Visual Features by Non-Parametrically
    论文信息论文标题:Semi-SupervisedLearningofVisualFeaturesbyNon-ParametricallyPredictingViewAssignmentswithSupportSamples论文作者:MahmoudAssran, MathildeCaron, IshanMisra, PiotrBojanowski, ArmandJoulin, NicolasBallas论文来源:NeurIPS2021论......
  • gitee github 左侧栏树形显示插件 Octotree codetree 浏览器插件
    起因看到一位仁兄用gitee做仓库https://gitee.com/zhengqingya/java-developer-document然后左侧栏挺方便(抖音视频)下载chrome扩展市场搜octotree用于githubcodetree用于gitee双核浏览器扩展市场搜octotree用于githubgitcodetree用于gitee......
  • 图形学(6)Ray Tracing:Photometry
    Photometry光能LuminousEnergy单位流明秒(\(lm\cdots\))\[\begin{align*}&Q\[lm\cdots]\end{align*}\]光通量LuminousFlux(power)单位流明(\(lm\))\[\Phi\equiv\frac{dQ}{dt}\[lm]\]光度IllumiousIntensity每单位立体角的光通量,单位坎德拉(\(cd\))\[I\equiv......
  • java.lang.NoSuchMethodException: com.innovation.web.BuyServlet.get(javax.servlet
    问题描述我将路径定义到相应的servlet的函数方法里面,然后就出现了这个问题,很明显的找不到相应的函数方法;问题解决将目光重新放到我定义的相关路径那里,发现我出于习惯,将servlet里面原本应该是名为checkIt的函数方法写成了get方法,改回去之后,这个问题也就解决啦!......
  • 12 Geometry
    关键点MeshSubdivision(LoopSubdivision,Catmull-ClarkSubdivision)MeshSimplification(EdgeCollapsing)MeshRegularization1.MeshOperarions1.1MeshSubdivision--Upsampling细分细分:把三角形数量增多调整:改变三角形的位置1.1.1LoopSubdivision每个三角形......
  • 11 Geometry(Curves and Surface)
    关键点BezierCurvesBezierSurfaces1.BezierCurves贝塞尔曲线用一系列的控制点定义一个曲线,并且定义了一系列控制。如下定义起止点为p0、p3,且定义起始切线,则绘制出一条曲线。1.1deCasteljauAlogrithmThreeinputpoints定义一个时间t,然后取b0b1与b1b2的相应比......
  • 10 Geometry(Introduction)
    关键点ImplicityGeometryAlgebraicSurfaceContructiveSolidGeometry(CSG)DistanceFunctionsExplicityGeometryPointCloudPolygonMesh1.RepresentGeometry1.1ImplicitGeometry隐式几何不说明点的位置,而是给出点的关系,得到一个点的集合,即一个几何的表示。......
  • MFC-SetRectEmpty将矩形各个坐标设置为0
     RECTrect={10,10,50,100};BOOLb=SetRectEmpty(&rect);//将矩形各个坐标设置为0/*参数1:LPRECTlprc指向RECT结构的指针返回值:如果该函数成功,则返回值为非零值。如果函数失败,则返回值为零*/     ......
  • Tim定时器2【功能最强大结构最复杂的外设】
    【定时中断基本结构】 【预分频器时序】   重要前提:在改变预分频系数的时候,得等到下一次计数周期才能改变实际的频率预分频器的输入时钟CK_PSC:选内部时钟的话一般是72MHz计数器使能CNT_EN:高电平计数器正常运行,低电平计数器停止计数器时钟CK_CNT:既是预分频器的时钟输出......