昨天搞好的一个小系统,今天再改了下程序,在我的相册里面有相关的几张图片,晒晒!
我原本是在学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条评论)
登录后参与讨论