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

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

?? sst39vf640x_driver.c

?? 單片機驅動SST公司16位Nor flash器件SST640X的源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
        if (!ReturnStatus)    	return ReturnStatus;    }    return ReturnStatus;}/************************************************************************//* PROCEDURE:   SecID_Lock_Status                                       *//*                                                                      *//* This procedure should be used to check the Lock Status of SecID	*//*                                                                      *//* Input:                                                               *//*          None                                                        *//*                                                                      *//* Output:                                                              *//*          return TRUE:  indicates SecID is Locked  			 *//*          return FALSE: indicates SecID is Unlocked  	  	 *//************************************************************************/int SecID_Lock_Status(void){    WORD SecID_Status;         //  Issue the Sec ID Entry code to 39VF640X    *sysAddress(0x5555) = 0x00AA;  // write data 0x00AA to device addr 0x5555    *sysAddress(0x2AAA) = 0x0055;  // write data 0x0055 to device addr 0x2AAA    *sysAddress(0x5555) = 0x0088;  // write data 0x0088 to device addr 0x5555    Delay_150_Nano_Seconds();      // insert delay time = Tida    	//  Read Lock Status of SecID segment    SecID_Status = *sysAddress(0x00FF);    SecID_Status &= 0x0008; // Unlocked: DQ3=1; Locked: DQ3=0        // Issue the Sec ID Exit code thus returning the 39VF640X        // to the read operating mode    *sysAddress(0x5555) = 0x00AA;  // write data 0x00AA to device addr 0x5555    *sysAddress(0x2AAA) = 0x0055;  // write data 0x0055 to device addr 0x2AAA    *sysAddress(0x5555) = 0x00F0;  // write data 0x00F0 to device addr 0x5555    Delay_150_Nano_Seconds();      // insert delay time = Tida    if (!SecID_Status)    	return TRUE;		   // SecID segment is Locked    return FALSE;   		   // SecID segment is Unlocked}/************************************************************************//* PROCEDURE:   User_SecID_Word_Program                                 *//*                                                                      *//* This procedure can be used to program data into the User SecID       *//* segment (from 000010H--000017H) in 39VF640X.       			*//*                                                                      *//* NOTE:  1. It's recommended to lock out the SecID segment after the 	*//*	  completion of program.					*//*	  2. There's no way to unlock the SecID segment once it's	*/ /*	  locked.							*//*                                                                      *//* Input:                                                               *//*           SrcWord	Source address to fetch data			*//*           Dst  	Destination address to write data		*//*           length  	number of word needs to be programmed		*//*                                                                      *//* Output:                                                              *//*          return TRUE:  indicates SecID program is successful         *//*          return FALSE: indicates SecID program is failed or SecID    *//*			  is locked.					*//************************************************************************/int User_SecID_Word_Program (WORD *SrcWord, WORD *Dst, int length){    WORD *DestBuf = Dst;    WORD *SourceBuf = SrcWord;    int test, index=length;    test = SecID_Lock_Status ();  // check whether the SecID is Locked or not    if (test)                     // TRUE: SecID is Locked    	return FALSE;    while (index--)    {    	*sysAddress(0x5555) = 0x00AA; // write data 0x00AA to device addr 0x5555    	*sysAddress(0x2AAA) = 0x0055; // write data 0x0055 to device addr 0x2AAA    	*sysAddress(0x5555) = 0x00A5; // write data 0x00A5 to device addr 0x5555    	*sysAddress(DestBuf) = *SourceBuf; // transfer the WORD to destination      ++DestBuf;      ++SourceBuf;    	// Read the toggle bit to detect end-of-write for the Sec ID.      	// Do Not use Data# Polling for User_SecID_Word_Program.      test = Check_Toggle_Ready((Uint32)DestBuf); // wait for TOGGLE bit to get ready      if (!test)    	return FALSE;   // SecID Word-Program failed!    }    return TRUE;}/************************************************************************//* PROCEDURE:   User_SecID_Lock_Out                                     *//*                                                                      *//* This procedure can be used to Lock Out the User Seccurity ID.        *//* User Security ID segment, from 000010H--000017H, in 39VF640X.        *//*                                                                      *//* NOTE:  1. Call SecID_Lock_Status() first to verify the SecID is 	*//*	  unlocked.							*//*	  2. SecID segment can't be erased.				*//*	  3. SecID segment can't be unlocked once it's locked.		*//*                                                                      *//* Input:    None                                                       *//*                                                                      *//* Output:   None                                                       *//************************************************************************/void User_SecID_Lock_Out (void){    *sysAddress(0x5555) = 0x00AA; // write data 0x00AA to device addr 0x5555    *sysAddress(0x2AAA) = 0x0055; // write data 0x0055 to device addr 0x2AAA    *sysAddress(0x5555) = 0x0085; // write data 0x0085 to device addr 0x5555    *sysAddress(0x00FF) = 0x0000; // write data 0x0000 to any addr    Delay_10_Micro_Seconds();	// Wait for Word-Program timeout, Tbp=10us}/************************************************************************//* PROCEDURE:   Erase_Suspend		                		*//*                                                                      *//* This procedure can be used to temporarily suspend a Sector/Block-	*//* Erase operation in 39VF640X.  					*//*                                                                      *//* Input:    None                                                       *//*                                                                      *//* Output:   None                                                       *//************************************************************************/void Erase_Suspend (void){    *sysAddress(0x5555) = 0x00B0; // write data 0x00B0 to any addr, i.e. 0x5555    Delay_20_Micro_Seconds();	// The device automatically enters read mode    		// typically within 20 us after the Erase-Suspend command issued.}/************************************************************************//* PROCEDURE:   Erase_Resume		              			*//*                                                                      *//* This procedure can be used to resume a Sector-Erase or Block-Erase   *//* operation that had been suspended in 39VF640X.  	 		*//*                                                                      *//* Input:    None                                                       *//*                                                                      *//* Output:   None                                                       *//************************************************************************/void Erase_Resume (void){    *sysAddress(0x5555) = 0x0030; // write data 0x0030 to any addr, i.e. 0x5555}/************************************************************************//* PROCEDURE:    Check_Toggle_Ready                                     *//*                                                                      *//* During the internal program cycle, any consecutive read operation    *//* on DQ6 will produce alternating 0's and 1's i.e. toggling between    *//* 0 and 1. When the program cycle is completed, DQ6 of the data will   *//* stop toggling. After the DQ6 data bit stops toggling, the device is  *//* ready for next operation.                                            *//*                                                                      *//* Input:                                                               *//*           Dst        must already be set-up by the caller            *//*                                                                      *//* Output:   TRUE   Data toggling success                               *//*           FALSE  Time out                                            *//************************************************************************/int Check_Toggle_Ready (Uint32 Dst){    WORD PreData;    WORD CurrData;    unsigned long TimeOut = 0;    PreData = *sysAddress(Dst);    PreData = PreData & 0x0040;          // read DQ6    while (TimeOut < MAX_TIMEOUT)	 // MAX_TIMEOUT=0x07FFFFFF    {        CurrData = *sysAddress(Dst);        CurrData = CurrData & 0x0040;    // read DQ6 again        if (PreData == CurrData)        {	    return TRUE;        }	PreData = CurrData;        TimeOut++;    }    return FALSE;} /************************************************************************//* PROCEDURE:   Check_Data_Polling                                      *//*                                                                      *//* During the internal program cycle, any attempt to read DQ7 of the    *//* last byte loaded during the page/byte-load cycle will receive the    *//* complement of the true data.  Once the program cycle is completed,   *//* DQ7 will show true data.                                             *//*                                                                      *//* Input:                                                               *//*           Dst        must already be set-up by the caller            *//*           TrueData 	this is the original (true) data            	*//*                                                                      *//* Output:                                                              *//*           TRUE   Data polling success                                *//*           FALSE  Time out                                            *//************************************************************************/int Check_Data_Polling (Uint32 Dst, WORD TrueData){    WORD CurrData;    unsigned long int TimeOut = 0;    TrueData = TrueData & 0x0080; 	// read D7    while (TimeOut < MAX_TIMEOUT)	// MAX_TIMEOUT=0x07FFFFFF    {	 CurrData = *sysAddress(Dst);	 CurrData = CurrData & 0x0080;   // read DQ7	 if (TrueData == CurrData)         {	    return TRUE;         }	 TimeOut++;    }    return FALSE;}  

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧洲亚洲精品在线| 91免费视频观看| eeuss鲁一区二区三区| 欧美性一区二区| 国产亚洲成aⅴ人片在线观看 | 日韩一区二区免费在线电影| 国产拍揄自揄精品视频麻豆| 亚洲福中文字幕伊人影院| 精品一区二区在线免费观看| 色成年激情久久综合| 国产欧美一区二区精品秋霞影院 | 国内精品伊人久久久久av影院 | 久久综合色8888| 亚洲成人av中文| 99久久99久久精品免费观看| 久久色中文字幕| 日韩专区一卡二卡| 99re视频精品| 国产色91在线| 久久99精品久久久久| 欧美一区二区三区免费| 亚洲在线观看免费| 成人午夜电影小说| 亚洲精品在线观看网站| 日韩激情中文字幕| 91传媒视频在线播放| 中文字幕制服丝袜成人av| 国产999精品久久| 2024国产精品视频| 国产毛片精品视频| 精品国产一区久久| 精品一区二区av| 精品久久久久久久久久久久久久久 | 久久亚洲春色中文字幕久久久| 天天影视涩香欲综合网| 欧美日韩高清一区二区不卡| 一区二区欧美视频| 欧美在线free| 亚洲成人777| 555www色欧美视频| 久久精品久久99精品久久| 日韩视频免费直播| 精品亚洲porn| 国产日韩欧美一区二区三区乱码| 国产成人免费视频一区| 国产精品久久二区二区| 成人aa视频在线观看| 成人免费在线播放视频| 一本大道久久a久久综合婷婷| 亚洲精品视频自拍| 精品视频一区二区不卡| 日本亚洲欧美天堂免费| 日韩欧美精品三级| 国产精品91xxx| 成人欧美一区二区三区白人 | 国产成人综合视频| 国产精品麻豆99久久久久久| 91热门视频在线观看| 亚洲成人精品一区| 日韩三级精品电影久久久| 国产乱码精品一区二区三区av| 国产精品网站在线观看| 一本大道综合伊人精品热热| 日韩激情视频网站| 久久五月婷婷丁香社区| 91天堂素人约啪| 日韩和欧美的一区| 久久香蕉国产线看观看99| av在线不卡免费看| 日韩经典中文字幕一区| 欧美国产日韩一二三区| 欧美人与禽zozo性伦| 国产麻豆视频一区二区| 一区二区久久久| 日韩一级片在线观看| www.久久久久久久久| 日韩在线一区二区三区| 欧美国产综合一区二区| 精品视频一区三区九区| 粉嫩av一区二区三区在线播放| 亚洲宅男天堂在线观看无病毒 | 欧美剧情片在线观看| 国产精品亚洲人在线观看| 一区二区三区免费| 亚洲综合成人在线视频| 欧美成人女星排行榜| 一本大道久久a久久精二百| 精品一区二区影视| 亚洲一区二区三区四区五区黄| 日韩色视频在线观看| 91福利国产成人精品照片| 国产精品亚洲视频| 久久精品国内一区二区三区| 一区二区国产视频| 在线视频你懂得一区二区三区| 亚洲三级电影网站| 久久久久久**毛片大全| 精品视频1区2区3区| 国产成a人亚洲| 日本麻豆一区二区三区视频| 国产日韩欧美激情| 91精品国产高清一区二区三区蜜臀| 捆绑变态av一区二区三区| 一区二区三区日本| 国产欧美日韩中文久久| 欧美午夜片在线观看| 免费成人在线视频观看| 亚洲成人午夜电影| 国产精品久久久久久久久动漫| 日韩欧美中文字幕公布| 色成人在线视频| 成人手机在线视频| 国产精品中文字幕欧美| 国产精品主播直播| 美女一区二区视频| 亚洲国产成人tv| 亚洲欧美另类小说视频| 91精品中文字幕一区二区三区| 色综合天天视频在线观看| 国产白丝精品91爽爽久久| 日本免费新一区视频| 一区二区三区国产| 国产精品高潮呻吟久久| 亚洲国产精品成人久久综合一区| 7777精品伊人久久久大香线蕉经典版下载 | 欧美日韩精品三区| 91美女蜜桃在线| 91搞黄在线观看| 色婷婷久久久久swag精品| a4yy欧美一区二区三区| 色综合久久天天| 日韩一级欧美一级| 久久久综合视频| 精品国产凹凸成av人网站| 精品久久久久99| 欧美三级电影在线看| 欧美一级在线观看| 日韩欧美精品三级| 精品国产乱码久久久久久蜜臀| 日韩欧美在线1卡| 国产欧美一区在线| 中文一区一区三区高中清不卡| 欧美电影免费观看高清完整版 | 成人激情视频网站| 99热在这里有精品免费| 97se亚洲国产综合自在线观| 91麻豆.com| 欧美三级日韩三级| 91精品欧美综合在线观看最新| 欧美日韩国产精品成人| 日本高清不卡视频| 欧美日本在线看| 99国产精品一区| 播五月开心婷婷综合| 国产酒店精品激情| 99麻豆久久久国产精品免费优播| 99视频精品免费视频| 麻豆国产一区二区| 奇米精品一区二区三区在线观看 | 久久激情五月婷婷| 国产成人aaa| 欧美在线免费观看亚洲| 福利电影一区二区| 欧美婷婷六月丁香综合色| 日韩三级视频在线看| 精品奇米国产一区二区三区| 精品国产凹凸成av人网站| 综合久久久久久久| 免费在线成人网| 99久久综合色| 99vv1com这只有精品| 日韩一区二区电影| 国产精品久久久久久久裸模 | 懂色av一区二区夜夜嗨| 欧美自拍偷拍一区| 欧美精品一区二区三区视频| 亚洲女与黑人做爰| 久久疯狂做爰流白浆xx| av电影一区二区| 欧美videos中文字幕| 亚洲激情男女视频| 欧美一区二区在线免费播放| 在线一区二区三区四区五区 | 懂色中文一区二区在线播放| 欧美性videosxxxxx| 亚洲欧洲精品一区二区精品久久久| 日精品一区二区| 在线观看欧美黄色| 国产偷国产偷精品高清尤物| 午夜久久久久久| 国产乱码精品一区二区三 | 精品成人一区二区| 天天做天天摸天天爽国产一区| 成人看片黄a免费看在线| 精品人伦一区二区色婷婷| 亚洲国产你懂的| 成人h动漫精品| 精品日韩一区二区三区 | 777午夜精品视频在线播放| 69p69国产精品|