[技术问答]

M261芯片,如何用timer capture外部脉冲的个数?

[复制链接]
595|8
手机看帖
扫描二维码
随时随地手机跟帖
nbiot|  楼主 | 2020-2-20 20:58 | 显示全部楼层 |阅读模式
本帖最后由 nbiot 于 2020-2-20 21:00 编辑

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

                
     SYS->GPB_MFPH &= ~TM1_EXT_PB14_Msk;
    SYS->GPB_MFPH |= TM1_EXT_PB14;
               
                  TIMER_Open(TIMER1, TIMER_PERIODIC_MODE, 1000000);
    /* Update prescale to set proper resolution */
    TIMER_SET_PRESCALE_VALUE(TIMER1, 0);

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

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

     TIMER1->CTL |= TIMER_CTL_EXTCNTEN_Msk|TIMER_CTL_CNTEN_Msk ;
                /* Set capture source from ACMP1 */
     //TIMER1->EXTCTL |=TIMER_EXTCTL_CAPIEN_Msk;;//|TIMER_EXTCTL_CAPFUNCS_Msk|TIMER_EXTCTL_ECNTSSEL_Msk ;// TIMER_EXTCTL_ACMPSSEL_Msk;
                    /* Start Timer 0 */
                                
   
               
           
   
                 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

粉丝