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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? flash_atxx_write.c

?? atmel flash 燒寫源代碼
?? C
字號(hào):
//*-----------------------------------------------------------------------------//*      ATMEL Microcontroller Software Support  -  ROUSSET  -//*-----------------------------------------------------------------------------//* The software is delivered "AS IS" without warranty or condition of any//* kind, either express, implied or statutory. This includes without//* limitation any warranty or condition with respect to merchantability or//* fitness for any particular purpose, or against the infringements of//* intellectual property rights of others.//*-----------------------------------------------------------------------------//* File Name           : flash_atxx_write.c//* Object              : Write flash function//*                         - AT29LV1024//*                         - AT29C020//*                         - AT49BV1604/AT49BV1604T//*                         - AT49BV1614/AT49BV1604T//*                         - AT49BV8011/AT49BV8011T//*                         - AT49BV8011/AT49BV8011T//*//* 1.0 02/11/00 JPP    : Creation//*-----------------------------------------------------------------------------#include    "lib_flash_at49.h"#include    "lib_flash_at29.h"//* Static data for AT29 and AT49static  flash_word *addr_base;static  flash_word *addr_load;static  FlashAt49BVDef *flash;//* Static Variable for AT49static  flash_word  *addr_prg_sector ;static  unsigned int block  ;static  int         nb_sector  ;static  int         first ;static  int         erase  ;//* AT29 static informationstatic int pt_tmp_data_sector;static flash_word  tmp_data_sector[FLASH_AT29_MAX_SECTOR_SIZE/2] ;//*----------------------------------------------------------------------------//* Function Name       : flash_at29_init_write//* Object              : check if sector is erased if not erase//* Input Parameters    ://* Output Parameters   : if data sector erase TRUE or FALSE//*----------------------------------------------------------------------------void  flash_at29_init_write ( flash_word *address_base,flash_word *address_load,FlashAt49BVDef *flash_type)//* Begin{    int count;        //* init the AT29 static data        //* Address information        addr_base = address_base ;        addr_load= address_load;        //* Data tampon        for (count = 0 ; count < FLASH_AT29_MAX_SECTOR_SIZE/2 ; count++)        {            tmp_data_sector[count]=0;        }        // data tampon pointeur        pt_tmp_data_sector =0;        // sector info        flash=flash_type;}//*----------------------------------------------------------------------------//* Function Name       : flash_at29_purge_write_block//* Object              :  write//* Input Parameters    : <buffer> data block addressFlash//*                       <size> sector size in byte//* Output Parameters   : if data sector erase TRUE or FALSE//*---------------------------------------------------------------------------- int flash_at29_purge_write_block ( void)//* Begin{    if ( pt_tmp_data_sector !=0)    {        if (!flash_at29_erase_write_flash_block (                    flash ,(int) addr_base,addr_load,tmp_data_sector))        {            return (FALSE);        }        addr_load += pt_tmp_data_sector;        pt_tmp_data_sector=0;    }    return (TRUE);}//*----------------------------------------------------------------------------//* Function Name       : flash_at29_write_block//* Object              :  write//* Input Parameters    : <buffer> data block addressFlash//*                       <size> sector size in byte//* Output Parameters   : if data sector erase TRUE or FALSE//*---------------------------------------------------------------------------- int flash_at29_write_block ( u_char *buffer,int size)//* Begin{    unsigned int    count;    u_char * tmp;    tmp = (u_char *) &tmp_data_sector[pt_tmp_data_sector];    //* copy the input buffer in flash buffer    for  ( count =0 ; count < size ; count ++)    {        tmp[count] = buffer[count];    }    pt_tmp_data_sector +=size/2;    //* check if buffer full, ready for write    if ( pt_tmp_data_sector == flash->flash_org->sector_size/2)    {        if (!flash_at29_erase_write_flash_block (                    flash ,(int) addr_base,addr_load,tmp_data_sector))        {            return (FALSE);        }        addr_load += pt_tmp_data_sector;        pt_tmp_data_sector=0;    }    return (TRUE);}//*----------------------------------------------------------------------------//* Function Name       : flash_at49_init_write//* Object              : check if sector is erased if not erase//* Input Parameters    ://* Output Parameters   : if data sector erase TRUE or FALSE//*----------------------------------------------------------------------------void  flash_at49_init_write ( flash_word *address_base,flash_word *address_load,FlashAt49BVDef *flash_type)//* Begin{        addr_prg_sector = address_base ;        addr_base = address_base ;        addr_load= address_load;        block = 0 ;        nb_sector = 0 ;        first = TRUE ;        erase = FALSE ;        flash=flash_type;}//*----------------------------------------------------------------------------//* Function Name       : erase_sector//* Object              : check if sector is erased if not erase//* Input Parameters    : <base_addr> Flash base address//*                       <sector_addr> base sector address//*                       <size> sector size in byte//* Output Parameters   : if data sector erase TRUE or FALSE//*----------------------------------------------------------------------------static int erase_sector ( flash_word *base_addr,flash_word *sector_addr,int size )//* Begin{    int     trial = 0 ;    //* While flash is not erased or too much erasing performed    while (( flash_at49_check_sector_erased ( sector_addr, size ) == FALSE ) &&           ( trial++ < NB_TRIAL_ERASE ))    {        if ( flash_at49_erase_sector(base_addr,sector_addr)  == FALSE )        {            //* return False            return ( FALSE ) ;        } //* Endif    }//* EndWhile    //* Return True    return ( TRUE ) ;}//* End//*----------------------------------------------------------------------------//* Function Name       : flash_at49_erase_write_block//* Object              : check if sector is erased if not erase erase and write//* Input Parameters    : <buffer> data block addressFlash//*                       <size> sector size in byte//* Output Parameters   : if data sector erase TRUE or FALSE//*----------------------------------------------------------------------------int flash_at49_erase_write_block ( u_char *buffer,int size)//* Begin{    unsigned short  data ;    unsigned int    count;    int         sector_found ;    int         change_sector ;    //* For each word read from the file    for  ( count =0 ; count < size ; count +=2 )    {    //data = buffer[count];         data =  (unsigned short) buffer[count]| (unsigned short)buffer[count+1]  << 8 ;        //* Clear sector found flag        sector_found = FALSE ;        //* Clear Sector change flag        change_sector = FALSE ;        //* While sector not found        while ( sector_found == FALSE )        {            //* If program address lower than current sector address + its size            if (( addr_prg_sector + (flash->flash_org[block].sector_size/2) )                > addr_load )            {                //* Flag sector found                sector_found = TRUE ;            }            //* Else            else            {                //* Flag sector change                change_sector = TRUE ;                //* Add current sector size to program address                addr_prg_sector += (flash->flash_org[block].sector_size/2) ;                //* Increment the sector number                nb_sector++ ;                //* If last sector in block tested                if ( nb_sector >= flash->flash_org[block].sector_number )                {                    //* Re-initialize sector number in block                    nb_sector = 0 ;                    //* Increment block number                    block ++ ;                    //* If last block tested                    if ( block >= flash->flash_block_nb )                    {                        //*  Error Address not found in the Flash Address Field Return False                        return ( FALSE ) ;                    }                    //* Endif                }                //* Endif            }            //* EndIf        }        //* EndWhile        //* Unflag Erasing        erase = FALSE ;        //* If new sector or first sector        if (( change_sector == TRUE ) || ( first == TRUE ))        {            //* If not first sector            if ( first == FALSE )            {                //* Flag Erasing                erase = TRUE ;            }            //* Else, if first sector            else            {                //* Flag to erase the sector                erase = TRUE ;            }            //* Endif        }        //* Endif        //* If Erasing flagged        if ( erase == TRUE )        {            //* Erase, if Timeout            if ( erase_sector ( addr_base,                                addr_prg_sector,                                flash->flash_org[block].sector_size) != TRUE )            {                //* Return False                return ( FALSE ) ;            }            //* Endif        }        //* Endif        //* Write the value read in Flash, if error        if ( flash_at49_write_flash ( addr_base,addr_load, data )!= TRUE )        {            //* Return False            return ( FALSE ) ;        }        //* Endif        //* Increment load address        addr_load ++ ;        //* Remove first address to program flag        first = FALSE ;    }    //* EndWhile    //* Return True    return ( TRUE ) ;}//* End

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区在线免费观看| 91丨porny丨首页| 亚洲成人免费av| 一二三区精品视频| 亚洲精品免费播放| 亚洲成人精品影院| 久久精品国产成人一区二区三区| 日本麻豆一区二区三区视频| 日韩精品国产精品| 久久99国内精品| 国产精品亚洲第一| 99re视频精品| 欧美体内she精高潮| 日韩一级黄色片| 久久青草欧美一区二区三区| 国产精品欧美久久久久无广告| 中文字幕色av一区二区三区| 亚洲黄色小说网站| 青青草国产成人av片免费| 精彩视频一区二区三区 | 精品视频资源站| 在线播放中文一区| 亚洲精品在线一区二区| 亚洲三级在线观看| 日韩在线观看一区二区| 丁香六月综合激情| 欧美日韩精品欧美日韩精品一综合| 日韩欧美一区在线| 国产精品久久久久久久蜜臀| 亚洲风情在线资源站| 韩国三级电影一区二区| 色偷偷久久人人79超碰人人澡| 这里只有精品99re| 国产精品女主播av| 免费观看在线色综合| 91在线观看成人| 精品99一区二区| 亚洲国产美女搞黄色| 国产成人精品aa毛片| 欧美日韩国产在线观看| 国产精品视频一二| 久久99精品国产.久久久久久| 色88888久久久久久影院按摩| 精品国产区一区| 日韩黄色在线观看| 在线日韩国产精品| 国产精品乱人伦中文| 免费在线欧美视频| 欧洲日韩一区二区三区| 亚洲国产成人一区二区三区| 蜜桃在线一区二区三区| 色94色欧美sute亚洲线路一ni| 久久久午夜电影| 免费看欧美美女黄的网站| 欧美中文字幕久久| 亚洲免费大片在线观看| 成人黄色在线网站| 国产欧美日本一区二区三区| 九一久久久久久| 日韩欧美亚洲国产另类| 午夜日韩在线电影| 欧美系列一区二区| 亚洲亚洲人成综合网络| 91色.com| 一二三区精品福利视频| 色菇凉天天综合网| 樱桃视频在线观看一区| 色网站国产精品| 一区二区视频免费在线观看| 91在线观看一区二区| 亚洲欧洲制服丝袜| 日本韩国一区二区三区视频| 亚洲丝袜美腿综合| 色诱亚洲精品久久久久久| 中文字幕在线观看不卡视频| 色综合久久久久| 亚洲狠狠爱一区二区三区| 精品视频一区二区不卡| 亚洲午夜激情网站| 91精品国产欧美一区二区| 日本美女一区二区三区| 精品盗摄一区二区三区| 成人永久aaa| 亚洲日本青草视频在线怡红院| 91首页免费视频| 五月婷婷综合网| 欧美一区二区免费观在线| 蜜桃一区二区三区四区| 久久久99免费| 色国产综合视频| 日本人妖一区二区| 久久人人97超碰com| av在线播放成人| 亚洲成人激情自拍| 久久久久国产免费免费| 色综合婷婷久久| 日韩精品高清不卡| 欧美电影精品一区二区| 成人小视频免费在线观看| 亚洲丝袜精品丝袜在线| 欧美日韩一区高清| 国产一区二区三区四| 亚洲麻豆国产自偷在线| 日韩欧美中文一区二区| av亚洲精华国产精华精| 蜜臀a∨国产成人精品| 国产精品高潮久久久久无| 欧美色老头old∨ideo| 国产传媒一区在线| 午夜日韩在线观看| 日韩美女精品在线| 欧美大片一区二区三区| 91亚洲精品久久久蜜桃| 国产综合色产在线精品| 亚洲激情成人在线| 久久久精品免费网站| 欧美人体做爰大胆视频| 成人中文字幕电影| 麻豆精品新av中文字幕| 一区二区三区精品视频| 国产婷婷色一区二区三区四区| 欧美欧美欧美欧美首页| 色综合天天狠狠| 成人国产视频在线观看| 久久se精品一区二区| 日韩有码一区二区三区| 一区二区三区欧美亚洲| 国产精品久线在线观看| 久久亚洲捆绑美女| 欧美tk—视频vk| 91精品国产综合久久久久久漫画| 成人激情综合网站| 国产经典欧美精品| 精品午夜一区二区三区在线观看 | 日韩女同互慰一区二区| 欧洲亚洲精品在线| 成人午夜激情在线| 国产精品1区2区| 国产福利视频一区二区三区| 麻豆一区二区三| 久久se精品一区二区| 麻豆视频一区二区| 九九国产精品视频| 欧美aaaaa成人免费观看视频| 五月综合激情日本mⅴ| 五月婷婷综合在线| 视频一区欧美日韩| 日韩国产精品91| 免费在线看一区| 激情小说亚洲一区| 国产成人在线视频网站| 国产69精品久久久久毛片| 国产99久久精品| 91亚洲大成网污www| 91丨九色丨蝌蚪丨老版| 日本道免费精品一区二区三区| 欧美午夜一区二区三区| 88在线观看91蜜桃国自产| 欧美一区二区三区四区在线观看| 日韩午夜在线观看视频| 久久久综合精品| 中文字幕亚洲一区二区av在线| 一区二区在线观看视频在线观看| 亚洲码国产岛国毛片在线| 亚洲午夜三级在线| 麻豆精品国产传媒mv男同| 国产一区二区三区在线观看精品| 国产福利一区二区三区在线视频| 国产 欧美在线| 欧美午夜视频网站| 精品国产网站在线观看| 国产精品久久久久久久久果冻传媒| 亚洲欧美偷拍卡通变态| 日韩精品乱码av一区二区| 国产福利91精品一区二区三区| 色综合激情五月| 日韩欧美激情在线| 亚洲图片另类小说| 丝袜a∨在线一区二区三区不卡| 韩国成人精品a∨在线观看| 成人精品国产免费网站| 欧美午夜精品理论片a级按摩| 欧美一区二区人人喊爽| 国产亚洲成aⅴ人片在线观看| 一区二区在线观看视频| 韩日av一区二区| 日本道精品一区二区三区| 精品国产乱子伦一区| 亚洲少妇30p| 国产曰批免费观看久久久| 色播五月激情综合网| 久久久影视传媒| 天天做天天摸天天爽国产一区| 国产91精品一区二区麻豆网站| 在线看日韩精品电影| 中文字幕av一区二区三区免费看| 五月婷婷综合在线| 91蝌蚪porny成人天涯| 久久精品欧美一区二区三区麻豆| 亚洲国产精品麻豆|