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

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

?? flash_16x4_ads.c

?? atmel公司arm芯片at91r40008的開發實例 此程序為控制幾個led燈閃爍
?? C
?? 第 1 頁 / 共 2 頁
字號:
            printf ( "Timeout while erasing\n" ) ;
        }
        //* Endif
    }
    //* EndWhile

    //* Return True
    return ( TRUE ) ;
}
//* End

//*--------------------------------------------------------------------------------------
//* Function Name       : write_flash
//* Object              : write a word in flash
//*
//* Input Parameters    : flash_word *base_addr : Flash base address
//*                       flash_word *load_addr : Flash data address
//*                       flash_word data       : Data value
//*
//* Output Parameters   : TRUE if data has been written correctly, else FALSE
//*
//* Functions called    : wait_flash_ready
//*--------------------------------------------------------------------------------------
int write_flash ( flash_word *base_addr,
                  flash_word *load_addr,
                  flash_word data )
{
    flash_word  read_data ;

    //* Enter Programming code sequence
    *(base_addr + FLASH_SEQ_ADD1) = FLASH_CODE1 ;
    *(base_addr + FLASH_SEQ_ADD2) = FLASH_CODE2 ;
    *(base_addr + FLASH_SEQ_ADD1) = WRITE_CODE ;
    *load_addr = data ;

    //* Wait for Flash ready after erasing, if timeout
    if ( wait_flash_ready ( load_addr, data ) != TRUE )
    {
        //* Display Error and Exit
        printf ( "Timeout while programming\n" ) ;
        return ( FALSE ) ;
    }
    //* Endif

    //* If Data written does not equal data
    if (( read_data = *load_addr ) != data )
    {
        //* Display Error and return False
        printf ( "Program Error\n" ) ;
        printf ( "Address 0x%08x / Data 0x%04x / 0x%04x \n",
                 (int)load_addr, data, read_data ) ;
        //* Return False
        return ( FALSE );
    }
    //* Endif

    //* Return False
    return ( TRUE ) ;
}
//* End

//*--------------------------------------------------------------------------------------
//* Function Name       : download_file_to_flash
//* Object              : Read data from file and write it into flash memory
//* Input Parameters    : <addr_base> base flash address
//*                       <addr_load> address to load
//*
//* Output Parameters   : TRUE or FALSE
//*--------------------------------------------------------------------------------------
int download_file_to_flash ( FILE *image,
                             const FlashDef *flash,
                             flash_word *addr_base,
                             flash_word *addr_load )
//* Begin
{
    unsigned short  data ;
    flash_word  *addr_prg_sector = addr_base ;
    int         block = 0 ;
    int         nb_sector = 0 ;
    int         sector_id = 0 ;
    int         first = TRUE ;
    int         sector_found = FALSE ;
    int         change_sector = FALSE ;
    int         erase = FALSE ;

    //* For each word read from the file
    while ( fread ( &data, 1, 2, image ) == 2 )
    {
        //* 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 Identifier
                sector_id ++ ;
                //* 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 )
                    {
                        //* Display Error and Return False
                        printf ( "Error : Address not found in the Flash Address Field\n" ) ;
                        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
            {
                //* Dispaly First sector to program
                printf ( "First Sector to program:\t\t%d \n", sector_id ) ;

                //* If the first address to program is within a sector
                if ( addr_load > addr_prg_sector )
                {
                    //* Display Warning : first address within a sector
                    printf ( "The first address to program is within a sector!!\n" ) ;
                    printf ( "First Data of the sector will be lost !!!\n" ) ;
                    //* Flag to erase the sector
                    erase = TRUE ;
                }
                //* Else, if first address equals sector address
                else
                {
                    //* Force erasing
                    erase = TRUE ;
                }
                //* Endif
            }
            //* 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,
                                sector_id ) != TRUE )
            {
                //* Return False
                return ( FALSE ) ;
            }
            //* Endif
        }
        //* Endif

        //* If new sector or first sector
        if (( change_sector == TRUE ) || ( first == TRUE ))
        {
            //* Display Programmaing sector
            printf ( "Programming Sector %d\n", sector_id ) ;
        }
        //* Endif

        //* Write the value read in Flash, if error
        if ( 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

//*--------------------------------------------------------------------------------------
//* Function Name       : check_flash_from_file
//* Object              : Check the file downloaded in flash
//* Input Parameters    : <image> File
//*                       <flash> Flash descriptor
//*                       <addr_base> base flash address
//*                       <addr_load> address to load
//*
//* Output Parameters   : if data sector erase TRUE or FALSE
//*--------------------------------------------------------------------------------------
int check_flash_from_file ( FILE *image,
                            const FlashDef *flash,
                            flash_word *addr_base,
                            flash_word *addr_load )
//* Begin
{
    flash_word      *pt = addr_load ;
    unsigned short  data ;

    //* Display check in progress
    printf ( "Checking Flash...\n" ) ;

    //* Restart the input file
    fseek ( image, 0, SEEK_SET ) ;

    //* For each word read from the file
    while ( fread ( &data, 1, 2, image ) == 2 )
    {
        //* If data from file is different from data in flash
        if ( *pt++ != data )
        {
            //* Return False
            return ( FALSE ) ;
        }
        //* Endif
    }
    //* EndWhile

    //* Return True
    return ( TRUE ) ;
}
//* End


//*--------------------------------------------------------------------------------------
//* Function Name       : main
//* Object              : Get parameter
//* Input Parameters    : none
//* Output Parameters   : none
//*--------------------------------------------------------------------------------------
int main (  void  )
//* Begin
{
    flash_word      *base_addr ;
    flash_word      *load_addr ;
    FILE            *image ;
    const FlashDef  *flash ;
    char str[30];
    char name[256];

    char *name1  ;
	
	unsigned int       *load,i ;
	load =(unsigned int*) *((unsigned int*)0x40);
	name1=(char *) 0x44 ; 
	
    //* Display Flash Downloader Header
    printf ( "\n**** %s Flash Programming Utility ****\n", TARGET_ID ) ;

	printf("\n**** Load at address: 0x%08X ****\n",(int) load );
	/* Get load address */
	gets(str); 
	sscanf(str,"0x%x",&load);
	/* Affect Load Address */
	if ( load == 0) load =(unsigned int*) *((unsigned int*)0x40);
	load_addr = (flash_word*) load;

	printf("\n**** File to download: %s  **** \n",name1);
	/* Get File */
    gets(name);
	if (name[0]==0){
		for ( i=0; i < sizeof(name);i++)	
		{ 
	    	if( (name1[i]==0x20) | (name1[i]==0x0a) | (name1[i]==0x0d)) 
			name[i]=0;
	    	else
			name[i]=name1[i];
		};
    }
    else
    //* Display Flash Downloader Header
    printf ( "\n**** Flash Programming file %s at 0x%08X \n", name,(int) load_addr) ;

   
    //* If Error while opening the external Flash Image file
    if (( image = fopen ( name, "rb" )) == NULL )
    {
        //* Display Error then exit
        printf ( "Error - Cannot open file image \"%s\"\n", name ) ;
        return ( FALSE ) ;
    }
    //* Else
    else
    {
        //* Display input file name
        printf ( "Input file is  :   %s \n", name ) ;
    }

    /* Get load address */
    sscanf ( str, "0x%x", &load_addr) ;
    //* Display Load Address
    printf ( "Load address is:   %x \n", (int)load_addr ) ;

    //* If FLASH Device is not recognised
    if (( flash = flash_identify ( load_addr )) == (const FlashDef *)0 )
    {
        //* Display Error and exit
        printf ( "Error - The Flash device is not recognised\n" ) ;
        return ( FALSE );
    }

    //* Initialize Flash Base Address
    base_addr = (flash_word *) ((int)load_addr & ~(flash->flash_mask)) ;
    //* Display Flash Base Address
    printf ( "Base address is:   %x \n", (int)base_addr ) ;

    //* Init PIO MCKO/P25 as busy ready input signal
    init_flash_ready () ;

    //* If File Download into flash is not OK
    if ( download_file_to_flash ( image, flash, base_addr, load_addr ) != TRUE )
    {
        //* Display Error and exit
        printf ( "Error while programming Flash\n" ) ;
        return ( FALSE ) ;
    }

    //* If programmed flash is not checked
    if ( check_flash_from_file ( image, flash, base_addr, load_addr ) != TRUE )
    {
        //* Display Error and exit
        printf ( "Flash not checked after programming\n" ) ;
        return ( FALSE ) ;
    }

    /* Close the external file and exit the program */
    fclose ( image ) ;

    //* Display Flash written and exit
    printf ( "Flash written and checked\n" ) ;
    return ( TRUE ) ;
}
//* End

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品久久久久影视| 99久久精品免费观看| 国产午夜精品福利| 成人国产亚洲欧美成人综合网| 中文字幕免费不卡在线| 91色porny在线视频| 亚洲777理论| 日韩一区二区高清| 黄网站免费久久| 国产精品每日更新| 欧美性一级生活| 日本怡春院一区二区| 久久精品视频免费| 91在线高清观看| 日韩电影在线观看一区| 精品国产91久久久久久久妲己| 国产成人免费视频精品含羞草妖精| 国产精品福利在线播放| 欧美日韩成人一区| 久久国产福利国产秒拍| 国产精品你懂的| 欧美三级中文字幕在线观看| 麻豆精品视频在线观看| 中文字幕精品—区二区四季| 91成人在线免费观看| 麻豆国产精品777777在线| 欧美国产欧美亚州国产日韩mv天天看完整| 91污在线观看| 蜜臀精品一区二区三区在线观看 | 免费av网站大全久久| 国产色产综合产在线视频| 色视频一区二区| 久久国产精品72免费观看| 亚洲欧洲日产国产综合网| 欧美人伦禁忌dvd放荡欲情| 国产精品123区| 亚洲午夜在线视频| 久久久99精品久久| 日本韩国精品一区二区在线观看| 久久国产日韩欧美精品| 亚洲视频免费观看| 精品国产成人在线影院 | 欧洲亚洲精品在线| 韩国中文字幕2020精品| 亚洲激情六月丁香| 26uuu成人网一区二区三区| 91黄色免费看| 国产精品一区不卡| 无吗不卡中文字幕| 国产精品天干天干在观线| 91精品国产全国免费观看| 91在线国产福利| 精品一区二区三区视频在线观看 | 制服丝袜日韩国产| 成人美女视频在线观看18| 亚洲制服丝袜在线| 中文无字幕一区二区三区| 91精品国产欧美一区二区成人| 91免费在线视频观看| 国产九色sp调教91| 首页国产欧美日韩丝袜| 综合电影一区二区三区| 久久婷婷综合激情| 91麻豆精品国产自产在线| 91视频国产观看| 国产精品18久久久久久久久久久久| 五月综合激情网| 亚洲欧美另类图片小说| 国产欧美日韩亚州综合 | 狠狠色狠狠色综合| 亚洲va国产天堂va久久en| 17c精品麻豆一区二区免费| 精品精品国产高清a毛片牛牛| 欧美视频你懂的| 99精品视频在线免费观看| 国产一区二区三区黄视频 | 中文字幕亚洲综合久久菠萝蜜| 久久亚洲精品国产精品紫薇| 欧美二区三区91| 欧美性受极品xxxx喷水| 97se亚洲国产综合自在线| 成人一区二区视频| 国产伦精品一区二区三区免费迷 | 亚洲精品欧美综合四区| 中文文精品字幕一区二区| 久久久久久久久久电影| 精品免费视频.| 日韩欧美一区二区免费| 7777精品伊人久久久大香线蕉超级流畅| 色偷偷88欧美精品久久久| 成人久久视频在线观看| 国产成人啪免费观看软件| 国产麻豆成人传媒免费观看| 国产在线不卡一区| 极品尤物av久久免费看| 精品一区二区三区视频在线观看| 免费观看日韩av| 久久精品国产一区二区| 男女男精品视频| 免费成人在线观看视频| 美日韩一区二区三区| 免费日本视频一区| 青青草97国产精品免费观看 | 亚洲主播在线播放| 亚洲一区二区在线观看视频| 亚洲综合区在线| 亚洲国产日韩在线一区模特| 亚洲韩国精品一区| 亚洲成av人片观看| 偷拍亚洲欧洲综合| 日本欧美一区二区在线观看| 蜜臀va亚洲va欧美va天堂| 免费在线观看成人| 精品一二线国产| 国产精品一区二区在线观看网站| 国产精品一区二区不卡| 成人av午夜电影| 一本色道综合亚洲| 欧美日韩久久久久久| 欧美精品在线视频| 日韩一卡二卡三卡| 久久久久久久久蜜桃| 中文字幕乱码亚洲精品一区| 亚洲三级理论片| 亚洲一区二区三区四区中文字幕 | 国产成人精品一区二区三区四区 | 99re在线视频这里只有精品| 在线观看av一区二区| 亚洲精品写真福利| 一区二区三区在线视频免费| 午夜精品福利在线| 极品少妇一区二区| 不卡区在线中文字幕| 91高清在线观看| 91精品国产欧美一区二区18| 精品国产精品网麻豆系列 | 亚洲色图都市小说| 无吗不卡中文字幕| 国产专区综合网| 91在线播放网址| 91精品国产欧美日韩| 久久久久88色偷偷免费| 亚洲三级小视频| 日本不卡不码高清免费观看| 国产成人在线观看| 在线欧美小视频| 日韩欧美中文字幕制服| 国产精品免费视频一区| 亚洲在线中文字幕| 韩国三级电影一区二区| 99久久精品免费看| 欧美一级生活片| 国产欧美一区二区精品婷婷 | 国内国产精品久久| 91在线观看一区二区| 欧美一级高清片| 国产精品国产三级国产| 日韩不卡免费视频| 成人精品在线视频观看| 精品视频在线看| 久久久电影一区二区三区| 亚洲一区二区三区在线| 国产酒店精品激情| 欧美日韩国产首页在线观看| 国产欧美视频一区二区| 天天色天天操综合| 成人污污视频在线观看| 欧美区视频在线观看| 国产精品免费免费| 男女男精品视频| 99vv1com这只有精品| 欧美成人精品福利| 一区二区三区在线视频免费| 国产真实乱偷精品视频免| 欧洲av在线精品| 久久久国产精品麻豆| 午夜精品在线看| 波多野结衣中文字幕一区| 91精品国产入口在线| 亚洲精品视频一区| 国产69精品久久久久777| 欧美日韩午夜在线| 国产精品免费aⅴ片在线观看| 奇米影视7777精品一区二区| 91麻豆免费视频| 久久婷婷一区二区三区| 日韩电影在线免费看| 一本色道综合亚洲| 国产欧美日韩卡一| 日韩激情视频网站| 色综合久久久久综合99| 国产日韩影视精品| 免费在线观看一区| 欧美三级中文字幕| 日韩伦理免费电影| 丰满白嫩尤物一区二区| 日韩精品最新网址| 五月激情综合色| 91成人国产精品| 日韩毛片视频在线看|