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

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

?? app_boardwakefnc.c

?? BCM 控制demo源代碼
?? C
字號:
/*******************************************************************************/
/**
Copyright (c) 2008 Freescale Semiconductor
\file       app_boardWakeFnc.c
\brief      Wake-up functionalities  
\author     Freescale Semiconductor
\author     RC574C/ B05114
\version    0.2
\date       March/ 2008
*/
/*******************************************************************************/

/** S12X derivative information */ 
#include <MC9S12XEP100.h>

#include "main.h"
#include "app_boardDevCtrl.h"
#include "app_boardWakeFnc.h"
#include "app_boardLowPower.h"
#include "app_boardInit.h"
#include "app_connectivity.h"
#include "app_rkeRlt.h"
#include "des_MC33742.h"
#include "des_MC33661.h"
#include "des_MC10XS3412.h"
#include "lle_Cpu.h"
#include "lle_GPIO.h"
#include "lle_MSCAN.h"
#include "lle_TIME.h"

/* FreeMaster driver initialization */
extern void app_fmInit(void);
/* FreeMaster command */
extern UINT8 fm_action14;

/* Local timebase */
UINT8 u8CounterAPI;

/*******************************************************************************/
/**
* \brief    This module writes byte to emulated EEPROM. 
* \author   rc574c
* \param    WAKE_Data: wake up function code
            (Address given by WAKE_ACT_EEPROM_ADR macro)
* \return   void
*/
void app_EEPROMWriteWakeFunc(UINT8 u8WAKE_Data)
{	
    *((unsigned char *far)WAKE_ACT_EEPROM_ADR) = u8WAKE_Data; 
}

/*******************************************************************************/
/**
* \brief    This module clears byte from emulated EEPROM. 
* \author   rc574c
* \param    Address given by WAKE_ACT_EEPROM_ADR macro
* \return   void
*/
void app_EEPROMClearWakeAct(void)
{	
    *((unsigned char *far)WAKE_ACT_EEPROM_ADR) = WAKE_ACT_CLR; 
}

/*******************************************************************************/
/**
* \brief    This module reads Wake-up action byte from emulated EEPROM. 
* \author   rc574c
* \param    Address given by WAKE_ACT_EEPROM_ADR macro
* \return   void
*/
UINT8 app_RequiredBoardWakeFunctionality(void)
{	            
    return *((unsigned char *far)WAKE_ACT_EEPROM_ADR);       
}

/*******************************************************************************/
/**
* \brief    This module search across predefined EEPROM memory area byte with 
            value not 0xFF and returns contents of read byte.  
* \author   rc574c
* \param    EEPROM space given by DATA_START_EEPROM_ADR and 
            DATA_BYTES_VOLUME_EEPROM.
* \return   EEPROM data
*/
UINT8 app_EEPROMReadData(void)
{
	volatile UINT8 Data, i, overflow;
	
	// Reset position counter 	
	i = 0;
	
	// Determine number of read cycles 
	overflow = 1;
	
	// Search new data (data not 0xFF) 
	do
	{	
		// Number of read cycles reached? 
		if (i > DATA_BYTES_VOLUME_EEPROM)
		{
			overflow = 0;
		}
		else
		{
			// Read new data
			Data = *(UINT8 *)(DATA_START_EEPROM_ADR + (unsigned long)i);
		}
		
		// Select next sector (4 bytes) 
		i = i + 4;
	}
	while ((Data == 0xFF) && (overflow));
		
	// Return Data
    return Data;
}

/*******************************************************************************/
/**
* \brief    This module search across predefined EEPROM memory area byte with 
            value not 0xFF. Then erases position and write new value to the 
            next sector (4bytes distance).
* \author   rc574c
* \param    EEPROM space given by DATA_START_EEPROM_ADR and 
*           DATA_BYTES_VOLUME_EEPROM.
* \return   None
*/
void app_EEPROMStoreData(UINT8 Data)
{
	volatile UINT8 Data1, i, overflow;
	 

	// Reset position counter 	
	i = 0;
	
	// Determine number of read cycles 
	overflow = 1;
	
	// Search last data field (data not 0xFF) 
	do
	{
		// Number of read cycles reached? 
		if (i > DATA_BYTES_VOLUME_EEPROM)
		{
			overflow = 0;
		}
		else
		{
			// Read new data 
			Data1 = *(UINT8 *)(DATA_START_EEPROM_ADR + (unsigned long)i);
		}
		
		// Select next sector (4 bytes) 
		i = i + 4;
	}
	while ((Data1 == 0xFF) && (overflow));	
	
	// Erase sector contained last data (0xFF) 
	
	
	// Reset position (only 20 EEPROM sectors used) 
	if (i > DATA_BYTES_VOLUME_EEPROM)
	{
		i = 0;
	}
	
	// Write data to EEPROM next sector 	
}

/*******************************************************************************/
/**
* \brief    This is the Wake-up functionality 1 routine. 
            It turns on Cabin lights 2 on 100ms, period 2s. Then it reads 
            LIN node data, and put board into Stop mode. 
* \author   RC574C/ B05114
* \param    None
* \return   None
*/
void app_WakeUp1(void)
{
    // APD devices sleep mode
	app_apdDevSleep();
	
    // Load counter value 	
	u8CounterAPI = 19;
	
	// Configure API to interrupt at 100ms rate 
	lle_Init_API(API_100ms);     
	
	do
	{
        // MC33742 STOP mode enter 
    	// Lx inputs wake-up disabled
    	des_MC33742_SetLxSens(SBC_L0L1DISABLED|SBC_L2L3DISABLED);
    	// Watchdog disabled
    	des_MC33742_WDT_StopMode(DISABLED);
    		
    	// CAN wake-up disabled
    	des_MC33742_CAN_Wkup_SleepMode(DISABLED);	
    	// CAN disabled
    	des_MC33742_CAN_SleepMode(DISABLED);
    	
        // Clear BATFAIL bit in MCR by reading MCR
    	(void)des_MC33742_Read(SBC_MCR);		
    	// Enter STOP mode
    	des_MC33742_SetMode(SBC_STOP);
    		
    	// MCU stop mode
        lle_MCU_FullStop_Mode();
        
        
    /* Execution is stopped at this point, */
    /* it resumes when interrupt is asserted */		
		
	    lle_Init_XOSC();    /* Re-enable PLL */	    	
        	    	    
	    // Set SBC in normal mode 
        des_MC33742_SetMode(SBC_NORMAL);      
        des_MC33742_Config();		
	    
	    // LIN physical layer enable 
        des_MC33661_SetMode(LIN_NORMAL);
				
		// Select action (turn ON/OFF MC10XS3412 HS3 LED, duty cycle 100ms on, period 2s)
		if (u8CounterAPI == 20)
		{
			// Reset API interrupt counter 
			u8CounterAPI = 0;
									
            // MC10XS3412 - eSwitch enable
	        des_MC10XS3412_SetMode(XS_NORMAL);
	        
	        // LIN message
	        app_LIN_Message(LIN_SLAVE_ID);
	        
			// Turn-ON MC10XS3412 HS3 LED
			app_lightImobON(); 
						
			// Keep HS3 on 100ms
			while (u8CounterAPI == 0);
			
			// Turn-OFF MC10XS3412 HS3 LED
			app_lightImobOFF();
					
			// MC10XS3412 enters sleep mode
            des_MC10XS3412_SetMode(XS_SLEEP);            
		}
		         
	  	// LIN message
	    app_LIN_Message(LIN_SLAVE_ID);
		
        // Clear MC33472 Watchdog 
        des_MC33742_ClearWDT(); 
		  
        // Give processing time to LIN module
        lle_Delay10ms(); 
		
        // LIN physical layer disable 
        des_MC33661_SetMode(LIN_SLEEP);
	}
	while(S1 == 1);
	
	
	VREGAPICL_APIFE = 0;    /* Disable API */
	
	// Init SBC, ESwitches, MSDIs, COSS, H-bridge, LIN interface, CAN interface
	app_initAPDDevices(); 
	
    // Init variables, clear freeMASTER variables
	app_initSystemVariables();
		
	// Initialize FreeMASTER driver
    app_fmInit();
  
    // Init MC33696 device and RKE driver 
	app_rkeInit();
	
	// Init LIN and CAN SW drivers
    app_initConnectivity(); 			
}

/*******************************************************************************/
/**
* \brief    This is the Wake-up functionality 2 routine.
            MC33742 HS cyclic sense wakes the Main Board from 
            sleep mode each 100ms. Then reads LIN node data and returns back 
            to sleep mode. 
* \author   RC574C/ B05114
* \param    None
* \return   None
*/
void app_WakeUp2(void)
{	
	// Clear MC33472 Watchdog (350ms timeout period) 
	des_MC33742_ClearWDT(); 

	// LIN message
	app_LIN_Message(LIN_SLAVE_ID);
	
	// Give processing time to LIN module
    lle_Delay10ms();
			 	
    // MC33742 cyclic sense unit activation 
	// Configure L0, L1 high level sensitive, L2, L3 disabled 
	des_MC33742_SetLxSens(SBC_L0L1HIGH|SBC_L2L3DISABLED);
			
    // CAN does not wakes-up SBC from sleep mode 
	des_MC33742_CAN_Wkup_SleepMode(DISABLED);	
	// CAN sleep enabled
	des_MC33742_CAN_SleepMode(ENABLE);
	
	// HS ON in normal and low power modes */
	des_MC33742_HS(ON);
    // HS cyclic sense timing cca. 74ms period
	des_MC33742_SetCyclicSense(SBC_CYCLICSENSE_74MS);
	// Enable MC33742 forced wake-up
	des_MC33742_Write(SBC_LPC | 0x0D);
		
	// Clear BATFAIL bit in MCR by reading MCR
	(void)des_MC33742_Read(SBC_MCR);
	// Set NOSTOP in RCR register (allow sleep mode)
	des_MC33742_Write(SBC_RCR | SBC_NOSTOP |SBC_CANSLEEP); 			    
    // Enter SLEEP mode
	des_MC33742_SetMode(SBC_SLEEP);	
    
	// Wait, until the power supply voltage disappear         
	while (1)
	{
	}
}

/*******************************************************************************/
/**
* \brief    This is the Wake-up functionality 3 routine.
            It sends 8 data byte CAN frame on CAN wake-up message. 
            Then the main board is put in stop mode.
* \author   RC574C/ B05114
* \param    None
* \return   None
*/
void app_WakeUp3(void)
{
    // APD devices sleep mode
    app_apdDevSleep();
       
	do
	{   	               	
    	// MC33742 STOP mode enter 
    	// Lx inputs wake-up disabled
    	des_MC33742_SetLxSens(SBC_L0L1DISABLED|SBC_L2L3DISABLED);
    	// Watchdog disabled
    	des_MC33742_WDT_StopMode(DISABLED);	
    	
    	// CAN wake-up enabled
    	des_MC33742_CAN_Wkup_SleepMode(ENABLE);	
    	// CAN sleep mode disabled
    	des_MC33742_CAN_SleepMode(DISABLED);
    	
        // Clear BATFAIL bit in MCR by reading MCR
    	(void)des_MC33742_Read(SBC_MCR);		
    	// Enter STOP mode
    	des_MC33742_SetMode(SBC_STOP);
    	    	
    	/* Enable IRQ detection (driven by MC33742 INT pin)*/
		IRQCR_IRQEN = 1;  
			
    	// MCU stop mode
        lle_MCU_FullStop_Mode();
    	
    	
    /* Execution is stopped at this point, */
    /* it resumes when interrupt is asserted */
    			
    			
    	IRQCR_IRQEN = 0;    /* Disable IRQ detection */
    	
    	lle_Init_XOSC();    /* Re-enable PLL */    	    
        
    	// Set SBC in normal mode 
        des_MC33742_SetMode(SBC_NORMAL);      
        des_MC33742_Config();			                    
	    			        
		// Send 8byte CAN message 				
        app_Send_CAN_Message(ST_ID_081);			
	}
	while(S1 == 1);
    
	// Init SBC, ESwitches, MSDIs, COSS, H-bridge, LIN interface, CAN interface
	app_initAPDDevices(); 
	
		// Init variables, clear freeMASTER variables
	app_initSystemVariables();
		
	// Initialize FreeMASTER driver
    app_fmInit();
  
    // Init MC33696 device and RKE driver 
	app_rkeInit();
	
	// Init LIN and CAN SW drivers
    app_initConnectivity(); 
}

/*******************************************************************************/
/**
* \brief    This is the Wake-up functionality 4 routine. 
            It sends 8 data byte CAN frame on CAN wake-up message. 
            Then the main board is put in sleep mode.
* \author   RC574C/ B05114
* \param    None
* \return   None
*/
void app_WakeUp4(void)
{	
	/* Send 8byte message */
    app_Send_CAN_Message(ST_ID_081);
    
    // give processing time to MSCAN module
    lle_Delay4ms();
	   
    /* MSCAN in listen-only mode to avoid signal on tx pin when rx goes low */
    lle_CAN_ListenOnly();   
    
	// Enter Sleep mode 
	app_boardSleepMode();	
}

/*******************************************************************************/
/**
* \brief    This is the Wake-up routine selector, called after processor reset.
* \author   rc574c
* \param    None
* \return   None
*/
void app_boardWakeUpFncTst(void)
{	
	static UINT8 cmd;

	// Read Wake-up fnc from EEPROM
	cmd = app_RequiredBoardWakeFunctionality();					 	

    // Default value 0xFF -> no wake-up function) 
	if (cmd != WAKE_ACT_CLR)
	{	
		// Pushbutton SW is not switched 
		if(S1 == 1)
		{
			// Run Wake-up functionality 
			switch (cmd)
			{
				case WAKE_UP_1 :
				{	
					app_WakeUp1();
					break;
				}
				case WAKE_UP_2 :
				{
					app_WakeUp2();
					break;
				}
				case WAKE_UP_3 :
				{
					app_WakeUp3();
					break;
				}		
				case WAKE_UP_4 :
				{
					app_WakeUp4();
					break;
				}
			}
		}
		else
		{
			// Clear stored variable, finish wake-up functionality 
			app_EEPROMClearWakeAct();
		}
	}
}

/*******************************************************************************/
/**
* \brief    This is the Wake-up routine selector.
* \author   rc574c
* \param    None
* \return   None
*/
void app_boardWakeUpFnc(UINT8 cmd)
{
	// Run Wake-up functionality 
	switch (cmd)
	{
		case WAKE_UP_1 :
		{			    
            app_WakeUp1();				                                                                    
			break;
		}
		
		case WAKE_UP_2 :                  
		{							
		    if(app_RequiredBoardWakeFunctionality()!= WAKE_UP_2)
		    {		        
		        app_EEPROMWriteWakeFunc(WAKE_UP_2);  
		    }		        
			app_WakeUp2();            			            
			break;
		}
		
		case WAKE_UP_3 :
		{					    
            app_WakeUp3();  			
			break;
		}	
			
		case WAKE_UP_4 :
		{				
			if(app_RequiredBoardWakeFunctionality()!= WAKE_UP_4)
			{
                app_EEPROMWriteWakeFunc(WAKE_UP_4);
			}                
            app_WakeUp4();			
			break;
		}
	}
}

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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区三区四区| 99re成人精品视频| 日韩欧美国产1| 国内精品久久久久影院色| 久久先锋影音av| 成人高清免费观看| 亚洲三级免费电影| 欧美伊人久久久久久久久影院 | 蜜桃视频一区二区三区| 日韩视频免费观看高清完整版在线观看| 日韩和欧美一区二区| 欧美mv日韩mv| 97超碰欧美中文字幕| 亚洲一区二区三区四区五区中文| 欧美久久婷婷综合色| 国内精品视频666| 亚洲国产精品ⅴa在线观看| 91小视频免费观看| 日本最新不卡在线| 国产精品色哟哟| 精品视频1区2区3区| 精品一区二区三区不卡| 国产精品国产三级国产aⅴ入口| 欧美三级午夜理伦三级中视频| 九九精品视频在线看| 亚洲天堂免费在线观看视频| 91精品欧美福利在线观看 | 福利一区二区在线观看| 亚洲一区电影777| 久久久久久一级片| 欧美男生操女生| 成人免费看的视频| 久久精品国产精品青草| 亚洲精品久久久蜜桃| 亚洲精品一区二区三区影院| 在线观看视频一区二区欧美日韩| 国产原创一区二区| 午夜精彩视频在线观看不卡| 国产精品九色蝌蚪自拍| 精品久久久久久久一区二区蜜臀| 91蜜桃网址入口| 国产在线精品一区二区| 亚洲一区免费观看| 国产精品天美传媒| 久久综合九色欧美综合狠狠| 欧美性受xxxx黑人xyx性爽| 成人免费视频视频| 激情综合网最新| 午夜视频一区二区| 一区二区三区在线高清| 中文字幕精品在线不卡| 精品成a人在线观看| 91麻豆精品国产自产在线| 日本黄色一区二区| 丁香婷婷综合激情五月色| 久久99精品久久只有精品| 亚洲成人av一区二区三区| 一区二区三区四区乱视频| 欧美激情在线一区二区三区| 久久人人97超碰com| 日韩欧美国产成人一区二区| 91精品欧美综合在线观看最新 | 日精品一区二区| 亚洲免费在线视频一区 二区| 中文字幕高清一区| 久久精品人人做人人爽人人| 337p粉嫩大胆色噜噜噜噜亚洲| 欧美一区二区在线不卡| 3d动漫精品啪啪1区2区免费 | 久久99久久99精品免视看婷婷| 亚洲成人中文在线| 亚洲成a人v欧美综合天堂| 亚洲人成网站影音先锋播放| 亚洲三级免费观看| 亚洲视频免费在线观看| 亚洲欧美激情在线| 亚洲一区二区三区影院| 亚洲主播在线播放| 婷婷成人综合网| 七七婷婷婷婷精品国产| 极品少妇一区二区三区精品视频 | 中文字幕日韩一区二区| 国产精品久久国产精麻豆99网站| 国产欧美一区二区精品婷婷| 国产欧美精品一区| 国产精品国产精品国产专区不片| 1区2区3区精品视频| 一区二区三区电影在线播| 一区二区三区四区乱视频| 亚洲成人一区在线| 精品在线一区二区| 成人综合在线观看| 色婷婷精品大视频在线蜜桃视频| 日本道免费精品一区二区三区| 欧美色窝79yyyycom| 欧美一级黄色录像| 国产日韩亚洲欧美综合| 综合久久国产九一剧情麻豆| 亚洲综合色区另类av| 麻豆国产一区二区| 国产 日韩 欧美大片| 91蜜桃网址入口| 日韩欧美一区在线| 国产三级一区二区三区| 亚洲欧美日本韩国| 全国精品久久少妇| 国产不卡一区视频| 欧美综合天天夜夜久久| 精品日韩在线观看| 国产精品免费观看视频| 亚洲va韩国va欧美va| 国产一区二区毛片| 欧洲精品视频在线观看| 欧美精品一区二区蜜臀亚洲| 亚洲嫩草精品久久| 久久激情五月婷婷| 成人免费视频免费观看| 91超碰这里只有精品国产| 久久精品无码一区二区三区| 亚洲综合999| 粉嫩aⅴ一区二区三区四区| 欧美久久久一区| 国产精品久久久久精k8| 美国欧美日韩国产在线播放| 一本色道亚洲精品aⅴ| 2021国产精品久久精品| 亚洲自拍另类综合| 成人99免费视频| 精品va天堂亚洲国产| 亚洲成人午夜电影| 成人av高清在线| 久久综合久久综合亚洲| 亚洲在线免费播放| 成人黄色片在线观看| 欧美一二三区在线观看| 亚洲综合小说图片| 成人av网站免费| 久久久久99精品国产片| 欧美aaaaaa午夜精品| 欧美亚男人的天堂| **网站欧美大片在线观看| 韩国精品主播一区二区在线观看 | 色婷婷一区二区| 国产区在线观看成人精品| 全国精品久久少妇| 欧美日韩激情一区二区三区| 亚洲人123区| 北条麻妃一区二区三区| 久久美女艺术照精彩视频福利播放| 午夜亚洲福利老司机| 在线精品视频小说1| 亚洲视频狠狠干| 成人黄色片在线观看| 国产午夜久久久久| 国产精品原创巨作av| www激情久久| 韩日精品视频一区| 日韩欧美一二三四区| 蜜桃视频在线一区| 日韩欧美你懂的| 久久99日本精品| 久久综合999| 国产精品白丝av| 国产欧美日韩一区二区三区在线观看| 国产一区二区三区日韩 | 欧美日韩另类一区| 亚洲一区在线观看免费| 欧美亚洲自拍偷拍| 亚洲成av人片一区二区三区| 欧美剧情片在线观看| 日韩av电影天堂| 欧美岛国在线观看| 国产在线精品一区在线观看麻豆| 久久久亚洲精品一区二区三区| 国产米奇在线777精品观看| 国产欧美日韩麻豆91| 成人开心网精品视频| 亚洲私人黄色宅男| 欧美日韩不卡在线| 裸体在线国模精品偷拍| 久久亚洲影视婷婷| 99久久精品一区| 亚洲一区二区三区四区五区中文 | 久久青草国产手机看片福利盒子| 国产乱码精品一区二区三区忘忧草| 国产欧美一区二区精品婷婷| 成人国产精品免费观看动漫| 亚洲精品高清在线| 69成人精品免费视频| 国产精品123区| 亚洲影视在线播放| 日韩欧美一区在线观看| 成人一二三区视频| 一区二区三区日韩欧美精品| 91精品国产综合久久精品麻豆| 国产综合久久久久久鬼色| 亚洲欧洲成人自拍| 欧美精品123区| 高清beeg欧美| 调教+趴+乳夹+国产+精品|