原创 基于JN5121小板子的电机转数测量小系统

2009-9-12 08:54 4393 10 10 分类: 测试测量

        昨天搞好的一个小系统,今天再改了下程序,在我的相册里面有相关的几张图片,晒晒!


       我原本是在学Jennic,搞到定时\计数器,顺便做的一个小系统,程序很简单。


/****************************************************************************
 *
 * 程序名称:测量电机转速
 * 程序编写:唐爱明
 * 编写日期:20090428
 * 程序备注:直流电机+20孔编码盘
                         通过串口调试助手显示:115200-8-N-1
 ****************************************************************************/


/****************************************************************************/
//头文件
/****************************************************************************/
#include <jendefs.h>
#include <AppHardwareApi.h>//硬件
#include<AppQueueApi.h>//堆栈
#include"..\..\Chip\Common\Include\Printf.h"//串口


/****************************************************************************/
//全局变量
/****************************************************************************/
PRIVATE uint32 number = 0;//声明全局变量并赋初值


/****************************************************************************/
//函数声明
/****************************************************************************/
PRIVATE void vTimerConfig(void);//定时器设置
PRIVATE void vTimer0ISR(uint32 u32DeviceId,uint32 u32ItemBitmap);//定时器0执行函数


/****************************************************************************
//冷启动
 ****************************************************************************/
PUBLIC void AppColdStart(void)
{


    (void)u32AppApiInit(NULL,NULL,NULL,NULL,NULL,NULL);//初始化协议栈
    (void)u32AHI_Init();//初始化外设
    vUART_printInit();//串口初始化
    vTimerConfig();//定时计数器设置
    while(1)
    {}
}


/****************************************************************************
//热启动
 ****************************************************************************/
PUBLIC void AppWarmStart(void)
{
    AppColdStart();
}


/****************************************************************************/
//定时器设置
/****************************************************************************/
PRIVATE void vTimerConfig(void)
{
    //设置定时器0记数
    vAHI_TimerEnable(E_AHI_TIMER_0,//定时器0
                                0x00,
                                FALSE,
                                TRUE,
                                FALSE);
    vAHI_TimerClockSelect(E_AHI_TIMER_0,//定时器0
                                        TRUE,
                                        FALSE);
    vAHI_TimerStartSingleShot(E_AHI_TIMER_0,//定时器0
                                                0x0000,// 空值
                                                0x0064);//首次记录脉冲个数,100个,即5转


    vAHI_Timer0RegisterCallback(vTimer0ISR);//注册定时器0的中断
}


/****************************************************************************/
//定时函数
/****************************************************************************/
PRIVATE void vTimer0ISR(uint32 u32DeviceId,uint32 u32ItemBitmap)
{
    number++;
    vAHI_TickTimerIntPendClr();
    vAHI_TimerStartSingleShot(E_AHI_TIMER_0,//定时器0
                                            0x0000,//空值
                                            0x0014);//记录脉冲个数,记20个脉冲中断1次,即一转一个中断
    vPrintf("电机转数 = %d\n\r",number+5);//显示脉冲个数,实际值应该加上首次的10个脉冲
}


/****************************************************************************/
/***        END OF FILE                                                   ***/
/****************************************************************************/


       


 

文章评论0条评论)

登录后参与讨论
我要评论
0
10
关闭 站长推荐上一条 /2 下一条