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

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

?? flash.c

?? 周立功的文件系統(tǒng)
?? C
字號(hào):
/****************************************Copyright (c)**************************************************
**                               廣州周立功單片機(jī)發(fā)展有限公司
**                                     研    究    所
**                                        ARM開(kāi)發(fā)組
**
**                                 http://www.zlgmcu.com
**
**--------------文件信息--------------------------------------------------------------------------------
**文   件   名: flash.c
**創(chuàng)   建   人: 陳明計(jì)
**最后修改日期:  2003年9月3日
**描        述: FAT文件系統(tǒng)在PC上編譯的軟盤(pán)驅(qū)動(dòng)程序(底層驅(qū)動(dòng))
**              
**--------------歷史版本信息----------------------------------------------------------------------------
** 創(chuàng)建人: 陳明計(jì)
** 版  本: V1.0
** 日 期: 2003年9月3日
** 描 述: 原始版本
**
**--------------當(dāng)前版本修訂------------------------------------------------------------------------------
** 修改人: 
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

#define IN_FLOPPY
#include "config.h"

/*********************************************************************************************************
** 函數(shù)名稱(chēng): GetAddr
** 功能描述: 轉(zhuǎn)換地址
** 輸 入: 無(wú)
** 輸 出: 無(wú)
** 全局變量: 無(wú)
** 調(diào)用模塊: 無(wú)
**
** 作 者: 陳明計(jì)
** 日 期: 2004年2月26日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        volatile uint16 *GetAddr(uint16 addr)
{
    uint32 temp;
    
    temp = 0x80000000;
    temp += (addr << 1);
    return (volatile uint16 *)temp;
}
/*********************************************************************************************************
** 函數(shù)名稱(chēng): WordProgram
** 功能描述: 字編程
** 輸 入: 無(wú)
** 輸 出: TRUE:成功
**         FALSE:失敗
** 全局變量: 無(wú)
** 調(diào)用模塊: GetAddr
**
** 作 者: 陳明計(jì)
** 日 期: 2004年2月26日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint8 WordProgram(uint32 Addr, uint16 Data) 
{
    volatile uint16 *ip;
    uint16 temp1,temp2;

    ip = GetAddr(0x5555);
    ip[0] = 0xaaaa;
    ip = GetAddr(0x2aaa);
    ip[0] = 0x5555;
    ip = GetAddr(0x5555);
    ip[0] = 0xa0a0;
    
    ip = ((volatile uint16 *)(Addr));
    *ip = Data;
    while (1)
    {
        temp1 = *ip;
        temp2 = *ip;
        if (temp1 == temp2)
        {
            if (temp1 != Data)
            {
                return FALSE;
            }
            else
            {
                return TRUE;
            }
        }
    }
    return TRUE;
}

/*********************************************************************************************************
** 函數(shù)名稱(chēng): ChipErase
** 功能描述: 芯片擦除
** 輸 入: 無(wú)
** 輸 出: TRUE:成功
**         FALSE:失敗
** 全局變量: 無(wú)
** 調(diào)用模塊: GetAddr
**
** 作 者: 陳明計(jì)
** 日 期: 2004年2月26日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint8 ChipErase(void) 
{
    volatile uint16 *ip;
    uint16 temp1,temp2;

    ip = GetAddr(0x5555);
    ip[0] = 0xaaaa;
    ip = GetAddr(0x2aaa);
    ip[0] = 0x5555;
    ip = GetAddr(0x5555);
    ip[0] = 0x8080;
    ip = GetAddr(0x5555);
    ip[0] = 0xaaaa;
    ip = GetAddr(0x2aaa);
    ip[0] = 0x5555;
    ip = GetAddr(0x5555);
    ip[0] = 0x1010;

    while (1)
    {
        temp1 = *ip;
        temp2 = *ip;
        if (temp1 == temp2)
        {
            if (temp1 != 0xffff)
            {
                return FALSE;
            }
            else
            {
                return TRUE;
            }
        }
    }
    return TRUE;
}

/*********************************************************************************************************
** 函數(shù)名稱(chēng): SectorErase
** 功能描述: 扇區(qū)擦除擦除
** 輸 入: 無(wú)
** 輸 出: TRUE:成功
**         FALSE:失敗
** 全局變量: 無(wú)
** 調(diào)用模塊: GetAddr
**
** 作 者: 陳明計(jì)
** 日 期: 2004年2月26日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint8 SectorErase(uint32 Index) 
{
    volatile uint16 *ip;
    uint16 temp1,temp2;

    ip = GetAddr(0x5555);
    ip[0] = 0xaaaa;
    ip = GetAddr(0x2aaa);
    ip[0] = 0x5555;
    ip = GetAddr(0x5555);
    ip[0] = 0x8080;
    ip = GetAddr(0x5555);
    ip[0] = 0xaaaa;
    ip = GetAddr(0x2aaa);
    ip[0] = 0x5555;
    ip = GetAddr(Index << 11);
    ip[0] = 0x3030;

    while (1)
    {
        temp1 = *ip;
        temp2 = *ip;
        if (temp1 == temp2)
        {
            if (temp1 != 0xffff)
            {
                return FALSE;
            }
            else
            {
                return TRUE;
            }
        }
    }
    return TRUE;
}

/*********************************************************************************************************
** 函數(shù)名稱(chēng): FlashCammand
** 功能描述: 底層驅(qū)動(dòng)程序與上層的接口程序
**
** 輸 入: Cammand:DISK_INIT:驅(qū)動(dòng)程序初始化
**                 DISK_CLOSE:關(guān)閉驅(qū)動(dòng)器(移除驅(qū)動(dòng)程序)                 
**                 DISK_CREATE_BOOT_SECTOR:重建引導(dǎo)扇區(qū)
**                 DISK_READ_SECTOR:讀扇區(qū)
**                 DISK_WRITE_SECTOR:寫(xiě)扇區(qū)
**        Parameter:剩余參數(shù)
** 輸 出: DISK_READ_OK:讀扇區(qū)完成
**        DISK_READ_NOT_OK:讀扇區(qū)失敗
**        DISK_WRITE_OK:寫(xiě)扇區(qū)完成
**        DISK_WRITE_NOT_OK:寫(xiě)扇區(qū)失敗
**        DISK_INIT_OK:初始化完成
**        DISK_INIT_NOT_OK:初始化失敗
**        BAD_DISK_COMMAND:無(wú)效的命令
** 全局變量: 無(wú)
** 調(diào)用模塊: 無(wú)
**
** 作 者: 陳明計(jì)
** 日 期: 2003年9月3日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint16 FlashCammand(uint8 Cammand, void *Parameter)
{
    uint16 rt;
    Disk_RW_Parameter * Dp;
    Disk_Info *DiskInfo;
    uint16 *ip1, *ip2;
    uint16 i;
    uint32 temp;
    
    Dp = (Disk_RW_Parameter *)Parameter;

    switch (Cammand)
    {
        case DISK_INIT:
            rt = DISK_INIT_NOT_OK;
            DiskInfo = GetEmptyDiskInfoAddr();
            if (DiskInfo != NULL)
            {
                DiskInfo->DiakCommand = FlashCammand;
                rt = DISK_INIT_OK;
            }
            break;
        case DISK_CLOSE:
            rt = RETURN_OK;
            break;
        case DISK_READ_SECTOR:
            rt = DISK_READ_OK;
            ip2 = (uint16 *)Dp->Buf;
            temp = Dp->SectorIndex << 11;
            for (i = 0; i < (1 << 11); i++)
            {
                ip1 = (uint16 *)GetAddr(temp);
                *ip2++ = *ip1;
                temp++;
            }
            break;
        case DISK_WRITE_SECTOR:
            rt = DISK_WRITE_OK;
            ip2 = (uint16 *)Dp->Buf;
            temp = Dp->SectorIndex << 11;
            for (i = 0; i < (1 << 11); i++)
            {
                ip1 = (uint16 *)GetAddr(temp);
                if (*ip2++ != *ip1)
                {
                    break;
                }
                temp++;
            }
            ip2 = (uint16 *)Dp->Buf;
            temp = Dp->SectorIndex << 11;
            if (i < (1 << 11))
            {
                
                for (i = 0; i < (1 << 11); i++)
                {
                    ip1 = (uint16 *)GetAddr(temp);
                    if (*ip1 != 0xffff)
                    {
                        break;
                    }
                }
                if (i < (1 << 11))
                {
                    SectorErase(Dp->SectorIndex);
                }
                for (i = 0; i < (1 << 11); i++)
                {
                    WordProgram(temp, *ip2++);
                    temp++;
                }
            }
            break;
        default:
            rt = BAD_DISK_COMMAND;
            break;
    }
    return rt;
}
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲1区2区3区4区| 欧美一区二区在线观看| 欧美性xxxxxxxx| 欧美一卡在线观看| 欧美国产日韩在线观看| 亚洲国产精品自拍| 国模套图日韩精品一区二区| 成人午夜av影视| 欧美日韩一区精品| 久久久亚洲国产美女国产盗摄 | 日韩精品久久久久久| 国产专区综合网| 日本高清视频一区二区| 色婷婷av一区二区三区之一色屋| 久久久久久久久久久久久久久99| 成人免费在线观看入口| 日韩高清国产一区在线| 成人激情免费电影网址| 日韩一区二区三区电影| 综合色天天鬼久久鬼色| 精品一区二区在线观看| 日本道在线观看一区二区| 亚洲精品一区二区三区香蕉 | 91色九色蝌蚪| 日韩美女在线视频| 亚洲精品日产精品乱码不卡| 国产一区二区网址| 精品污污网站免费看| 国产欧美精品国产国产专区| 石原莉奈在线亚洲二区| 99久久国产免费看| 久久久99精品久久| 日韩综合小视频| 一本久道久久综合中文字幕| 久久精品亚洲麻豆av一区二区| 亚洲一区二区高清| 国产成人av一区二区三区在线| 欧美日韩精品专区| 亚洲丝袜制服诱惑| 丁香天五香天堂综合| 日韩一级黄色片| 亚洲综合久久久| 99re这里只有精品首页| 久久久国产午夜精品| 奇米精品一区二区三区四区 | 亚洲国产精品尤物yw在线观看| 成人av中文字幕| 久久久精品综合| 九九精品视频在线看| 91精品综合久久久久久| 亚洲一区在线观看免费观看电影高清| 99久久精品久久久久久清纯| 日本一区二区免费在线| 国产麻豆成人传媒免费观看| 欧美xxxxx牲另类人与| 香蕉久久一区二区不卡无毒影院| 在线观看视频欧美| 亚洲欧美欧美一区二区三区| 波多野结衣中文一区| 国产精品网站在线| 国产a区久久久| 久久一区二区视频| 国产一区二区毛片| 久久青草国产手机看片福利盒子| 久久99国产精品免费| 91精品国产91久久综合桃花| 五月婷婷激情综合| 9191国产精品| 蜜臀99久久精品久久久久久软件| 欧美一区二区福利视频| 麻豆精品一区二区av白丝在线| 日韩视频在线永久播放| 免费亚洲电影在线| 日韩免费观看高清完整版| 麻豆免费精品视频| 久久综合久久综合久久综合| 国产一区二区三区国产| 欧美激情一区二区三区不卡 | 亚洲精品乱码久久久久久| 91片黄在线观看| 亚洲一区二区三区精品在线| 精品视频在线视频| 日韩av电影免费观看高清完整版 | 国产成人精品免费| 亚洲欧洲av色图| 色婷婷精品久久二区二区蜜臀av | 日韩一区二区免费高清| 国产真实乱对白精彩久久| 久久蜜桃av一区二区天堂| 大白屁股一区二区视频| 亚洲免费观看高清完整| 在线影院国内精品| 青青草成人在线观看| 欧美精品一区二区三区久久久| 国产成人在线视频免费播放| 国产精品视频线看| 欧美在线看片a免费观看| 蜜芽一区二区三区| 国产午夜精品一区二区三区四区| av激情亚洲男人天堂| 亚洲激情网站免费观看| 欧美一区二区三区四区五区 | 中文字幕在线免费不卡| 精品视频一区二区不卡| 日本中文字幕一区二区有限公司| 久久综合狠狠综合| 色欧美乱欧美15图片| 免费不卡在线观看| 国产精品国产精品国产专区不蜜| 欧美色图天堂网| 国产一区二区0| 亚洲精品欧美专区| 精品国产免费久久| 日本久久一区二区| 精品一区二区在线观看| 亚洲欧洲精品成人久久奇米网| 欧美日韩激情一区二区三区| 韩国三级电影一区二区| 亚洲视频一区在线| 日韩精品一区二区三区在线播放| 成人毛片视频在线观看| 丝袜a∨在线一区二区三区不卡| 久久久久久一二三区| 欧美亚洲国产怡红院影院| 狠狠狠色丁香婷婷综合激情| 亚洲美腿欧美偷拍| 久久亚区不卡日本| 欧美日韩高清一区二区三区| 成人毛片视频在线观看| 蜜臀av性久久久久蜜臀aⅴ| 国产精品久久午夜| 欧美成人性福生活免费看| 在线观看亚洲精品| 国产成人精品一区二区三区四区| 亚洲成人免费影院| 国产精品每日更新| 欧美刺激午夜性久久久久久久| 色婷婷综合久久久久中文| 国产精品羞羞答答xxdd| 亚洲va韩国va欧美va精品| 国产精品美女一区二区在线观看| 91麻豆精品国产无毒不卡在线观看| yourporn久久国产精品| 久久99久久久欧美国产| 亚洲国产欧美日韩另类综合 | 在线中文字幕不卡| 国产成人在线视频免费播放| 一区二区欧美国产| 欧美激情一区三区| 精品国产精品一区二区夜夜嗨| 欧美亚日韩国产aⅴ精品中极品| 国产成人综合在线观看| 麻豆91免费看| 国产91在线观看| 制服丝袜亚洲色图| 91在线观看成人| 国产成人99久久亚洲综合精品| 日韩精品一二区| 亚洲最大的成人av| 国产精品久久久久久久久免费相片 | 久久影院午夜片一区| 欧美精品在线观看一区二区| 91亚洲精品一区二区乱码| 国产福利一区二区| 韩国精品在线观看| 毛片基地黄久久久久久天堂| 日韩av在线发布| 天天av天天翘天天综合网色鬼国产| 亚洲日本丝袜连裤袜办公室| 日本一区二区久久| 国产农村妇女毛片精品久久麻豆| 久久综合九色综合欧美就去吻| 日韩欧美精品三级| 日韩一二三四区| 日韩一区二区免费电影| 日韩视频一区二区三区在线播放| 欧美日韩成人综合| 欧美日韩视频在线第一区| 在线观看av一区| 欧美日韩一区不卡| 欧美人动与zoxxxx乱| 在线观看91精品国产麻豆| 欧美日韩黄色一区二区| 制服丝袜在线91| 日韩亚洲国产中文字幕欧美| 日韩欧美一区二区三区在线| 欧美电影免费提供在线观看| 日韩视频一区在线观看| 精品成人私密视频| 久久精品亚洲一区二区三区浴池| 国产欧美在线观看一区| 欧美国产精品一区| 亚洲天堂网中文字| 亚洲精品乱码久久久久久久久| 一区二区三区日韩在线观看| 亚洲妇熟xx妇色黄| 日本亚洲电影天堂| 麻豆国产欧美一区二区三区| 国产高清视频一区| 99在线精品免费|