正在加载图片...
广州周立功单片机发展有限公司Tel:(020)38730916387309173873097638730977Fax:38730925 Buer,需写数的缓冲区地址 Sector,写入的扇区号 count,写入的扇区数 函数返回值TRUE:成功 FALSE:失败 调用模块 OSSemPend(等待信号量 ATA SelectDevice O,选择设备 ATA WaitOn Busy NDrqo,等待数据请求 ATA WriteData512BO写512字节数据 ATA WaitOn Busy NDrdy o,等待数据空闲 OSSemPosto,发送信号量 特殊说明每写入一个扇区值为512节字,写入的扇区数为1-256个,扇区数为0即为256 和注意要点个扇 范例∥从主设备0号扇区开始连续写入2个刷区的数据。 if(ATA Write Sector(0, Buffer, 0x00, 0x02F0) *错误处理程序 表8 ATA Identify Drive0函数 函数名称 ATA Identify Drive 所属文件IDEC 函数原型 uint& ATA Identify Drive(uint& Device, void"PTR) 功能描述获取ATA设备描述信息 编译开关无 函数参数 Device,选择操作的设备,0为主设备,1为从设备 PTR保存设备信息的缓冲区首址,。 函数返回值RUE:成功 FALSE:失败 调用模块 SSemPendo,等待信号量 ATA SelectDevice O,选择设备 ATA WaitOn Busy NDrqo等待数据请求 TA DriveAllInfo(,读取设备信息到缓冲区 ATA WaitOn Busy NDrdy o等待数据空闲 OSSemPosto,发送信号量 特殊说明PTR指向的缓冲区大于512节字 和注意要点 范例 if(ATA Identify Drive(Select Device, buffers)) # define driveinfo( PCF IDENTIFY DATA)buffer8)*宏定义结构指针*/ Send("型 f("柱面数:") SendhEXtoASC16(DRIVEINFO->NumberofCylinders) newline(∥换行 printf("每柱面磁头数:") SendheXtoASC16(DRIVEINFO->NumberOfHead newline(O)∥换行 printf("每磁道扇区数:") SendheXto ASC16(DRIVEINFO->Sectors Per Track) eO,∥换行 else{/出错处理*/}广州周立功单片机发展有限公司 Tel: (020) 38730916 38730917 38730976 38730977 Fax: 38730925 Buffer,需写数的缓冲区地址 Sector,写入的扇区号 count, 写入的扇区数 函数返回值 TRUE:成功 FALSE:失败 调用模块 OSSemPend(),等待信号量 ATA_SelectDevice (),选择设备 ATA_WaitOnBusyNDrq(),等待数据请求 ATA_WriteData512B(),写 512 字节数据 ATA_WaitOnBusyNDrdy (),等待数据空闲 OSSemPost(),发送信号量 特殊说明 和注意要点 每写入一个扇区值为 512 节字,写入的扇区数为 1~256 个,扇区数为 0 即为 256 个扇区。 范 例 // 从主设备 0 号扇区开始连续写入 2 个扇区的数据。 if(ATA_WriteSector(0,Buffer,0x00,0x02)==0) { /* 错误处理程序 */ } 表 8 ATA_IdentifyDrive()函数 函数名称 ATA_IdentifyDrive 所属文件 IDE.C 函数原型 uint8 ATA_IdentifyDrive(uint8 Device,void *PTR) 功能描述 获取 ATA 设备描述信息。 编译开关 无 函数参数 Device,选择操作的设备,0 为主设备,1 为从设备 PTR,保存设备信息的缓冲区首址,。 函数返回值 TRUE:成功 FALSE:失败 调用模块 OSSemPend(),等待信号量 ATA_SelectDevice (),选择设备 ATA_WaitOnBusyNDrq(),等待数据请求 ATA_DriveAllInfo (),读取设备信息到缓冲区 ATA_WaitOnBusyNDrdy (),等待数据空闲 OSSemPost(),发送信号量 特殊说明 和注意要点 PTR 指向的缓冲区大于 512 节字。 范 例 if(ATA_IdentifyDrive(SelectDevice,buffer8)) { #define DRIVEINFO ((PCF_IDENTIFY_DATA)buffer8) /*宏定义结构指针*/ Send("型 号:"); for(i=0;i<20;i++) { printf ("柱 面 数:"); SendHEXtoASC16(DRIVEINFO->NumberOfCylinders); newline();// 换行 printf ("每柱面磁头数:"); SendHEXtoASC16(DRIVEINFO->NumberOfHeads); newline();// 换行 printf ("每磁道扇区数:"); SendHEXtoASC16(DRIVEINFO->SectorsPerTrack); newline();// 换行 } else { /*出错处理*/ } - 6 -
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有