rwsec.c

来自「Atmega64单片机程序(完整工程)」· C语言 代码 · 共 63 行

C
63
字号
#define  IN_RWSEC 

#include "SYS_Config.h"  
#include "fat.h" 

Disk_cache DiskCache[MAX_DISK_CACHES];/* 磁盘cache */

/*********************************************************************************************************
** 函数名称: CacheInit
** 功能描述: 初始化磁盘cache
** 输   入: 无
** 输   出: 无
** 全局变量: DiskCache
** 调用模块: 无
********************************************************************************************************/
void CacheInit(void)
{
    INT16U i ;
    
    for(i=0;i<MAX_DISK_CACHES;i++)
    {
        DiskCache[i].Drive=EMPTY_DRIVE ;/* cache空闲 */
        DiskCache[i].Flag=0 ;           /* 扇区无需回写 */
        DiskCache[i].RW_ID=0 ;          /* 访问纪录 */
        DiskCache[i].RW_ID--;           /* 访问纪录 */
        DiskCache[i].SecIndex=0 ;       /* 缓冲的扇区号  */
    }
}


/*********************************************************************************************************
** 函数名称: CloseSec
** 功能描述: 解锁指定cache(允许切换出内存)
** 输   入: Drive:逻辑驱动器号
**           Index:缓冲的扇区号
** 输   出: 无
** 全局变量: DiskCache
** 调用模块: 无
********************************************************************************************************/
void CloseSec(INT8U Drive,INT32U Index)
{
    Drive=Drive ;
    Index=Index ;
}

/*********************************************************************************************************
** 函数名称: CacheWriteBack2
** 功能描述: 把指定扇区写回逻辑盘
** 输   入: Index:cache索引
** 输   出: 无
** 全局变量: DiskCache
** 调用模块: GetDiskInfo
********************************************************************************************************/
void CacheWriteBack2(INT16U Index)
{
    Disk_RW_Parameter Pa ;
    Disk_Info *Disk ;
    
    Disk=GetDiskInfo(DiskCache[Index].Drive);// 获取逻辑盘信息
    if(Disk!=NULL)
    if(Disk->DiskCommand!=NULL)
    {
        DiskCache[Index].Flag&=~CACHE_WRITED ;// 不再需要回写

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?