智能车制作

标题: 拉普兰德LPLD_PulseAcc问题 [打印本页]

作者: 辰戈    时间: 2014-1-16 11:51
标题: 拉普兰德LPLD_PulseAcc问题
/**
* --------------基于"拉普兰德K60底层库V3"的工程(LPLD_PulseAcc)-----------------
* @file LPLD_PulseAcc.c
* @version 0.1
* @date 2013-9-29
* @brief 利用LPTMR模块,实现脉冲累加功能。
*
* 版权所有:北京拉普兰德电子技术有限公司
* http://www.lpld.cn
* mail:support@lpld.cn
* 硬件平台:  LPLD K60 Card / LPLD K60 Nano
*
* 本工程基于"拉普兰德K60底层库V3"开发,
* 所有开源代码均在"lib"文件夹下,用户不必更改该目录下代码,
* 所有用户工程需保存在"project"文件夹下,以工程名定义文件夹名,
* 底层库使用方法见相关文档。
*
*/
#include "common.h"

/********************************************
* 说明:
* 利用K60单片机的FTM模块产生100Khz脉冲波
* 将脉冲波输入到LPTMR 脉冲累加通道
* LPTMR进行脉冲累并通过串口打印输出脉冲累加结果
* 硬件配置说明:
* K60单片机引脚      
* FTM    -PTC1  -----> PTC5   LPTMR ALT2
* 使用串口调试助手波特率设置为115200
* 使用串口调试助手查看运行结果。
********************************************/

#define PIT_TIMER_PERIOD 10000//10ms
                              
FTM_InitTypeDef ftm_init_param;
PIT_InitTypeDef pit_init_param;
LPTMR_InitTypeDef lptmr_init_param;
uint32_t GetFreq;
uint32_t GetCnt;

void pit_isr0();
/********************************************************************/

void main (void)
{
  //注意:采集的频率必须大于100HZ
  //初始化FTM
  ftm_init_param.FTM_Ftmx = FTM1;
  ftm_init_param.FTM_PwmFreq = 100000;//100Khz
  ftm_init_param.FTM_Mode = FTM_MODE_PWM;
  //初始化PIT
  pit_init_param.PIT_Pitx = PIT0;
  pit_init_param.PIT_PeriodUs = PIT_TIMER_PERIOD;//10ms 0.1khz
  pit_init_param.PIT_Isr = pit_isr0;
  //LPTMR_MODE_PLACC脉冲累加模式
  //LPTMR_ALT2的输入口为PTC5
  //禁用中断
  //无中断函数
  lptmr_init_param.LPTMR_Mode = LPTMR_MODE_PLACC;
  lptmr_init_param.LPTMR_PluseAccInput = LPTMR_ALT2;
  lptmr_init_param.LPTMR_Isr = NULL;
  //FTM,PIT,LPTMR初始化
  LPLD_PIT_Init(pit_init_param);
  LPLD_PIT_EnableIrq(pit_init_param); //使能PIT中断
  LPLD_FTM_Init(ftm_init_param);
  LPLD_LPTMR_Init(lptmr_init_param);
  LPLD_FTM_PWM_Enable(FTM1,FTM_Ch0,5000,PTB0,ALIGN_LEFT);

  GetFreq=0;
  GetCnt=0;
  
  while(1)
  {   
  }
}


void pit_isr0()
{
    static uint32_t temp=0;
    //GetFreq=0;
  //GetCnt=0;
    if(GetCnt>99) //进行100次累加,累加次数越高,精度越高,但实时性降低
    {
       GetFreq=temp/100; //取平均
       printf("the PulseAcc:%d hz \r\n",GetFreq*100);
       temp=0;
       GetCnt=0;
    }
    else
    {
       temp+=LPLD_LPTMR_GetPulseAcc();
       //printf("the PulseAcc:%d hz \r\n",temp);
      //temp+=LPTMR0_CNR;
       GetCnt++;
    }
   
    LPLD_LPTMR_ResetCounter();       //复位LPTMR0 counter
    LPLD_LPTMR_Init(lptmr_init_param);
}

为什么得不到计数值啊?[attach]54967[/attach]

作者: qq群    时间: 2014-1-16 20:19
MK60DZ10与MK60N512MD100的区别,两款芯片的程序可以一样么?我是用MK60N512MD100的芯片,苦于DMA摄像头程序没底层,想把之前在芯片MK60N512MD100写的底层移植到 用芯片MK60DZ10写的底层去,但搞了2天。总是很多错误。望各路大神们,可以给小弟一点意见,万分感激
作者: l__q__f    时间: 2014-3-22 10:49
同求?原先使用的是野火的库现在想用拉普兰德的,现在只在板子上运行成功hello world的历程,其他的变异不会出错,但是下进板子里就是不会看到运行效果 ,不知道应该改哪些地方!




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2