文档介绍:该【正点原子探索者stm32f407rtthread文件系统使用】是由【鼠标】上传分享,文档一共【8】页,该文档可以免费在线阅读,需要了解更多关于【正点原子探索者stm32f407rtthread文件系统使用】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。正点原?探索者stm32f407rt-threa?d件系统使?硬件说明:正点原?探索者stm32f407,板载SPI-FLASH?W25Q128系统说明:RT-Thread?(以上的其他版本也可以)在rt-thread-\rt-thread\bsp\stm32\stm32f407-atk-explorer下,打开env配置?具,第?步:进?Hardware?Driver?Config--->Onboard?Peripheral?Drivers开启SPI?FLASH第?步:进?Hardware?Driver?Config--->on-chip?Peripheral?Drivers开启SPI?BUS第三步:进?RT-ponents--->Device?virtual?file?system开启elm-chan?fatfs第四步:配置elm-chan?fatfs第五步:保存退出,使?pkgs?--update更新代码然后使?scons?--target=mdk5?成Keil?mdk5?程?件?编译成功后,打开?程,编译代码,应该是正常编译,没有错误的。?件加?挂载?件系统的代码:void?spiflash_test(void){????rt_device_t?dev;????dev?=?rt_device_find("W25Q128");????RT_ASSERT(dev?!=?RT_NULL);????if?(dev?!=?RT_NULL)????{????????/*?Filesystem?Initialization?*/#if?defined(RT_USING_DFS)?&&?defined(RT_USING_DFS_ELMFAT)????????/*?mount?sd?card?fat?partition?1?as?root?directory?*/??????需??要//格式化完后才可以????????if?(dfs_mount("W25Q128",?"/",?"elm",?0,?0)?==?0)????????{????????????rt_kprintf("File?System?initialized!\n");????????}????????else????????{????????????rt_kprintf("File?System?initialzation?failed!\n");????????}#endif?/*?RT_USING_DFS?&&?RT_USING_DFS_ELMFAT?*/????}}然后在main函数中调?即可int?main(void){????int?count?=?1;????/*?set?LED0?pin?mode?to?output?*/????rt_pin_mode(LED0_PIN,?PIN_MODE_OUTPUT);????spiflash_test();//测试?件系统代码????while?(count++)????{????????rt_pin_write(LED0_PIN,?PIN_HIGH);????????rt_thread_mdelay(500);????????rt_pin_write(LED0_PIN,?PIN_LOW);????????rt_thread_mdelay(500);????}????return?RT_EOK;}编译后,烧录程序到开发板中。串??具应该会有以下提?:需要注意的是,我这?之前已经格式化过SPI-FLASH了,所以这?就直接挂载成功了。如果是第?次烧写,这?应该是挂载失败的。挂载失败的话,我们需要重新格式化?次FLASH。在串?终端输?命令:mkfs?-t?elm?W25Q128然后输?reboot重启系统即可正常挂载挂载好?件系统后,我们就可以使??件系统相关的?些命令了。RT_Thread的Finsh中?持以下跟?件系统相关的命令,这些命令对于熟悉Linux童鞋来说最简单不过了。FinSH?命令描述ls显??件和?录的信息cd进?指定?录cp复制?件rm删除?件或?录mv将?件移动位置或改名echo将指定内容写?指定?件,当?件存在时,就写?该?件,当?件不存在时就新创建?个?件并写?cat展??件的内容pwd打印出当前?录地址mkdir创建?件夹mkfs格式化?件系统这?做?些简单的串??范:关于在程序中应??件系统相关操作:?件?例,在该?例代码中,?先会使??open()?函数创建?个?件?,并使??write()?函数在?件中写?字符串“?RT-ThreadProgrammer!\n,”然后关闭?件。再次使??open()?函数打开???件,读出其中的内容并打印出来,最后关闭该?件。?void?readwrite_sample(void){????int?fd,?size;????char?s[]?=?"RT-Thread?Programmer!",?buffer[80];????rt_kprintf("Write?string?%s?to?.\n",?s);????以/*?创建和读写模式打开?/?t?件,如果该?件不存在则创建该?件?*/????fd?=?open("/",?O_WRONLY?|?O_CREAT);????if?(fd>=?0)????{????????write(fd,?s,?sizeof(s));????????close(fd);????????rt_kprintf("Write?done.\n");????}??????以/*只?读模式打开?/?t?件?*/????fd?=?open("/",?O_RDONLY);????if?(fd>=?0)????{????????size?=?read(fd,?buffer,?sizeof(buffer));????????close(fd);????????rt_kprintf("Read?from?file??:?%s?\n",?buffer);????????if?(size?<?0)????????????return?;????}??}/*?导出到?msh命?令列表中?*/MSH_CMD_EXPORT(readwrite_sample,?readwrite?sample);重新编译代码,烧写程序到开发板,然后串??具输?以下命令:?件名?例:程序会创建?个操作?件的函数?rename_sample()?并导出到?msh?命令列表。该函数会调?r?ename()?函数,??的?件改名为?。?void?rename_sample(void){????rt_kprintf("%s?=>?%s",?"/",?"/");????if?(rename("/",?"/")?<?0)????????rt_kprintf("[error!]\n");????else????????rt_kprintf("[ok!]\n");}/*?导出到?msh命?令列表中?*/MSH_CMD_EXPORT(rename_sample,?rename?sample);重新编译代码,烧写程序到开发板,然后串??具输?以下命令:3.?获取?件状态?例,程序会创建?个操作?件的函数?stat_sample()?并导出到?msh?命令列表。该函数会调?s?tat()?函数获取???件的?件??信息。?例代码如下所?:static?void?stat_sample(void){????int?ret;?????struct?stat?buf;?????ret?=?stat("/",?&buf);????if(ret?==?0)????rt_kprintf("?file?size?=?%d\n",?);????else????rt_kprintf("?file?not?fonud\n");}/*?导出到?msh命?令列表中?*/MSH_CMD_EXPORT(stat_sample,?show??stat?sample);重新编译代码,烧写程序到开发板,然后串??具输?以下命令:更多的?例代码可参考