[技术问答] M261芯片,如何用timer capture外部脉冲的个数?

[复制链接]
1049|8
 楼主| nbiot 发表于 2020-2-20 20:58 | 显示全部楼层 |阅读模式
本帖最后由 nbiot 于 2020-2-20 21:00 编辑

M261芯片,如何用timer capture外部脉冲的个数?
用timer1,PB14,代码如下,是没有捕获到脉冲。请问是什么原因?

  1.                
  2.      SYS->GPB_MFPH &= ~TM1_EXT_PB14_Msk;
  3.     SYS->GPB_MFPH |= TM1_EXT_PB14;
  4.                
  5.                   TIMER_Open(TIMER1, TIMER_PERIODIC_MODE, 1000000);
  6.     /* Update prescale to set proper resolution */
  7.     TIMER_SET_PRESCALE_VALUE(TIMER1, 0);

  8.     /* Set compare value as large as possible, so don't need to worry about counter overrun too frequently */
  9.     TIMER_SET_CMP_VALUE(TIMER1,0xFFFFFF);

  10.     /* Configure Timer 0 free counting mode */ //TIMER_COUNTER_EVENT_FALLING
  11.     TIMER_EnableCapture(TIMER1, TIMER_CAPTURE_FREE_COUNTING_MODE,TIMER_CAPTURE_EVENT_FALLING);//TIMER_CAPTURE_COUNTER_RESET_MODE, TIMER_CAPTURE_EVENT_RISING);

  12.      TIMER1->CTL |= TIMER_CTL_EXTCNTEN_Msk|TIMER_CTL_CNTEN_Msk ;
  13.                 /* Set capture source from ACMP1 */
  14.      //TIMER1->EXTCTL |=TIMER_EXTCTL_CAPIEN_Msk;;//|TIMER_EXTCTL_CAPFUNCS_Msk|TIMER_EXTCTL_ECNTSSEL_Msk ;// TIMER_EXTCTL_ACMPSSEL_Msk;
  15.                     /* Start Timer 0 */
  16.                                 
  17.    
  18.                
  19.            
  20.    
  21.                  TIMER_StartCapture(TIMER1);
643757107 发表于 2020-2-20 23:09 | 显示全部楼层
是不是有个计数模式。
 楼主| nbiot 发表于 2020-2-21 11:12 | 显示全部楼层
如何设置呢?
mintspring 发表于 2020-2-21 18:36 | 显示全部楼层
这个楼主也实现了吧
 楼主| nbiot 发表于 2020-2-21 19:26 | 显示全部楼层
还没有实现。
玛尼玛尼哄 发表于 2020-2-22 15:47 | 显示全部楼层
这个每一中文手册难搞,有个思路,先找M051的手册看看,看看是怎么实现,等看懂了,找对应的库函数配置,然后再看M261的库函数,我发现新塘的新版库函数基本上名字是一样的
xixi2017 发表于 2020-2-23 20:12 | 显示全部楼层
还没实现嗯?
jasontu 发表于 2020-2-25 07:55 | 显示全部楼层
參考下m031的TIMER_EventCounter
   /* Update prescale and compare value to what we need in event counter mode. */
    TIMER0->CTL = (TIMER0->CTL & ~(TIMER_CTL_OPMODE_Msk | TIMER_CTL_PSC_Msk)) |
                  (TIMER_ONESHOT_MODE | TIMER_CTL_EXTCNTEN_Msk | TIMER_CTL_INTEN_Msk);
    TIMER0->CMP = 1000;

    /* Counter increase on falling edge */
    TIMER0->EXTCTL = (TIMER0->EXTCTL & ~(TIMER_EXTCTL_CNTPHASE_Msk)) |
                     (TIMER_COUNTER_FALLING_EDGE);

    /* Enable timer interrupt */
    NVIC_EnableIRQ(TMR0_IRQn);

    /* Start Timer 0 */
    TIMER0->CTL |= TIMER_CTL_CNTEN_Msk;
643757107 发表于 2020-2-25 13:29 | 显示全部楼层
其他系列的应该有例子
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:QQ 2419286292

82

主题

181

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部