⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timerwithcallback.c

📁 ADI公司blackfin DSP开发板BF533 EZ-KIT LITE附带的全部原代码
💻 C
字号:
/*********************************************************************************

Copyright(c) 2004 Analog Devices, Inc. All Rights Reserved. 

This software is proprietary and confidential.  By using this software you agree
to the terms of the associated Analog Devices License Agreement.  

***********************************************************************************

Please refer to the 'readme.txt' file for a description of the Interrupt Manager Examples.


*********************************************************************

Include files

*********************************************************************/

#include <services/services.h>
#include "ezkitutilities.h"

/*********************************************************************

Enumerations and defines

*********************************************************************/

/*********************************************************************

Data Structures 

*********************************************************************/

/*********************************************************************

Static data

*********************************************************************/

// storage for interrupt manager data

static u8 IntMgrData[(ADI_INT_SECONDARY_MEMORY * 2)];


/*********************************************************************

Static functions

*********************************************************************/


/*********************************************************************

 Callback function

*********************************************************************/

static void Callback(void *AppHandle,u32  Event,void *pArg)	
{

		switch ( (u32)pArg ) {
		case  ADI_TMR_GP_TIMER_0:
			ezToggleLED(EZ_FIRST_LED);
			break;
			
		case  ADI_TMR_GP_TIMER_1:
			ezToggleLED(EZ_FIRST_LED+1);
			break;
			
		default:
			ezToggleLED(EZ_FIRST_LED+2);
			break;
		
	}
	// return
}

/****************************************************************************
  Function:	Init_Timers	
				
  Set up timers for PWM mode and enale them.
******************************************************************************/

void InitTimers(void)
{
	
	//Setting up command table for Timer 0
	ADI_TMR_GP_CMD_VALUE_PAIR Timer0ConfigurationTable [] = {
		{ ADI_TMR_GP_CMD_SET_TIMER_MODE,			(void *)0x01			},
		{ ADI_TMR_GP_CMD_SET_COUNT_METHOD,			(void *)TRUE			},
		{ ADI_TMR_GP_CMD_SET_INTERRUPT_ENABLE,		(void *)TRUE			},
		{ ADI_TMR_GP_CMD_SET_OUTPUT_PAD_DISABLE,	(void *)TRUE			},
		{ ADI_TMR_GP_CMD_SET_PERIOD,				(void *)0x08000000		},
		{ ADI_TMR_GP_CMD_SET_WIDTH, 				(void *)0x00400000		},
		{ ADI_TMR_GP_CMD_END,						NULL					}, 
	};
	
	//Setting up command table for Timer 1
	ADI_TMR_GP_CMD_VALUE_PAIR Timer1ConfigurationTable [] = {
		{ ADI_TMR_GP_CMD_SET_TIMER_MODE,			(void *)0x01			},
		{ ADI_TMR_GP_CMD_SET_COUNT_METHOD,			(void *)TRUE			},
		{ ADI_TMR_GP_CMD_SET_INTERRUPT_ENABLE,		(void *)TRUE			},
		{ ADI_TMR_GP_CMD_SET_OUTPUT_PAD_DISABLE,	(void *)TRUE			},
		{ ADI_TMR_GP_CMD_SET_PERIOD,				(void *)0x04000000		},
		{ ADI_TMR_GP_CMD_SET_WIDTH, 				(void *)0x00400000		},
		{ ADI_TMR_GP_CMD_END,						NULL					}, 
	};
		
	//Setting up command table for Timer 2
	ADI_TMR_GP_CMD_VALUE_PAIR Timer2ConfigurationTable [] = {
		{ ADI_TMR_GP_CMD_SET_TIMER_MODE,			(void *)0x01			},
		{ ADI_TMR_GP_CMD_SET_COUNT_METHOD,			(void *)TRUE			},
		{ ADI_TMR_GP_CMD_SET_INTERRUPT_ENABLE,		(void *)TRUE			},
		{ ADI_TMR_GP_CMD_SET_OUTPUT_PAD_DISABLE,	(void *)TRUE			},
		{ ADI_TMR_GP_CMD_SET_PERIOD,				(void *)0x02000000		},
		{ ADI_TMR_GP_CMD_SET_WIDTH, 				(void *)0x00400000 		},
		{ ADI_TMR_GP_CMD_END,						NULL					}, 
	};
	
	//Open Timer 0 for access
	adi_tmr_Open(ADI_TMR_GP_TIMER_0);
	
	//Program timer 0 with Timer 0 table
	adi_tmr_GPControl(ADI_TMR_GP_TIMER_0, ADI_TMR_GP_CMD_TABLE, Timer0ConfigurationTable);
	
	//Open Timer 1 for access
	adi_tmr_Open(ADI_TMR_GP_TIMER_1);
	
	//Program timer 1 with Timer 1 table
	adi_tmr_GPControl(ADI_TMR_GP_TIMER_1, ADI_TMR_GP_CMD_TABLE, Timer1ConfigurationTable);
	
	//Open Timer 2 for access
	adi_tmr_Open(ADI_TMR_GP_TIMER_2);
	
	//Program timer 2 with Timer 2 table
	adi_tmr_GPControl(ADI_TMR_GP_TIMER_2, ADI_TMR_GP_CMD_TABLE, Timer2ConfigurationTable);
		
	
	//enable callbacks for timer 0
	adi_tmr_InstallCallback(ADI_TMR_GP_TIMER_0,TRUE,(void *)ADI_TMR_GP_CMD_START,NULL,Callback);
	
	//enable callbacks for timer 1
	adi_tmr_InstallCallback(ADI_TMR_GP_TIMER_1,TRUE,(void *)ADI_TMR_GP_CMD_START,NULL,Callback);
	
	//enable callbacks for timer 2
	adi_tmr_InstallCallback(ADI_TMR_GP_TIMER_2,TRUE,(void *)ADI_TMR_GP_CMD_START,NULL,Callback);
	
	//enable timer 0, timer 1 and timer 2
	adi_tmr_GPGroupEnable(ADI_TMR_GP_TIMER_0 | ADI_TMR_GP_TIMER_1 | ADI_TMR_GP_TIMER_2,TRUE);		
}
 
	
/*********************************************************************
*
*	Function:	main
*
*********************************************************************/

void main(void) {
	
	u32 ResponseCount;
	u32 i; //loop variable
	
	// initialize the EZ-Kit
	ezInit(1);	
	
	// initialize interrupt manager
	ezErrorCheck(adi_int_Init(IntMgrData, sizeof(IntMgrData), &ResponseCount, NULL));
		
	//Initialize the flag service, memory is not passed because callbacks are not being used
	ezErrorCheck(adi_flag_Init(NULL, 0, &ResponseCount, NULL));
	
	for (i = EZ_FIRST_LED; i < EZ_NUM_LEDS; i++){
        ezInitLED(i);
	}
	
	// initialize the Timer manager
	ezErrorCheck(adi_tmr_Init(NULL));
	//Run forever
	
	//Initialize all of the timers
	InitTimers();
	
	
	while (1) {
		
	}
		
// return
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -