打印

求助LPC1768 计数器的问题

[复制链接]
3496|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ytfdhb|  楼主 | 2012-12-12 17:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟,最近正在学习LPC1768,现在学到了定时器,计数器这块,想用定时器0计时,定时器1做计数器,测试外部脉冲的频率,我设定的是P1.19脚为脉冲捕获输入口,部分代码如下:

static counter_init(void)      // 计数器1初始化
{
      SC->PCONP  |= (1<<1)|(1<< 2)|(1<<6);  // 配置外设功率寄存器,timer0,timer1,pwm1使能

    TIM1->CTCR  = 0x00000006;    // 下降沿计数,选择CAP1.1
      TIM1->TC   = 0;                      // 初始计数值位0
      TIM1->CCR = 0;                       //
      TIM1->IR   = 0xff;                    // reset all interrrupts
      TIM1->TCR  = 0x00;                 // 关闭计数器

    GPIO1->FIODIR &= (~(1<<19));     // P1.19做为输入引脚
    PINCON->PINSEL3 |= (3<<6);       // P1.19引脚设置为CAP1.1(捕获输入)
}

static timer0_init(void)                        // 定时器0 初始化
{
     timer0_counter = 0;
    TIM0 -> MR0 = TIME_INTERVAL;       // 定时10ms
    TIM0 -> MCR = 3;                                /* Interrupt and Reset on MR0 */

    NVIC_EnableIRQ(TIMER0_IRQn);        // 开启定时器0定时中断
        
   osc_clk_cnt = 0;
   TIM0 -> TCR = 1;                              // 启动定时器0
   TIM1 -> TCR = 1;                              // 启动计数器1
}



void TIMER0_IRQHandler (void)
{
  TIM0 -> IR = 1;                        /* clear interrupt flag */
  timer0_cnt++;

  if(timer0_cnt == 100){
           
    TIM0->TCR = 0;       // 关闭定时器      
    TIM1->TCR =  0;      // 关闭计数器

    osc_clk_cnt = TIM1->TC;        // 提取计数值
    timer0_cnt = 0;
  }

}


我用串口打印出读出的计数值,发现计数器是计的内部时钟(PCLK)的脉冲,没有计数引脚的脉冲,一直没弄明白是为什么,请大侠来点拨一下,小弟不盛感激!

相关帖子

沙发
ytfdhb|  楼主 | 2012-12-12 17:59 | 只看该作者
自己先顶一下,继续调程序去

使用特权

评论回复
板凳
ytfdhb|  楼主 | 2012-12-13 18:14 | 只看该作者
还是木油人呀,哎,看来还是那句老话,靠天靠地不如靠自己呀~~

使用特权

评论回复
地板
lichaoming5| | 2012-12-26 23:42 | 只看该作者
帮顶!!

使用特权

评论回复
5
whyfy| | 2013-1-22 22:27 | 只看该作者
解决了没,遇到了同样问题,

使用特权

评论回复
6
ytfdhb|  楼主 | 2013-4-3 11:01 | 只看该作者
whyfy 发表于 2013-1-22 22:27
解决了没,遇到了同样问题,

解决了,是头文件中寄存器定义的有问题

使用特权

评论回复
7
realymylove| | 2014-1-26 17:04 | 只看该作者
我也碰到了这个问题,请问楼主具体的解决方法是什么呢?修改lpc17xx.h?

使用特权

评论回复
8
ytfdhb|  楼主 | 2014-3-6 22:06 | 只看该作者
realymylove 发表于 2014-1-26 17:04
我也碰到了这个问题,请问楼主具体的解决方法是什么呢?修改lpc17xx.h?

是的修改一下就可以了,可以看看数据手机寄存器的地址,自己定义一下就可以了

使用特权

评论回复
9
realymylove| | 2014-7-1 15:27 | 只看该作者
谢谢楼主,才看到。我的问题跟你的不一样,我换了块板子,程序就可以正常运行了,可能是我第一块板子引脚焊坏了吧

使用特权

评论回复
10
realymylove| | 2014-7-1 15:27 | 只看该作者
ytfdhb 发表于 2014-3-6 22:06
是的修改一下就可以了,可以看看数据手机寄存器的地址,自己定义一下就可以了 ...


谢谢楼主,才看到。我的问题跟你的不一样,我换了块板子,程序就可以正常运行了,可能是我第一块板子引脚焊坏了吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:爱我所爱,思我所思……

34

主题

517

帖子

1

粉丝