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

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

?? flash_atxx_write.c

?? 有關ATMEL AT91系列CPU的驅動函數庫
?? C
字號:
//*-----------------------------------------------------------------------------//*      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    "drivers/flash/lib_flash_at49.h"#include    "drivers/flash/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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产一区二区三区不卡 | 国产真实乱子伦精品视频| 色老汉一区二区三区| 蜜桃视频第一区免费观看| 国产日韩欧美精品在线| 欧美一区二区三区在线看| 亚洲成av人片一区二区梦乃| 亚洲一区二区黄色| 亚洲人一二三区| 精品久久久久久久久久久久久久久 | 青青草成人在线观看| 久久综合综合久久综合| 欧美一区二区三区视频| 欧美精品久久久久久久多人混战| 在线视频一区二区三区| 欧美在线视频你懂得| 91久久精品一区二区| 欧美日韩在线不卡| 欧美日韩国产综合一区二区三区| 3d动漫精品啪啪1区2区免费| 国产成人激情av| 国产精品911| 免费观看成人av| 日韩高清不卡一区二区| 亚洲国产一区二区a毛片| 国产精品国模大尺度视频| 国产亲近乱来精品视频| 精品久久人人做人人爰| 高清不卡一区二区在线| 成人免费视频一区| 国产乱淫av一区二区三区| 蜜臀久久久久久久| 久久精品二区亚洲w码| 亚洲成av人片在线观看无码| 亚洲小说欧美激情另类| 亚洲国产人成综合网站| 亚洲二区视频在线| 麻豆视频观看网址久久| 国产精品12区| 成人精品一区二区三区四区| 成人美女视频在线观看| 91麻豆swag| 94-欧美-setu| 日韩欧美高清dvd碟片| 欧美一区二区不卡视频| 中文字幕乱码久久午夜不卡 | 91丨九色丨蝌蚪丨老版| 欧美浪妇xxxx高跟鞋交| 五月综合激情网| 高清不卡一区二区在线| jiyouzz国产精品久久| 欧美自拍偷拍一区| 精品少妇一区二区三区在线播放 | 亚洲欧洲日产国码二区| 视频一区国产视频| 不卡免费追剧大全电视剧网站| 欧美在线小视频| 欧美国产成人精品| 成人国产免费视频| 欧美色综合影院| 欧美丝袜第三区| 日韩精品一区国产麻豆| 综合久久给合久久狠狠狠97色 | 正在播放一区二区| 欧美大片一区二区| 亚洲乱码一区二区三区在线观看| 亚洲电影一区二区| 成人性生交大片免费| 日韩一区二区麻豆国产| 亚洲男人的天堂在线观看| 国产麻豆视频精品| 日韩一区二区在线播放| 一区二区欧美精品| eeuss鲁片一区二区三区| 欧美成人激情免费网| 丝袜美腿亚洲综合| 91婷婷韩国欧美一区二区| 精品成人一区二区三区| 亚洲成人综合网站| 91玉足脚交白嫩脚丫在线播放| 欧美色综合影院| 五月综合激情网| 欧美猛男男办公室激情| 中文字幕在线观看一区二区| 亚洲视频狠狠干| 成人性视频网站| 国产欧美一区二区三区鸳鸯浴 | 成人精品免费网站| 在线视频综合导航| 亚洲美女屁股眼交3| 国产成人精品一区二区三区网站观看| 91精品在线免费| 亚洲一线二线三线视频| 91在线观看污| 国产精品久久久久久福利一牛影视 | 日韩av电影一区| 欧美福利电影网| 粉嫩绯色av一区二区在线观看| 欧美无砖专区一中文字| 欧美亚洲高清一区二区三区不卡| 色哟哟在线观看一区二区三区| 久久久久久久久久久黄色| 日韩亚洲欧美一区二区三区| 日韩在线观看一区二区| 精品国产a毛片| 欧美特级限制片免费在线观看| 日av在线不卡| 亚洲视频在线一区| 欧美日韩国产高清一区二区 | 欧美日韩一级二级| 麻豆精品在线观看| 中文一区一区三区高中清不卡| 91丝袜美腿高跟国产极品老师 | 日本一区二区综合亚洲| 99久久久久久| 日韩高清不卡在线| 亚洲精品一二三区| 精品久久99ma| 精品久久久网站| 成人av集中营| 理论电影国产精品| 久久久久久久久岛国免费| 蜜桃久久久久久久| 亚洲天堂免费看| 久久久久久久久免费| 欧美激情一区二区三区四区| 亚洲va韩国va欧美va精品| 国产黑丝在线一区二区三区| 欧美日韩一区二区三区视频 | 麻豆久久一区二区| 久久网站热最新地址| 成人18视频在线播放| 亚洲精品精品亚洲| 亚洲一区二区三区小说| 韩国在线一区二区| 中文字幕国产精品一区二区| 一本色道a无线码一区v| 亚洲综合无码一区二区| 一本大道久久a久久精二百| 国产一区在线观看视频| 精品一区二区三区视频在线观看| 亚洲一区二区综合| 夜夜爽夜夜爽精品视频| 国产精品日韩成人| 国产亚洲一区二区三区四区| 日韩欧美色综合| 欧美一区二区久久| 日韩精品在线一区二区| 欧美一区二区三区免费观看视频| 欧美日韩精品电影| 欧美三级视频在线| 欧美日韩免费一区二区三区视频| 91精品国产91久久久久久最新毛片 | 免费欧美高清视频| 日本最新不卡在线| 精品一区二区三区的国产在线播放| 日本不卡视频一二三区| 午夜精品久久久久久久久久久| 欧美国产一区二区| 成人欧美一区二区三区1314| 中文字幕综合网| 蜜桃视频一区二区三区| 成人性生交大片免费看在线播放 | 精品一区免费av| 蜜桃av噜噜一区二区三区小说| 精品一区二区三区视频| 成人午夜免费电影| 亚洲欧美日韩精品久久久久| 欧美一区二区免费观在线| 日韩精品亚洲专区| 欧美日韩国产一级片| 波多野结衣亚洲一区| 久久99久久久久| 亚洲成人自拍网| 国产精品久久国产精麻豆99网站| 欧美日韩免费高清一区色橹橹| 国产成人av一区二区三区在线| 日韩精品免费专区| 亚洲制服丝袜在线| 最新欧美精品一区二区三区| 久久综合久久鬼色中文字| 91精品一区二区三区在线观看| 日韩综合在线视频| 色婷婷综合中文久久一本| 26uuu久久天堂性欧美| 亚洲成人激情综合网| 成人黄色大片在线观看| 欧美成人官网二区| 偷拍亚洲欧洲综合| 另类成人小视频在线| 欧美情侣在线播放| 亚洲日本va午夜在线影院| 高清免费成人av| 欧美xxx久久| 午夜精品一区二区三区电影天堂 | 欧美成人国产一区二区| 一区二区三区日韩欧美精品 | 亚洲一区二区三区不卡国产欧美 | 免费国产亚洲视频| 欧美性猛交xxxx乱大交退制版 |