智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1208|回复: 0
打印 上一主题 下一主题

帮忙看下程序

[复制链接]

8

主题

25

帖子

0

精华

高级会员

Rank: 4

积分
557
威望
247
贡献
122
兑换币
139
注册时间
2014-4-20
在线时间
94 小时
毕业学校
华北水利水电大学
跳转到指定楼层
1#
发表于 2014-9-9 17:26:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void lptmr_pulse_counter()
{
         uint32 compare_value=50000;
         SIM_SCGC5|=SIM_SCGC5_LPTIMER_MASK;  //开启模块的时钟单元
          
          LPTMR0_CSR=0x00;                    //LPTMR的初始化
          LPTMR0_PSR=0x00;
          LPTMR0_CMR=0x00;
         
          SIM_SCGC5 |= SIM_SCGC5_PORTC_MASK; //Turn on PORTC clock
          PORTC_PCR5=PORT_PCR_MUX(0x4);      //Use ALT4 on PTC5

          LPTMR0_PSR|=LPTMR_PSR_PCS(0x1)|LPTMR_PSR_PBYP_MASK;  //Use LDO but bypass glitch filter

          LPTMR0_CMR|=LPTMR_CMR_COMPARE(compare_value);        //Set compare value
          
          LPTMR0_CSR|=LPTMR_CSR_TPS(0x2);            //Set LPT to use the pin selected
          LPTMR0_CSR|=LPTMR_CSR_TMS_MASK;            //put in pulse count mode   上升沿捕捉
          LPTMR0_CSR|=LPTMR_CSR_TEN_MASK;   
}
void hw_pit1_init()
   {
     SIM_SCGC6|=SIM_SCGC6_PIT_MASK;              //使能PIT时钟
     PIT_MCR&=~(PIT_MCR_MDIS_MASK);              //调试模式下禁止
     PIT_MCR|=PIT_MCR_FRZ_MASK;                  //使能PIT模块时钟
     PIT_LDVAL1=3600000;                   //设置周期  10ms
     PIT_TCTRL1|=PIT_TCTRL_TEN_MASK;       //使能pit模块运行
     PIT_TCTRL1&=~(PIT_TCTRL_TIE_MASK);    //关pit中断
   }
void pit1_isr(void)
{  
                disable_irq (69);
      if((PIT_TFLG0&PIT_TFLG_TIF_MASK)!=0)
      {   
              d = LPTMR0_CNR;                                             //保存脉冲计数器计算值
              uart_send(chai,5);
              uart_putchar(',');
             // LPTMR_CSR_REG(LPTMR0_BASE_PTR)  &= ~LPTMR_CSR_TEN_MASK;     //重启LPTMR 清计数
             // LPTMR_CSR_REG(LPTMR0_BASE_PTR)  |=LPTMR_CSR_TEN_MASK;  
            PIT_TFLG0|=PIT_TFLG_TIF_MASK;       //清标志
            LPTMR0_CSR &= ~(0x01);
            LPTMR0_CSR |= (0x01);//LPT0_ALT2,计数模式
            lptmr_pulse_counter();
      }
      enable_irq (69);
}void pit1_isr(void)
{  
                disable_irq (69);
      if((PIT_TFLG0&PIT_TFLG_TIF_MASK)!=0)
      {   
              d = LPTMR0_CNR;                                             //保存脉冲计数器计算值
              uart_send(chai,5);
              uart_putchar(',');
             // LPTMR_CSR_REG(LPTMR0_BASE_PTR)  &= ~LPTMR_CSR_TEN_MASK;     //重启LPTMR 清计数
             // LPTMR_CSR_REG(LPTMR0_BASE_PTR)  |=LPTMR_CSR_TEN_MASK;  
            PIT_TFLG0|=PIT_TFLG_TIF_MASK;       //清标志
            LPTMR0_CSR &= ~(0x01);
            LPTMR0_CSR |= (0x01);//LPT0_ALT2,计数模式
            lptmr_pulse_counter();
      }
      enable_irq (69);
}
测的编码器的数据一直为零,用正交解码就有数据,大神们多指导指导!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-5 21:48 , Processed in 0.051740 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表