原创 TIM设置为输入捕获模式的出现的问题

2008-10-14 19:14 7209 5 6 分类: MCU/ 嵌入式
   在应用的时候将将TIM2的CH1,Ch2两个通道设置为输入捕获模式,为了测量路信号的频率

   关于TIM2的配置如下

  TIM_ICInitStructure.TIM_ICMode = TIM_ICMode_ICAP;                 //配置为输入捕获模式          

  TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;                                 //选择通道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(TIM2, &TIM_ICInitStructure);



  TIM_ICInitStructure.TIM_ICMode = TIM_ICMode_ICAP;                 //配置为输入捕获模式          

  TIM_ICInitStructure.TIM_Channel = TIM_Channel_2;                                 //选择通道2

  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(TIM2, &TIM_ICInitStructure);



  /* Select the TIM2 Input Trigger: TI2FP2 【输入触发源选择】*/

  TIM_SelectInputTrigger(TIM2,TIM_TS_TI1FP1);                      //参考TIM结构图选择滤波后的TI2输入        寄存器SMCR

                

  /* Select the slave Mode: Reset Mode */

  TIM_SelectSlaveMode(TIM2,TIM_SlaveMode_Reset);                  //复位模式-选中的触发输入(TRGI)的上升沿初始化计数器,并且产生一个更新线号

                

  /* Enable the Master/Slave Mode */

  TIM_SelectMasterSlaveMode(TIM2,TIM_MasterSlaveMode_Enable);            //主从模式选择







这里注意了 TIM_SelectInputTrigger(TIM2,TIM_TS_TI1FP1);                      //参考TIM结构图选择滤波后的TI2输入        寄存器SMCR

如果这么设置的输入触发源为TI1FP1  我只是要捕捉CH1的信号频率 ,但是CH2不接信号读出来的数据跟CH1一模一样,如果设置为
TIM_SelectInputTrigger(TIM2,TIM_TS_TI2FP2); 设置的输入触发源为TI2FP2,那么就能准确的读回来
CH2上的信号频率,此时CH1没有接信号度回来全部是0



为什么设置了前者TIM_SelectInputTrigger(TIM2,TIM_TS_TI1FP1);  两个通道CH1,CH2都有数据呢   纳闷中

希望这个不会是STM32的bug,正在寻找解决的办法。。。。

文章评论1条评论)

登录后参与讨论

用户377235 2012-4-2 13:40

你应该选择pwmi模式才能两个联起来,一个测频率,一个测占空比
相关推荐阅读
用户165162 2010-10-15 23:43
CANopen简介
CANopen简介    CANopen协议集定义了基于CAN的分布式工业自动化系统的应用标准以及CAN应用层通信标准。CANopen是CAN-in-Automation(CiA)定义的标准之一,并且...
用户165162 2009-03-04 22:34
TServerSocket和TClientSocket地运用(转载)
在网络编程中,WinSocket API编程是最基本,也是最麻烦的地方(说句不怕影响形象的话,我对此就是一知半解)。但是,如果你是使用C++Builder作为编程平台,你就偷着乐吧,有了BCB,菜鸟变...
用户165162 2008-11-09 11:40
奥巴马就职演讲
Hello, Chicago!   芝加哥,你好!If there is anyone out there who still doubts that America is a place where...
用户165162 2008-11-02 12:43
STM32 RTC 对晶振的要求实在不地道
zhwxc 发表于 2008-8-19 18:00 ST MCU ←返回版面 楼主: STM32 RTC 对晶振的要求实在不地道今天到电子市场找了一下,几乎都是12.5p负载电容的32768晶...
用户165162 2008-11-01 14:50
模糊K均值算法的C++实现
//****************************************************************************////文件名:kaverage.cpp  ...
用户165162 2008-10-20 17:50
10种软件滤波方法的示例程序[转帖]
1、限副滤波 /* A值可根据实际情况调整 value为有效值,new_value为当前采样值 滤波程序返回有效的实际值 */ #define A 10 char value; char filter...
我要评论
1
5
关闭 站长推荐上一条 /2 下一条