已阅读5页,还剩64页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MAINC/STM3232寸TFT液晶屏字符和汉字显示程序/INCLUDE“STM32F10X_LIBH“INCLUDE“LCD_DRIVERH“INCLUDE“FATH“INCLUDE“MMCH“STRUCTFAT32_INIT_ARGINIT_ARG_SD/初始化参数结构体实体STRUCTFAT32_INIT_ARGPARGSTRUCTFILEINFOSTRUCTFILEINFO/文件信息结构体实体UCHARFILE_BUF150/文件数据缓冲区,读取到的文件数据放在其中UCHARDEV_NO0/设备号,SDCARD的SD卡设备号的宏定义,根据设备号,ZNFAT会将底层存储设备驱动连接到相应的存储设备驱动/动态的切换设备号,就可以实现在各种存储设备之间进行切换,这也是ZNFAT实现多设备的重要手段。比如,我/可以将SD卡上的文件拷贝到CF卡或U盘上,这就是多设备的最典型应用DEFINECOLORR,G,BUINTR323/R红色分量031G绿色分量063B蓝色分量031INCLUDE“LCDC“/变量定义/GPIO_INITTYPEDEFGPIO_INITSTRUCTUREERRORSTATUSHSESTARTUPSTATUSUNSIGNEDCHARCSD_DATA16UNSIGNEDCHARCID_DATA16UNSIGNEDCHARBYUNSIGNEDINTC_SIZE,C_SIZE_MULT,READ_BL_LENUNSIGNEDLONGDRIVE_SIZEUNSIGNEDLONGSIZE_MB/声明函数/VOIDRCC_CONFIGURATIONVOIDVOIDNVIC_CONFIGURATIONVOIDVOIDDELAYVU32NCOUNT/主函数/INTMAINVOIDUCHARITEMRCC_CONFIGURATION/系统时钟配置函数NVIC_CONFIGURATION/NVIC配置函数/启动GPIO模块时钟RCC_APB2PERIPHCLOCKCMDRCC_APB2PERIPH_GPIOA|RCC_APB2PERIPH_GPIOB|RCC_APB2PERIPH_AFIO,ENABLE/把调试设置普通IO口GPIO_PINREMAPCONFIGGPIO_REMAP_SWJ_DISABLE,ENABLEGPIO_INITSTRUCTUREGPIO_PINGPIO_PIN_ALL/所有GPIO为同一类型端口GPIO_INITSTRUCTUREGPIO_MODEGPIO_MODE_OUT_PP/推挽输出GPIO_INITSTRUCTUREGPIO_SPEEDGPIO_SPEED_50MHZ/输出的最大频率为50HZGPIO_INITGPIOA,/初始化GPIOA端口GPIO_INITGPIOB,/初始化GPIOB端口GPIO_WRITEGPIOA,0XFFFF/将GPIOA16个端口全部置为高电平GPIO_WRITEGPIOB,0XFFFF/将GPIOB16个端口全部置为高电平GPIO_INITSTRUCTUREGPIO_PINGPIO_PIN_15/所有GPIO为同一类型端口GPIO_INITSTRUCTUREGPIO_MODEGPIO_MODE_OUT_ODGPIO_INITSTRUCTUREGPIO_SPEEDGPIO_SPEED_50MHZ/输出的最大频率为50HZGPIO_INITGPIOA,/初始化GPIOA端口LCD_INITLCD_CLEAR2/这句是显示背景颜色。T_CS1/SD卡初始化MMC_RESETMMC_INITIFINIT_FLAG0LCD_SHOWSTRING20,5,COLORS0,COLORS7,“SDSUCCESS“ELSELCD_SHOWSTRING20,5,COLORS0,COLORS7,“SDFAILURE“PARG/PARG是ZNFAT的“初始参数结构指针”,它所指向的结构体中记录了存储器及其文件系统的重要参数信息/在切换存储设备时,不光要更改设备号,还要将PARG指向相应存储设备的“初始参数结构”DEV_NOSDCARD/设备号为SDCARD,ZNFAT中将其宏定义为0FAT32_INIT/文件系统初始化,使用ZNFAT前必须进行初始化,初始化过程中将所使用的存储设备的文件系统的一些重要参数/记录到了PARG所指向的结构中,以备后面使用ITEM0WHILE1UINT8RRERREFAT32_OPEN_FILEIFRRE0/打开成功,则显示图像DISPLAY_PICITEMELSEITEM0/配置RCC/VOIDRCC_CONFIGURATIONVOID/复位RCC外部设备寄存器到默认值RCC_DEINIT/打开外部高速晶振RCC_HSECONFIGRCC_HSE_ON/等待外部高速时钟准备好HSESTARTUPSTATUSRCC_WAITFORHSESTARTUPIFHSESTARTUPSTATUSSUCCESS/外部高速时钟已经准别好/开启FLASH的预取功能FLASH_PREFETCHBUFFERCMDFLASH_PREFETCHBUFFER_ENABLE/FLASH延迟2个周期FLASH_SETLATENCYFLASH_LATENCY_2/配置AHBHCLK时钟SYSCLKRCC_HCLKCONFIGRCC_SYSCLK_DIV1/配置APB2PCLK2钟AHB时钟RCC_PCLK2CONFIGRCC_HCLK_DIV1/配置APB1PCLK1钟AHB1/2时钟RCC_PCLK1CONFIGRCC_HCLK_DIV2/配置PLL时钟外部高速晶体时钟9PLLCLK8MHZ972MHZRCC_PLLCONFIGRCC_PLLSOURCE_HSE_DIV1,RCC_PLLMUL_9/使能PLL时钟RCC_PLLCMDENABLE/等待PLL时钟就绪WHILERCC_GETFLAGSTATUSRCC_FLAG_PLLRDYRESET/配置系统时钟PLL时钟RCC_SYSCLKCONFIGRCC_SYSCLKSOURCE_PLLCLK/检查PLL时钟是否作为系统时钟WHILERCC_GETSYSCLKSOURCE0X08/NVIC配置函数/VOIDNVIC_CONFIGURATIONVOIDIFDEFVECT_TAB_RAM/SETTHEVECTORTABLEBASELOCATIONAT0X20000000/NVIC_SETVECTORTABLENVIC_VECTTAB_RAM,0X0ELSE/VECT_TAB_FLASH/SETTHEVECTORTABLEBASELOCATIONAT0X08000000/NVIC_SETVECTORTABLENVIC_VECTTAB_FLASH,0X0ENDIF/延时函数/VOIDDELAYVU32NCOUNTFORNCOUNT0NCOUNTIFDEFDEBUG/FUNCTIONNAMEASSERT_FAILEDDESCRIPTIONREPORTSTHENAMEOFTHESOURCEFILEANDTHESOURCELINENUMBERWHERETHEASSERT_PARAMERRORHASOCCURREDINPUTFILEPOINTERTOTHESOURCEFILENAMELINEASSERT_PARAMERRORLINESOURCENUMBEROUTPUTNONERETURNNONE/VOIDASSERT_FAILEDU8FILE,U32LINE/USERCANADDHISOWNIMPLEMENTATIONTOREPORTTHEFILENAMEANDLINENUMBER,EXPRINTF“WRONGPARAMETERSVALUEFILESONLINEDRN“,FILE,LINE/INFINITELOOP/WHILE1ENDIFMMCCINCLUDE“MMCH“UNSIGNEDCHARINIT_FLAG/SETITTO1WHENINITISPROCESSINGUNSIGNEDCHARCARD_TYPEVOIDNOPVOIDUNSIGNEDCHARCMD0X40,0X00,0X00,0X00,0X00,0X95/CMD0/延时子函数/VOIDDELAYUNSIGNEDINTTIMEWHILETIME/US延时子程序434US/VOIDDELAYNOPNOPNOPNOPNOP/延时程序/VOIDNOPVU16IFORI0ITRY_TIMERETURNINIT_CMD0_ERROR/CMD0写入失败WHILETEMP0X01/SD_CS1GPIO_SETBITSGPIOA,SPI_CS/SD_SPI_WRITE0XFF/按照SD卡的操作时序在这里补8个时钟RETURN0/返回0,说明复位操作成功/功能描述初始化SD卡,使用CMD1隶属模块SD卡模块函数属性内部参数说明无返回说明调用成功,返回0X00,否则返回INIT_CMD1_ERRORSDH中有定义/UNSIGNEDCHARMMC_INITVOID/初始化,使用CMD1(1号命令)UCHARTIME,TEMPUCHARPCMD0X41,0X00,0X00,0X00,0X00,0XFF/SD_CS0GPIO_RESETBITSGPIOA,SPI_CSTIME0DOTEMPWRITE_COMMAND_MMCPCMDTIMEIFTIMETRY_TIMERETURNINIT_CMD1_ERROR/CMD1写入失败WHILETEMP0INIT_FLAG0/初始化完毕,将IS_INIT设置为0,为了提高以后的数据传输速度/IFDEFSTC_SPI/SPCTL0XDC/主机,忽略SS,CPU_CLK/4/ENDIF/SD_CS1/关装SD卡的片选GPIO_SETBITSGPIOA,SPI_CSWRITE_BYTE_MMC0XFF/按照SD卡的操作时序在这里补8个时钟RETURN0/返回0,说明初始化操作成功/ROUTINEFORREADINGDATAREGISTERSOFMMC/SDCARD/RETURN0IFNOERROR/UNSIGNEDCHARMMC_READ_BLOCKUCHARCMD,UCHARBUFFER,UINTBYTESUNSIGNEDINTIUNSIGNEDCHARTEMP/SENDCOMMANDCMDTOMMC/SDCARDI0DO/RETRY100TIMESTOSENDCOMMANDTEMPWRITE_COMMAND_MMCCMDIIFI100RETURNREAD_BLOCK_ERROR/BLOCKWRITEERRORWHILETEMP0/READSTARTBYTEFORMMMC/SDCARDFEH/STARTBYTEWHILEREAD_BYTE_MMC0XFE/WRITEBLOCKSNORMAL512BYTESTOMMC/SDCARDFORI0I24PCMD2ADDRPCMD3ADDR/SD_CS0/打开片选GPIO_RESETBITSGPIOA,SPI_CSTIME0DOTEMPWRITE_COMMAND_MMCPCMD/写入CMD17TIMEIFTIMETRY_TIMERETURNREAD_BLOCK_ERROR/读块失败WHILETEMP0WHILEREAD_BYTE_MMC0XFE/一直读,当读到0XFE时,说明后面的是512字节的数据了FORJ0JAELSESEC_DBR0RETURNSEC_DBR/功能描述获取分区的总容量隶属模块FAT文件系统模块函数属性外部,使用户使用参数说明无返回说明分区容量值,单位为字节注这里得到的总容量是FAT32分区的容量,一定小于实际的物理容量/UINT32FAT32_GET_TOTAL_SIZEUINT32TEMPFAT32_READSECTORPARGBPB_SECTOR_NO,FAT32_BUFFERFAT32_READSECTORPARGBPB_SECTOR_NO,FAT32_BUFFERTEMPLE2BESTRUCTFAT32_BPBFAT32_BUFFERBPB_TOTSEC32,4PARGBYTESPERSECTORRETURNTEMP/功能描述读取FSINFO获取最近的一个可用空闲簇隶属模块FAT文件系统模块函数属性内部参数说明无返回说明最近的一个可用空闲簇注FAT32中的FSINFO扇区绝对1扇区中记录了最近的一个可用空闲簇/UINT32SEARCH_LAST_USABLE_CLUSTERFAT32_READSECTOR1PARGBPB_SECTOR_NO,FAT32_BUFFERRETURNLE2BESTRUCTFSINFOFAT32_BUFFERLAST_CLUSTER,4/功能描述FAT32文件系统初始化隶属模块FAT文件系统模块函数属性外部,使用户使用参数说明FAT32_INIT_ARG类型的结构体指针,用于装载一些重要的参数信息,以备后面使用返回说明无注在使用ZNFAT前,这个函数是必须先被调用的,将很多参数信息装入到ARG指向的结构体中,比如扇区大小、根目录的位置、FAT表大小等等。这些参数绝大部分是来自于DBR的BPB中,因此此函数主要在作对DBR的参数解析/VOIDFAT32_INITSTRUCTFAT32_BPBBPBBPBSTRUCTFAT32_BPBFAT32_BUFFER/将数据缓冲区指针转为STRUCTFAT32_BPB型指针PARGDEV_NODEV_NO/装入设备号PARGBPB_SECTOR_NOFAT32_FIND_DBR/FAT32_FINDBPB可以返回BPB所在的扇区号PARGBPB_SECTOR_NOFAT32_FIND_DBR/FAT32_FINDBPB可以返回BPB所在的扇区号PARGTOTAL_SIZEFAT32_GET_TOTAL_SIZE/FAT32_GET_TOTAL_SIZE可以返回磁盘的总容量,单位是字节PARGTOTAL_SIZEFAT32_GET_TOTAL_SIZE/FAT32_GET_TOTAL_SIZE可以返回磁盘的总容量,单位是兆PARGFATSECTORSLE2BEBPBBPB_FATSZ32,4/装入FAT表占用的扇区数到FATSECTORS中PARGFIRSTDIRCLUSTLE2BEBPBBPB_ROOTCLUS,4/装入根目录簇号到FIRSTDIRCLUST中PARGBYTESPERSECTORLE2BEBPBBPB_BYTESPERSEC,2/装入每扇区字节数到BYTESPERSECTOR中PARGSECTORSPERCLUSTLE2BEBPBBPB_SECPERCLUS,1/装入每簇扇区数到SECTORSPERCLUST中PARGFIRSTFATSECTORLE2BEBPBBPB_RSVDSECCNT,2PARGBPB_SECTOR_NO/装入第一个FAT表扇区号到FIRSTFATSECTOR中PARGFIRSTDIRSECTORPARGFIRSTFATSECTORBPBBPB_NUMFATS0PARGFATSECTORS/装入第一个目录扇区到FIRSTDIRSECTOR中TEMP_LAST_CLUSTERSEARCH_LAST_USABLE_CLUSTER/功能描述获取剩余容量隶属模块FAT文件系统模块函数属性外部,使用户使用参数说明无返回说明剩余容量,单位字节注从FSINFO中读取空闲簇数,而从计算得到剩余的容量,单位字节/UINT32FAT32_GET_REMAIN_CAPFAT32_READSECTOR1PARGBPB_SECTOR_NO,FAT32_BUFFERIFSTRUCTFSINFOFAT32_BUFFERFREE_CLUSTER00XFFELSERETURNLE2BESTRUCTFSINFOFAT32_BUFFERFREE_CLUSTER,4PARGSECTORSPERCLUSTPARGBYTESPERSECTOR/功能描述更新FSINFO中的可用空闲簇的数量隶属模块FAT文件系统模块函数属性内部参数说明PLUSORMINUS可用空闲簇数加1或减1返回说明无注创建文件、追加数据、删除文件等操作都可能会使可用的空闲簇数变化要及时更新/VOIDFAT32_UPDATE_FSINFO_FREE_CLUUINT32PLUSORMINUSUINT32FREE_CLU0FAT32_READSECTOR1PARGBPB_SECTOR_NO,FAT32_BUFFERFREE_CLUFAT32_GET_REMAIN_CAP/PARGSECTORSPERCLUSTPARGBYTESPERSECTORIFPLUSORMINUSFREE_CLUELSEFREE_CLUSTRUCTFSINFOFAT32_BUFFERFREE_CLUSTER0UCHARSTRUCTFSINFOFAT32_BUFFERFREE_CLUSTER1UCHARSTRUCTFSINFOFAT32_BUFFERFREE_CLUSTER2UCHARSTRUCTFSINFOFAT32_BUFFERFREE_CLUSTER3UCHARFAT32_WRITESECTOR1PARGBPB_SECTOR_NO,FAT32_BUFFER/功能描述更新FSINFO中的下一个可用空闲簇的簇号隶属模块FAT文件系统模块函数属性内部参数说明LAST_CLU将要更新到FSINFO中的下一个可用空闲簇的簇号返回说明无注FSINFO中的下一个可用空闲簇号可以给文件系统一个参考,直接告诉文件系统下一个可用的空闲簇在什么地方/VOIDFAT32_UPDATE_FSINFO_LAST_CLUUINT32LAST_CLUFAT32_READSECTOR1PARGBPB_SECTOR_NO,FAT32_BUFFERSTRUCTFSINFOFAT32_BUFFERLAST_CLUSTER0UCHARSTRUCTFSINFOFAT32_BUFFERLAST_CLUSTER1UCHARSTRUCTFSINFOFAT32_BUFFERLAST_CLUSTER2UCHARSTRUCTFSINFOFAT32_BUFFERLAST_CLUSTER3UCHARFAT32_WRITESECTOR1PARGBPB_SECTOR_NO,FAT32_BUFFER/功能描述获得下一个簇的簇号隶属模块FAT文件系统模块函数属性内部参数说明LASTCLUSTER基准簇号返回说明LASTCLUTSTER的下一簇的簇号注获得下一簇的簇号,就是凭借FAT表中所记录的簇链关系来实现的/UINT32FAT32_GETNEXTCLUSTERUINT32LASTCLUSTERUINT32TEMPSTRUCTFAT32_FATPFATSTRUCTFAT32_FAT_ITEMPFAT_ITEMTEMPLASTCLUSTER/128PARGFIRSTFATSECTORFAT32_READSECTORTEMP,FAT32_BUFFERPFATSTRUCTFAT32_FATFAT32_BUFFERPFAT_ITEMRETURNLE2BEUINT8PFAT_ITEM,4/功能描述比较目录名隶属模块FAT文件系统模块函数属性内部参数说明A指向目录名1的指针B指向目录名2的指针返回说明如果两个目录名相同就返回1,否则为0/UINT8COMPARE_DIR_NAMEINT8A,INT8BUINT8IFORI0I0IIFDNAMEIBREAKFORJ0JFIRSTDIRCLUSTIFPATH10ELSEWHILEPATHI0IFPATHIFORCOUNTERSECTORSPERCLUSTISECFAT32_READSECTORISEC,FAT32_BUFFERFORIDIR0IDIRBYTESPERSECTORIDIRSIZEOFSTRUCTDIRENTRYPDIRSTRUCTDIRENTRYFAT32_BUFFERIDIRIFCOMPARE_DIR_NAMEPDIRDENAME,NAMEFLAG1CUR_CLUSTLE2BEPDIRDELOWCLUSTER,2LE2BEPDIRDEHIGHCLUST,265536IDIRPARGBYTESPERSECTORISECSEC_TEMPPARGSECTORSPERCLUSTOLD_CLUSTCUR_CLUSTWHILEFLAGIFFLAGTEMP_DIR_CLUSTEROLD_CLUSTSTRCPYTEMP_DIR_NAME,NAMEFLAG0RETURN0FLAG0ELSENAMECOUNTERL2UPATHIINAMECOUNTER0FLAG1TEMP_DIR_CLUSTERCUR_CLUSTSTRCPYTEMP_DIR_NAME,NAMERETURNCUR_CLUST/功能描述打开一个文件支持文件名通配,如ATXT或隶属模块FAT文件系统模块函数属性外部,使用户使用参数说明PFIFILEINFOSTRUCT类型的结构体指针,用来装载文件的参数信息比如文件的大小、文件的名称、文件的开始簇等等,以备后面使用FILEPATH文件的路径,支持任意层目录比如“DIR1DIR2DIR3TESTTXT“ITEM在文件名中有通配符或的情况下,实现与之匹配的文件并非一个,ITEM就是打开的文件的项数,比如符合通配条件的文件有6个,如果ITEM3,那么此函数就会打开这6个文件中按顺序排号为3的那个文件ITEM编号从0开始返回说明0成功1文件不存在2目录不存在注打开文件不成功有很多原因,比如文件不存在、文件的某一级目录不存在通配情况下满足条件的文件项数小于ITEM的值等等通常情况下,文件名中没有通配符,ITEM的值我们取0就可以了/UINT8FAT32_OPEN_FILESTRUCTFILEINFOSTRUCTPFI,INT8FILEPATH,UNSIGNEDLONGITEMUINT32CUR_CLUST,SEC_TEMP,ISEC,IFILE,IITEMUINT8FLAGSTRUCTDIRENTRYPFILECHARTEMP_FILE_NAME13IITEM0IFCUR_CLUSTFAT32_ENTER_DIRFILEPATHSTR2UPTEMP_DIR_NAMEDOSEC_TEMPSOCCUR_CLUSTFORISECSEC_TEMPISECSECTORSPERCLUSTISECFAT32_READSECTORISEC,FAT32_BUFFERFORIFILE0IFILEBYTESPERSECTORIFILESIZEOFSTRUCTDIRENTRYPFILESTRUCTDIRENTRYFAT32_BUFFERIFILEFAT32_TOFILENAMEPFILEDENAME,TEMP_FILE_NAME/显示文件名LCD_SHOWSTRING50,330,0X07FF,0XF81F,TEMP_FILE_NAME/显示本文件位置LCD_SHOWCHAR50,360,0X07FF,0XF81F,IFILE/1000|0X30LCD_SHOWCHAR58,360,0X07FF,0XF81F,IFILE1000/100|0X30LCD_SHOWCHAR66,360,0X07FF,0XF81F,IFILE100/10|0X30LCD_SHOWCHAR74,360,0X07FF,0XF81F,IFILE10|0X30IFFILENAMEMATCHTEMP_DIR_NAME,TEMP_FILE_NAMECUR_CLUSTLE2BEPFILEDELOWCLUSTER,2LE2BEPFILEDEHIGHCLUST,265536PFIFILESIZELE2BEPFILEDEFILESIZE,4STRCPYPFIFILENAME,TEMP_FILE_NAMEPFIFILESTARTCLUSTERLE2BEPFILEDELOWCLUSTER,2LE2BEPFILEDEHIGHCLUST,265536PFIFILECURCLUSTERPFIFILESTARTCLUSTERPFIFILECURSECTORSOCPFIFILESTARTCLUSTERPFIFILECURPOS0PFIFILECUROFFSET0PFIREC_SECISECPFINRECIFILEPFIFILEATTRPFILEDEATTRIBUTESSEC_TEMPLE2BEPFILEDECTIME,2PFIFILECREATETIMESECSEC_TEMPPFIFILECREATETIMEMINSEC_TEMP5PFIFILECREATETIMEHOURSEC_TEMP11SEC_TEMPLE2BEPFILEDECDATE,2PFIFILECREATEDATEDAYSEC_TEMPPFIFILECREATEDATEMONTHSEC_TEMP5PFIFILECREATEDATEYEARSEC_TEMP9SEC_TEMPLE2BEPFILEDEMTIME,2PFIFILEMTIMESECSEC_TEMPPFIFILEMTIMEMINSEC_TEMP5PFIFILEMTIMEHOURSEC_TEMP11SEC_TEMPLE2BEPFILEDEMDATE,2PFIFILEMDATEDAYSEC_TEMPPFIFILEMDATEMONTHSEC_TEMP5PFIFILEMDATEYEARSEC_TEMP9SEC_TEMPLE2BEPFILEDEADATE,2PFIFILEADATEDAYSEC_TEMPPFIFILEADATEMONTHSEC_TEMP5PFIFILEADATEYEARSEC_TEMP9IFILEPARGBYTESPERSECTORISECSEC_TEMPPARGSECTORSPERCLUSTELSEIITEMWHILEFLAGIFFLAGRETURN1RETURN0ELSERETURN2/功能描述文件定位隶属模块FAT文件系统模块函数属性外部,使用户使用参数说明PFIFILEINFOSTRUCT类型的结构体指针,用于装载文件参数信息,文件定位后,PFI所指向的结构体中的相关参数就被更新了,比如文件的当前扇区,文件当前扇区中的位置,文件的当前偏移量等等,以备后面使用OFFSET要定位的偏移量,如果OFFSET大于文件的大小,则定位到文件的末尾返回说明文件定位成功返回0,否则为1注此函数被下面的FAT32_READ_FILE调用,用于实现从指定位置读取数据,不建议用户直接调用些函数/UINT8FAT32_SEEK_FILESTRUCTFILEINFOSTRUCTPFI,UINT32OFFSETUINT32I,TEMPIFOFFSETFILESIZEIFOFFSETPFIFILECUROFFSETPFIFILECURPOSPARGBYTESPERSECTORRETURN1IFOFFSETFILECUROFFSETPFIFILECURCLUSTERPFIFILESTARTCLUSTERPFIFILECURSECTORSOCPFIFILECURCLUSTERPFIFILECURPOS0PFIFILECUROFFSET0IFOFFSETPFIFILECUROFFSETPARGBYTESPERSECTORPFIFILECURPOS/目标偏移量与文件当前偏移量所差的字节数不小于文件在当前扇区中的位置到扇区末尾的字节数PFIFILECUROFFSETPARGBYTESPERSECTORPFIFILECURPOSPFIFILECURPOS0IFPFIFILECURSECTORSOCPFIFILECURCLUSTERPARGSECTORSPERCLUST1PFIFILECURCLUSTERFAT32_GETNEXTCLUSTERPFIFILECURCLUSTERPFIFILECURSECTORSOCPFIFILECURCLUSTERELSEPFIFILECURSECTORELSEPFIFILECURPOSPFIFILECURPOSOFFSETPFIFILECUROFFSETPARGBYTESPERSECTORPFIFILECUROFFSETOFFSETRETURN1TEMPSOCPFIFILECURCLUSTERIFOFFSETPFIFILECUROFFSET/PARGBYTESPERSECTORPFIFILECURSECTORTEMPPARGSECTORSPERCLUST1PFIFILECUROFFSETPARGSECTORSPERCLUSTPFIFILECURSECTORSOCPFIFILECURCLUSTERPARGBYTESPERSECTORPFIFILECURCLUSTERFAT32_GETNEXTCLUSTERPFIFILECURCLUSTERPFIFILECURSECTORSOCPFIFILECURCLUSTERPFIFILECURPOS0ELSEPFIFILECURSECTOROFFSETPFIFILECUROFFSET/PARGBYTESPERSECTORPFIFILECURPOSOFFSETPFIFILECUROFFSETPARGBYTESPERSECTORPFIFILECUROFFSETOFFSETRETURN1TEMPOFFSETPFIFILECUROFFSET/PARGBYTESPERSECTORPARGSECTORSPERCLUSTFORI0IFILECURCLUSTERFAT32_GETNEXTCLUSTERPFIFILECURCLUSTERPFIFILECUROFFSETTEMPPARGBYTESPERSECTORPARGSECTORSPERCLUSTPFIFILECURSECTORSOCPFIFILECURCLUSTEROFFSETPFIFILECUROFFSET/PARGBYTESPERSECTORPFIFILECURPOSOFFSETPFIFILECUROFFSETPARGBYTESPERSECTORPFIFILECUROFFSETOFFSETELSERETURN1RETURN0/功能描述从文件的某一个位置处,读取一定长度的数据,放入数据缓冲区中隶属模块FAT文件系统模块函数属性外部,使用户使用参数说明PFIFILEINFOSTRUCT类型的结构体指针,用于装载文件参数信息,文件读取的过程中,此结构体中的相关参数会更新,比如文件的当前偏移量、文件的当前扇区,文件的当前簇等等OFFSET要定位的偏移量,要小于文件的大小LEN要读取的数据的长度,如果LENOFFSET大于文件的大小,则实际读取的数据量是从OFFSET开始到文件结束PBUF数据缓冲区返回说明读取到的实际的数据长度,如果读取失败,比如指定的偏移量大于了文件大小,则返回0注在读取一个文件的数据前,必须先将该文件用FAT32_OPEN_FILE打开/UINT32FAT32_READ_FILESTRUCTFILEINFOSTRUCTPFI,UINT32OFFSET,UINT32LEN,UINT8PBUFUINT32I,J,K,TEMPUINT32COUNTER0IFOFFSETFILESIZEIFOFFSETLENPFIFILESIZELENPFIFILESIZEOFFSETFAT32_SEEK_FILEPFI,OFFSETFAT32_READSECTORPFIFILECURSECTOR,FAT32_BUFFERFORIPFIFILECURPOSIBYTESPERSECTORIIFCOUNTERLENRETURNLENPBUFCOUNTERFAT32_BUFFERICOUNTERPFIFILECURPOSPFIFILECUROFFSETIFPFIFILECURSECTORSOCPFIFILECURCLUSTERPARGSECTORSPERCLUST1FORJPFIFILECURSECTOR1JFILECURCLUSTERPARGSECTORSPERCLUSTJFAT32_READSECTORJ,FAT32_BUFFERPFIFILECURSECTORJFORI0IBYTESPERSECTORIIFCOUNTERLENRETURNLENPBUFCOUNTERFAT32_BUFFERICOUNTERPFIFILECURPOSPFIFILECUROFFSETTEMPLENCOUNTER/PARGBYTESPERSECTORPARGSECTORSPERCLUSTFORK0KFILECURCLUSTERFAT32_GETNEXTCLUSTERPFIFILECURCLUSTERFORJSOCPFIFILECURCLUSTERJFILECURCLUSTERPARGSECTORSPERCLUSTJFAT32_READSECTORJ,FAT32_BUFFERPFIFILECURSECTORJFORI0IBYTESPERSECTORIIFCOUNTERLENRETURNLENPBUFCOUNTERFAT32_BUFFERICOUNTERPFIFILECUROFFSETPFIFILECURPOSPFIFILECURPOSPARGBYTESPERSECTORPFIFILECURCLUSTERFAT32_GETNEXTCLUSTERPFIFILECURCLUSTERTEMPSOCPFIFILECURCLUSTERLENCOUNTER/PARGBYTESPERSECTORPFIFILECURSECTORSOCPFIFILECURCLUSTERFORJSOCPFIFILECURCLUSTERJFILECURSECTORJFORI0IBYTESPERSECTORIIFCOUNTERLENRETURNLENPBUFCOUNTERFAT32_BUFFERICOUNTERPFIFILECURPOSPFIFILECURPOSPARGBYTESPERSECTORPFIFILECUROFFSETPFIFILECURSECTORJFAT32_READSECTORPFIFILECURSECTOR,FAT32_BUFFERTEMPLENCOUNTERFORI0ILENRETURNLENPBUFCOUNTERFAT32_BUFFERICOUNTERPFIFILECURPOSPFIFILECURPOSPARGBYTESPERSECTORPFIFILECUROFFSETELSELEN0RETURNLEN/功能描述文件关闭隶属模块FAT文件系统模块函数属性外部,使用户使用参数说明PFI指向当前打开的文件的文件信息结构返回说明0成功注无/UINT8FAT32_FILE_CLOSESTRUCTFILEINFOSTRUCTPFIUINT16I0FORI0ISIZEOFSTRUCTFILEINFOSTRUCTIUINT8PFII0RETURN0毕业设计(论文)管理规定及相关表格汇编目录本科生毕业设计(论文)管理规定1毕业论文(设计)工作实施细则(草案)2优秀毕业论文评选办法7毕业论文的写作与排版规范10毕业设计(论文)写作模板14毕业设计(论文)答辩提问记录表21毕业设计第周工作总结22毕业设计(论文)过程跟踪表23毕业设计(论文)课题申请表24毕业设计(论文)任务书25毕业设计(论文)开题报告26毕业设计工作中期检查27毕业设计工作中期检查28大学本科生毕业设计(论文)管理规定为提高本科生毕业设计(论文)质量,加强毕业生毕业设计管理工作,特制定如下规定1本科毕业设计工作从第七学期(四年级第一学期)考试周前,完成教师选题、师生见面及指导教师向学生下达任务书(见附表一)。毕业设计从第八学期开学正式开始,十六周内完成。2毕业设计开始时,教师必须填写毕业设计课题申请表、并由系汇总后交院毕业设计领导小组审核。(见附表)。3指导教师必须定期对学生辅导(每周至少两次),并将确定的周辅导时间上报教学办,教学办将定期和不定期进行检查。4指导教师自行组织学生的开题报告,并填写开题报告表(见附表二)5加强中期的监督与检查,第一次检查时间定在第五周,检查内容含学生资料阅读,方案论证情况。第二次检查定在第十周,形式为由指导教师组织,院毕业设计领导小组成员旁听,学生口头汇报。主要检查学生的阶段性结果。两次检查学生均应填写中期检查报告表格(见附表三、四),指导教师或系对检查情况写出书面评语。6学生需上交一篇与本专业有关不少于5000字的外文文章翻译,并将原文和译文用A4打印加自设计封皮一起装订成册。7论文答辩前,指导教师必须给出评语及评分,然后由各系主任指定其他评阅人对论文进行评阅及评分(请参考毕业论文书面成绩评分表规定的评分标准评分)。8论文答辩由各系组织,并成立答辩委员会对所有学生论文进行答辩。答辩必须给出答辩委员会意见及评分并填写相应表格。答辩委员会成员必须按评分表中各项指标标准进行评分,然后由各成员给出的分数计算出得分。9毕业设计(论文)最终成绩计算指导教师评分X30评阅人评分X30答辩委员会评分X40总分10毕业设计(论文)提交的文档及装订要求(1)毕业论文一份(包含封皮、目录、中英文摘要、内容及参考文献)(2)不少于5000汉字的科技翻译资料一份(并将原文和译文用A4打印加自设计封皮一起装订成册)(3)毕业论文简介(A4纸打印12页)(包含题目、专业、年级、姓名、指导教师、毕业论文所做的工作、解决的问题、创新之处等)(4)毕业设计任务书(加在毕业论文目录之前和毕业论文一起装订,)(5)开题报告(加在毕业论文目录之前和毕业论文一起装订,)(6)毕业设计工作中期检查表、注(4)(5)(6)加在毕业论文目录之前和毕业论文一起装订。11毕业设计(论文)随正式论文一律附交电子文档(光盘或软盘)。被推荐参加学校优秀毕业设计(论文)3评选的,还要另附(符合发表格式要求的)修改为5000字左右的电子文档。2005年12月修订大学毕业设计(论文)工作实施细则(试行)根据毕业设计(论文)工作暂行规定,为了进一步规范毕业设计(论文)工作的各个环节,结合我院实际情况,经院教学指导委员会讨论,院长办公联席会议通过,对我院毕业设计(论文)工作特制订以下实施细则。一、指导教师资格毕业设计(论文)的指导教师原则上应由各专业具有中级含中级以上专业技术职务的教师担任。也可以聘任具有相应职称、学术水平高的工程技术人员担任。指导教师名单由各系系主任核定,报分管教学的副院长批准后实施。二、课题的命题过程1命题的基本原则是(1)目标原则命题必须符合专业培养目标,具有一定的深度、广度与新颖性,能使学生得到比较全面的训练。(2)价值原则命题应具有一定的学术研究或应用开发价值,尽可能做到理论与实际相结合,体现学科的发展性与应用性。(3)能力原则命题的难度应考虑学生完成命题的条件与能力,因材施教。(4)兴趣原则应考虑学生对命题的兴趣与探索研究的积极性。(5)多样化原则命题应注意题目的不断更新与类型的多样化,同一指导教师的设计(论文)课题选题和近三届毕业设计课题的重复率不高于50,题目数量应满足一人一题的基本要求。2课题的审核由各专业指导教师确定后的课题,填写毕业设计课题申请表。经系主任汇总后,报院毕业设计领导小组审核,由分管教学的副院长批准。3确定课题的时间要求一般在第七学期第15周前完成命题,对于经批准认可的命题,在第16周内向学生公布。指导教师在实际指导过程中,一般不应随意更改命题,确实需要更改命题时,应办理相关手续。三、选题与任务书1学生在教师指导下从公布的命题范围内选题。2学生自拟题目须经系主任审阅后指定指导教师,并报分管教学副院长批准。3选题原则上要求一人一题。4学生选题一般在第七学期的第17周前完成。5根据学生选题情况,填写大学毕业论文(设计)任务书,其中“设计所需的工作条件”应与课题的实际需要相符;“设计(论文)任务及目标”应指明毕业设计的详细任务(所需完成的工作、达到的设计要求等),不能简单了事。四、开题1指导学生书写开题报告,开题报告主要内容包括课题研究的意义和背景、课题研究相关资料的研究情况(说明课题研究的历史、现状和发展趋势)、对课题研究的基本构思。2指导学生填写大学毕业论文(设计)开题报告,并要求学生在第八学期的第2周前提交不少于1000字的开题报告,基本内容应包括课题研究的意义和背景、课题研究相关资料的研究情况(说明课题研究的历史、现状和发展趋势)、对课题研究的基本构思、阶段性工作计划、参考文献等。参考文献的列写格式要符合要求。3第八学期的第3周前完成开题审核,通过开题审核的学生,一般不应更换选题;开题未获通过的学生,应及时根据开题指导小组的意见更换选题,并于开题后的2周内做好准备,向开题指导小组第二次提出开题申请;对再次开题未获通过的学生,取消其本次毕业设计(论文)资格,延至下届进行。指导教师要重视对开题未获通过的学生进行指导。4开题报告中,“指导教师意见”应对学生开题情况作出基本评价以及对学生毕业设计(论文)研究方案或毕业设计(论文)写作提纲提出改进意见,同时还应对学生是否可以进入研究和设计(论文)撰写阶段提出意见。开题意见应对选题及设计方案的合理性、可行性作出简单评价,并明确表示是否同意开题,不能只简单写“同意开题”及类似意见。五、过程指导1指导教师确定以后,不得随意更换。指导教师因各种原因确实不能或不宜进行毕业设计(论文)指导时,必须办理有关手续,并由所在系指定水平相当的教师指导。2每名教师指导的学生人数一般限定在8名以内。3指导教师应指导学生制订毕业设计(论文)工作计划,提出毕业设计(论文)的具体要求,指导学生阅读文献和参考资料。4指导教师应定期(平均每周不少于一次)检查学生的工作进度与工作质量,填写毕业设计过程跟踪表。及时解答和处理学生提出的有关问题,指导学生完成各阶段的设计(论文)任务,并认真填写毕业设计(论文)指导过程的各项表格。5指导教师应指导学生按要求及规范撰写毕业论文。毕业论文及格式应符合本科生毕业设计(论文)管理规定、毕业论文(设计)排版打印格式的要求。论文的具体要求是设计方案合理、理论准确、理论分析和技术分析充分、实验(试验)和计算的方法正确、各方面的数据可靠、图表规范清晰、文字表述的语言流畅简练准确;字数在8000字以上,一律按规定格式进行打印。论文内容和设计方案要杜绝抄袭别人的成果,避免和往届类似题目内容上的雷同以及网上可查阅资料内容的雷同(技术文档除外),如果需要引用别人的成果内容,一定要注明参考文献的出处。6指导教师应指导学生撰写不少于5000字的外文文章翻译。格式应符合要求。要求内容应与研究的课题相关。参考文献不少于15篇,格式规范。六、毕业答辩和成绩评定1指导教师应审阅学生毕业设计(论文),填写毕业设
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 预制混凝土防撞护栏模具生产项目可行性研究报告
- 2025-2026学年湖北省荆州市高三第一次调研测试生物试卷含解析
- 医疗保障行政处罚程序规定2026
- 某造船厂焊接安全规范
- 2026年四川省遂宁市中考生物试卷试题真题(含答案详解)
- 广东省广州市天河区2025-2026学年九年级上学期期末考试道德与法治试卷(含答案)
- 子宫内膜癌分子分型临床应用中国专家共识2026
- 2026费用结算面试题及答案
- 人工智能威胁情报
- 2026海南农垦面试题及答案
- 罪犯入监教育工作制度
- 逐一整改销号工作制度
- 2026年老年养生保健知识课件
- 2026年大学生英语六级考试必背全部词汇表汇编(包过版)
- 口腔门诊护士培训制度
- 2026年注册安全工程师题库300道【考点精练】
- SJG 57-2019深圳市道路声屏障设计指引
- 房屋市政重大隐患事故判定标准试题(附答案)
- 广义线性模型在保险精算中的应用
- 国家安全生产生产考试
- 2025年英语考研201英语一真题汇编试卷(含答案)
评论
0/150
提交评论