智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1781|回复: 2
打印 上一主题 下一主题

拉普兰德LPLD_PulseAcc问题

[复制链接]

4

主题

27

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1179
威望
613
贡献
324
兑换币
325
注册时间
2012-9-27
在线时间
121 小时
跳转到指定楼层
1#
发表于 2014-1-16 11:51:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/**
* --------------基于"拉普兰德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);
}

为什么得不到计数值啊?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

3

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
243
威望
145
贡献
56
兑换币
68
注册时间
2012-11-2
在线时间
21 小时
2#
发表于 2014-1-16 20:19:00 | 只看该作者
MK60DZ10与MK60N512MD100的区别,两款芯片的程序可以一样么?我是用MK60N512MD100的芯片,苦于DMA摄像头程序没底层,想把之前在芯片MK60N512MD100写的底层移植到 用芯片MK60DZ10写的底层去,但搞了2天。总是很多错误。望各路大神们,可以给小弟一点意见,万分感激
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
271
威望
141
贡献
76
兑换币
78
注册时间
2012-10-18
在线时间
27 小时
毕业学校
新疆大学
3#
发表于 2014-3-22 10:49:06 | 只看该作者
同求?原先使用的是野火的库现在想用拉普兰德的,现在只在板子上运行成功hello world的历程,其他的变异不会出错,但是下进板子里就是不会看到运行效果 ,不知道应该改哪些地方!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 05:20 , Processed in 0.037665 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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