亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? powerdemo.c

?? ADI公司blackfin DSP開發板BF533 EZ-KIT LITE附帶的全部原代碼
?? C
字號:
/*********************************************************************************

Copyright(c) 2005 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.  

Description:
			A sample program to demonstrate three aspects of the Power Management
			Module:
			a) Altering the core voltage level - changes core and system clock frequencies
			b) Altering the power mode, including awakening from sleep and deep sleep
			c) Adjusting the SDRAM refresh rates (implicitly) each time the system 
			   clock frequency changes.
			See accompanying readme for furter details.
			
*********************************************************************************/
#include "PowerDemo.h"

// ////////////////////
// Global Variables  //
// ////////////////////

// The bit pattern of the LED display 
u16 CurrentDisplay; 

// The current Power state (not to be confused with the ADI_PWR_MODE enumerator).
// 0 = Full On
// 1 = Active PLL enabled
// 2 = Active PLL disabled
// 3 - Sleep
// 4 - awoken from sleep
// 5 - Deep Sleep
u32 CurrentPowerState = 0; 

// Number of voltage levels to cycle through
#define NUM_VLEVS 4
// Array of voltage level values:
static ADI_PWR_VLEV VoltageLevels[NUM_VLEVS] = 
			{ 
				ADI_PWR_VLEV_085, 
				ADI_PWR_VLEV_095, 
				ADI_PWR_VLEV_105, 
				ADI_PWR_VLEV_120 
			};

// Array index of current voltage level			
static u32 CurrentVoltageIndex=0;


// //////////////
// Prototypes  //
// //////////////

// initialization 
void Init(void);

// callback for the pushButtons
void PushButtonCallback(
	void 	*ClientHandle,
	u32		Event,
	void 	*pArg);

// Interrupt Handler for the RTC - to awaken from Sleep and Deep Sleep
ADI_INT_HANDLER(RealTimeClockHandler);

// Configures the RTC
void ConfigureRTC(void);

// Processor specific Init function 
extern void Init(void);

// Generic System Services Initialization function
void InitServices(void);

// //////////////
// static data //
// //////////////

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

Peripheral ID Macros

This program works on the EZ-Kits.  The macros
below are used to identify which EZ-Kit we're targeting.  Specifically, 
the FLAG_PERIPHERAL_ID macro is set to the peripheral ID to which the 
interrupt driven push buttons are mapped.  See the adi_int.h file
within the system services library (blackfin/include/services) for
more information on peripheral IDs.  

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

#if defined(__ADSP_EDINBURGH__)
#define FLAG_PERIPHERAL_ID	(ADI_INT_PFA)
#endif

#if defined(__ADSP_BRAEMAR__)
#define FLAG_PERIPHERAL_ID	(ADI_INT_PORTFG_A)
#endif

#if defined(__ADSP_TETON__)
#define FLAG_PERIPHERAL_ID	(ADI_INT_PF0_15_A)
#endif

// flag service
static u8 FlagServiceData[ADI_FLAG_CALLBACK_MEMORY * (EZ_NUM_BUTTONS + 1)];

// interrupt service
static u8 IntMgrData[ADI_INT_SECONDARY_MEMORY * (EZ_NUM_BUTTONS)];


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

	Function:		main

	Description:	Main entry point

*********************************************************************/
void main()
{
    u32 i; // loop variable
    
	// initialize the EZ-Kit Buttoms and Flags
	for (i = EZ_FIRST_LED; i < EZ_NUM_LEDS; i++){
        ezInitLED(i);
	}
	
	for (i = EZ_FIRST_BUTTON; i < EZ_NUM_BUTTONS; i++){
        ezInitButton(i);
	}
	
	ezTurnOffAllLEDs();
	
	// Initialize System Services (excluding Power Management)
	InitServices();
	
	// Processor Specific Initialization (including Power Management)
	Init();
	
	// Display Full On Power mode & Lower voltage setting
	ezTurnOffAllLEDs();
	ezTurnOnLED(EZ_FIRST_LED+1);	
	ezTurnOnLED(EZ_FIRST_LED+2);	
	ezTurnOnLED(EZ_FIRST_LED+3);	
	CurrentDisplay = ezGetDisplay();
	
	// Processing loop
	while(1)
	{
		BlinkLEDs(1,BLINK_MASK); //Blink all but LED 4
	}
}

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

	Function:		InitServices

	Description:	Initializes the LED's the Push Buttons and the RTC
					and hooks interrupt handlers, and configures the 
					Power Settings to lowest voltage level.

*********************************************************************/
void InitServices(void)
{
	u32 ResponseCount, i;

	// initialize the Interrupt Manager
	ezErrorCheck(adi_int_Init(IntMgrData, sizeof(IntMgrData), &ResponseCount, NULL));
	
	// initialize the flag manager because the LEDs and buttons connect via flags
	ezErrorCheck(adi_flag_Init(FlagServiceData, sizeof(FlagServiceData), &ResponseCount, NULL));

	// enable all pushbuttons for callbacks
	adi_flag_InstallCallback(ezButtonToFlag[EZ_FIRST_BUTTON], FLAG_PERIPHERAL_ID, ADI_FLAG_TRIGGER_RISING_EDGE, TRUE, (void*)(EZ_FIRST_BUTTON), NULL, PushButtonCallback);
	adi_flag_InstallCallback(ezButtonToFlag[EZ_FIRST_BUTTON+1], FLAG_PERIPHERAL_ID, ADI_FLAG_TRIGGER_RISING_EDGE, TRUE, (void*)(EZ_FIRST_BUTTON+1), NULL, PushButtonCallback);
	adi_flag_InstallCallback(ezButtonToFlag[EZ_FIRST_BUTTON+2], FLAG_PERIPHERAL_ID, ADI_FLAG_TRIGGER_RISING_EDGE, TRUE, (void*)(EZ_FIRST_BUTTON+2), NULL, PushButtonCallback);
	adi_flag_InstallCallback(ezButtonToFlag[EZ_FIRST_BUTTON+3], FLAG_PERIPHERAL_ID, ADI_FLAG_TRIGGER_RISING_EDGE, TRUE, (void*)(EZ_FIRST_BUTTON+3), NULL, PushButtonCallback);
	
	ConfigureRTC();
	
}

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

	Function:		ConfigureRTC

	Description:	Configures the RTC to interrupt every 5 secs and 
					hooks its interrupt handler.

*********************************************************************/
void ConfigureRTC()
{
	*pRTC_PREN = 0x1;
	
	while (!(*pRTC_ISTAT & 0x8000));
	
	*pRTC_ISTAT = CLEAR_RTC_IRQS;	// clear any pending IRQs
	*pRTC_ICTL = 0x1;				// set Stopwatch interrupt enable
	*pRTC_SWCNT = 0x0005;			// set StopWatch to 5 seconds
	
	while (!(*pRTC_ISTAT & 0x8000));

	ezErrorCheck( adi_int_CECHook(13,RealTimeClockHandler,NULL,0) );	// Hook handler to IVG level
	ezErrorCheck( adi_int_SICSetIVG(ADI_INT_RTC,13) );				// set IVG level that Buttons assert
	ezErrorCheck( adi_int_SICWakeup(ADI_INT_RTC,1) );				// Enable/Disable wakeup on interrupt
	ezErrorCheck( adi_int_SICEnable(ADI_INT_RTC)   );				// Enable interrupts

}

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

	Function:		TogglePowerMode

	Description:	Toggles the power mode from Full On down to Deep Sleep
				 	LED's 5-7 to indicate the level:
					   111 Full on
					   101 Active - enabled
					   011 Active - disabled
					   001 Sleep (returned from sleep)
					   000 Deep Sleep
 
*********************************************************************/
void TogglePowerMode()
{
	u16 tmpDisplay;
	ezSetDisplay(CurrentDisplay);
	switch( CurrentPowerState++ )
	{
		case 0: 		// Full on -> Active
			// Restore Current display - could be in blink-off state
			ezSetDisplay(CurrentDisplay);
			// Display Active Mode
			ezTurnOffLED(EZ_FIRST_LED+1);
			// Store Current display
			CurrentDisplay = ezGetDisplay();
			// and set Active mode
			adi_pwr_SetPowerMode(ADI_PWR_MODE_ACTIVE);
			break;
			
		case 1:			// Active, PLL enabled -> Pll disabled
			// Restore Current display - could be in blink-off state
			ezSetDisplay(CurrentDisplay);
			// Display Active, PLL disabled Mode
			ezTurnOffLED(EZ_FIRST_LED+2);
			ezTurnOnLED(EZ_FIRST_LED+1);
			// Store Current display
			CurrentDisplay = ezGetDisplay();
			// and set Active, PLL disabled mode
			adi_pwr_SetPowerMode(ADI_PWR_MODE_ACTIVE_PLLDISABLED);
			break;
			
		case 2:			// Active PLL disabled -> Sleep
			// Restore Current display - could be in blink-off state
			ezSetDisplay(CurrentDisplay);
			// Display Sleep Mode
			ezTurnOffLED(EZ_FIRST_LED+1);
			// Blink once to indicate going to sleep
			tmpDisplay = ezGetDisplay();
			CurrentDisplay = ALL_LEDS;
			BlinkLEDs(1,ALL_LEDS);		
			// Store Current display
			CurrentDisplay = tmpDisplay;
			// Go to sleep (RTC disabled during sleep)
			adi_int_SICDisable(ADI_INT_RTC);
			adi_pwr_SetPowerMode(ADI_PWR_MODE_SLEEP);
			adi_int_SICEnable(ADI_INT_RTC);
			break;
			
		case 4:			// Full on -> Sleep 
			// Restore Current display - could be in blink-off state
			ezSetDisplay(CurrentDisplay);
			// Display Deep Sleep Mode
			ezTurnOffLED(EZ_FIRST_LED+3);
			// Blink twice to indicate going to deep sleep
			tmpDisplay = ezGetDisplay();
			CurrentDisplay = ALL_LEDS;
			BlinkLEDs(2,ALL_LEDS);
			// Store Current display
			CurrentDisplay = tmpDisplay;
			// Go to deep sleep (RTC disabled during deep sleep)
			adi_int_SICDisable(ADI_INT_RTC);
			adi_pwr_SetPowerMode(ADI_PWR_MODE_DEEP_SLEEP);
			
			//adi_pwr_SetPowerMode(ADI_PWR_MODE_FULL_ON);
			adi_int_SICEnable(ADI_INT_RTC);
			break;
	}
}


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

	Function:		SetVoltage

	Description:	Uses the power management module to adjust the core and
					system clock frequencies to a given voltage level and 
					indicates the level using LED's 8 & 9:
					    00 - 0.85V
					    01 - 0.95V
					    10 - 1.05V
					    11 - 1.2V
*********************************************************************/
void SetVoltage(ADI_PWR_VLEV vlev)
{
	ezErrorCheck( adi_pwr_SetMaxFreqForVolt(vlev) );
	ezSetDisplay(CurrentDisplay);
	switch(vlev)
	{
		case ADI_PWR_VLEV_085:	
			ezTurnOffLED(EZ_FIRST_LED+4);
			ezTurnOffLED(EZ_FIRST_LED+5);
			break;
		case ADI_PWR_VLEV_095:
			ezTurnOnLED(EZ_FIRST_LED+4);
			break;
		case ADI_PWR_VLEV_105:
			ezTurnOffLED(EZ_FIRST_LED+4);
			ezTurnOnLED(EZ_FIRST_LED+5);
			break;
		case ADI_PWR_VLEV_120:
			ezTurnOnLED(EZ_FIRST_LED+4);
		default:
			break;
	}
	CurrentDisplay = ezGetDisplay();
}
	
/*********************************************************************

	Function:		ToggleVoltage

	Description:	Cycles the voltage through 4 levels (see SetVoltage)

***********************************************************************/	
void ToggleVoltage()
{
	CurrentVoltageIndex++;
	if (CurrentVoltageIndex==NUM_VLEVS) 
		CurrentVoltageIndex=0;
	SetVoltage(	VoltageLevels[CurrentVoltageIndex] );
}


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

	Function:		BlinkLEDs

	Description:	Blinks the LED's, between the current display values
					and off. Only the LED's identified by the mask argument
					are affected.
					NB. In the Active state, the Core is clocked at CLKIN
					and so, to avoid unecessary and confusing delay the 
					blink frequency is adjusted to be roughly half that
					at the lowest voltage setting.

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

#pragma optimize_off 
void BlinkLEDs(u32 count, u16 mask)
{
	volatile u32 i,j;
	volatile u32 delay = DELAY_COUNT;
	ADI_PWR_MODE mode = adi_pwr_GetPowerMode();
	if (mode==ADI_PWR_MODE_ACTIVE || mode==ADI_PWR_MODE_ACTIVE_PLLDISABLED)
		delay/=4;
		
	for (j=0;j<count;j++)
	{
		for (i=0;i<delay;i++);
		ezSetDisplay(CurrentDisplay);
		for (i=0;i<delay;i++);
		ezSetDisplay(CurrentDisplay&(~mask));
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人性生交大片免费看中文| 免费精品99久久国产综合精品| 日韩精品在线一区| 欧美日韩成人高清| 欧美嫩在线观看| 日韩欧美中文字幕精品| 欧美一区日韩一区| 亚洲精品一区二区三区福利 | 一区二区免费在线| 亚洲欧美日韩综合aⅴ视频| 最新中文字幕一区二区三区 | 欧美极品少妇xxxxⅹ高跟鞋| 久久精品一区二区| 亚洲人成在线播放网站岛国| 亚洲中国最大av网站| 青青国产91久久久久久 | 一区二区高清免费观看影视大全| 亚洲免费三区一区二区| 亚洲成在人线免费| 麻豆精品在线视频| av一二三不卡影片| 欧美肥大bbwbbw高潮| 久久久国产精华| 亚洲视频一区在线观看| 日韩电影在线看| 国产jizzjizz一区二区| 欧美主播一区二区三区| 日韩女同互慰一区二区| 中文字幕亚洲视频| 日韩福利电影在线| 99国产精品国产精品毛片| 91精品国产综合久久久久久久久久| 精品久久五月天| 玉米视频成人免费看| 蜜桃视频在线一区| 色欧美日韩亚洲| 精品国产免费视频| 午夜精品久久久久久| 国产精品亚洲人在线观看| 欧美在线影院一区二区| 国产清纯在线一区二区www| 亚洲成在人线免费| 99久久伊人久久99| 久久综合九色综合欧美就去吻 | 欧美日本乱大交xxxxx| 久久亚洲一区二区三区四区| 亚洲国产欧美在线| 成人黄色网址在线观看| 日韩欧美在线综合网| 成人欧美一区二区三区白人 | 亚洲成人777| 成人动漫精品一区二区| 日韩女优电影在线观看| 婷婷综合五月天| 91丨porny丨国产| 国产亚洲综合av| 久久国产精品免费| 欧美日韩一级视频| 夜夜精品视频一区二区 | 国产精品自在欧美一区| 欧美高清你懂得| 亚洲综合无码一区二区| 成人黄色电影在线 | 欧美一二三区在线观看| 一区二区三区四区乱视频| 91同城在线观看| 中文字幕一区三区| av电影在线不卡| 国产精品短视频| 99re在线精品| 亚洲日本免费电影| 91日韩在线专区| 一区二区三区不卡视频在线观看| 91色视频在线| 夜夜亚洲天天久久| 欧美精品成人一区二区三区四区| 亚洲一区二区偷拍精品| 欧美日韩精品一区二区天天拍小说| 亚洲欧美日韩国产综合| 91女厕偷拍女厕偷拍高清| 1区2区3区精品视频| 一本大道久久精品懂色aⅴ| 亚洲欧洲av另类| 欧美午夜精品理论片a级按摩| 一区二区三区中文字幕| 欧美日韩高清不卡| 久久激情综合网| 亚洲国产精品国自产拍av| 成人午夜伦理影院| 亚洲成人高清在线| 久久一区二区三区四区| eeuss鲁片一区二区三区| 亚洲色图欧美偷拍| 欧美一区二区三区色| 韩国三级电影一区二区| 国产精品人妖ts系列视频| 色婷婷综合久久久中文字幕| 亚洲精品第一国产综合野| 日本韩国精品一区二区在线观看| 午夜视频在线观看一区二区三区| 欧美大片在线观看一区| 成人免费视频免费观看| 亚洲高清视频在线| 欧美精品一区二区三区视频| 成人激情视频网站| 日日夜夜免费精品| 久久久亚洲午夜电影| 91黄色在线观看| 韩国精品主播一区二区在线观看 | 91亚洲资源网| 日韩二区在线观看| 亚洲欧洲精品成人久久奇米网| 欧美精品久久99久久在免费线 | 成人在线一区二区三区| 亚洲国产精品综合小说图片区| 日韩西西人体444www| a美女胸又www黄视频久久| 日本欧美一区二区三区乱码| 国产拍欧美日韩视频二区| 欧美日韩午夜精品| 成人国产精品免费网站| 麻豆精品精品国产自在97香蕉| 亚洲三级在线观看| 久久精品在线免费观看| 日韩欧美综合在线| 欧美亚洲国产一区二区三区| 成人av午夜电影| 看片网站欧美日韩| 婷婷综合另类小说色区| 亚洲免费在线播放| 国产精品不卡一区| 久久久久久影视| 精品国产成人在线影院| 91精品国产色综合久久ai换脸| 99久久久国产精品免费蜜臀| 国产一二三精品| 麻豆国产一区二区| 免费在线成人网| 亚洲成av人片www| 亚洲激情自拍视频| 综合自拍亚洲综合图不卡区| 久久青草欧美一区二区三区| 这里只有精品电影| 69av一区二区三区| 欧美另类videos死尸| 欧美午夜精品免费| 欧美性大战久久久久久久蜜臀 | 亚洲777理论| 亚洲在线视频一区| 尤物在线观看一区| 一区二区三区在线视频观看58| 亚洲日本在线观看| 亚洲一区二区视频在线| 亚洲激情校园春色| 亚洲国产cao| 日韩成人精品视频| 久久国产精品区| 国产成人丝袜美腿| proumb性欧美在线观看| 91麻豆精东视频| 欧美性做爰猛烈叫床潮| 欧美日韩国产精品成人| 911国产精品| 欧美成人性战久久| 国产午夜精品一区二区三区四区| 久久女同性恋中文字幕| 亚洲国产精品ⅴa在线观看| 亚洲国产高清aⅴ视频| 亚洲免费在线视频一区 二区| 一区二区久久久久久| 日韩激情在线观看| 国产精品中文字幕一区二区三区| 东方欧美亚洲色图在线| 97se亚洲国产综合自在线| 在线观看欧美日本| 精品91自产拍在线观看一区| 国产亚洲一区二区三区| 亚洲三级免费电影| 日韩影院免费视频| 国产91精品入口| 欧美日韩国产免费一区二区| 2020国产精品自拍| 一区二区三区**美女毛片| 久久疯狂做爰流白浆xx| a级高清视频欧美日韩| 91精品国产91久久久久久一区二区 | 三级影片在线观看欧美日韩一区二区| 日本中文字幕一区| 波多野结衣中文字幕一区| 欧美日韩亚洲国产综合| 精品国产乱码久久久久久蜜臀| 国产精品激情偷乱一区二区∴| 香蕉av福利精品导航| 国产成人在线视频播放| 在线播放中文一区| 国产精品午夜免费| 日产欧产美韩系列久久99| 91丨porny丨蝌蚪视频| 欧美大片免费久久精品三p | 欧美人妖巨大在线|