当前位置: 首页 > news >正文

做网站吉林去哪儿网站上做民宿需要材料

做网站吉林,去哪儿网站上做民宿需要材料,网站优化什么意思,找一家秦皇岛市做网站的公司本文主要是在sfud的基础上进行fatfs文件系统的移植#xff0c;并不对sfud的移植再进行过多的讲解了哦#xff0c;所以如果想了解sfud的移植过程#xff0c;请参考我的另外一篇文章#xff1a;传送门 正文开始咯 首先我们需要先准备资料准备好#xff0c;这里对于fatfs的…本文主要是在sfud的基础上进行fatfs文件系统的移植并不对sfud的移植再进行过多的讲解了哦所以如果想了解sfud的移植过程请参考我的另外一篇文章传送门 正文开始咯 首先我们需要先准备资料准备好这里对于fatfs的移植我参考的是野火的教程。所以我在文章末尾也会给出相关的教程链接。 我们需要的东西有一份实现了sfud库的裸机代码这个可以从我上篇文章的文末连接中获取这里我也将代码的链接贴出:传送门, 还有一份fatfs源码这个为了和野火的教程保持移植这里用的是跟野火教程版本一致的fatfs源码这里的源码可以在文末的链接开源代码链接中获取。开始移植 打开fatfs代码 我们将其添加到我们的工程中 添加文件路径# 对于fatfs的介绍野火的教程中都有详细的介绍这里就不再赘述了。其实它的移植是比较简单的只需要修改diskio.c文件中的相关接口函数和ffconf.h配置文件。 打开diskio.c文件 首先包含我们需要的头文件定义我们要操作的flash #include bsp_spi.h #include sfud.h const sfud_flash *flash1;#define W25Q64 0xEF16 //根据板载的spiflash来修改 /* 为每个设备定义一个物理编号 */ #define ATA 0 // 预留SD卡使用 #define SPI_FLASH 1 // 外部SPI Flash对需要修改的函数进行说明 //获取状态函数 DSTATUS disk_status(BYTE pdrv /* 物理编号 */ ) {DSTATUS status STA_NOINIT;switch (pdrv){case ATA: /* SD CARD */break;case SPI_FLASH:/* SPI Flash状态检测读取SPI Flash 设备ID */if (W25Q64 spi4_flash_readID()){/* 设备ID读取结果正确 */status ~STA_NOINIT;}else{/* 设备ID读取结果错误 */status STA_NOINIT;;}break;default:status STA_NOINIT;}return status; }初始化函数 DSTATUS disk_initialize(BYTE pdrv /* 物理编号 */ ) {uint16_t i;DSTATUS status STA_NOINIT;switch (pdrv){case ATA: /* SD CARD */break;case SPI_FLASH: /* SPI Flash */sfud_init();flash1 sfud_get_device_table() 0; //对应到设备表的第一个// printf(%0x\n, spi4_flash_readID());//如果不清楚设备id的话可以在这里打印一下status disk_status(SPI_FLASH); //获取设备状态break;default:status STA_NOINIT;}return status; }读取函数 DRESULT disk_read(BYTE pdrv, /* 设备物理编号(0..) */BYTE *buff, /* 数据缓存区 */DWORD sector, /* 扇区首地址 */UINT count /* 扇区个数(1..128) */ ) {DRESULT status RES_PARERR;switch (pdrv){case ATA: /* SD CARD */break;case SPI_FLASH://这里的左移12位等于4096因为flash的一个扇区是4k字节sfud_read(flash1, sector 12, count 12, buff);status RES_OK;break;default:status RES_PARERR;}return status; }写入函数 #if _USE_WRITE DRESULT disk_write(BYTE pdrv, /* 设备物理编号(0..) */const BYTE *buff, /* 欲写入数据的缓存区 */DWORD sector, /* 扇区首地址 */UINT count /* 扇区个数(1..128) */ ) {DRESULT status RES_PARERR;if (!count){return RES_PARERR; /* Check parameter */}switch (pdrv){case ATA: /* SD CARD */break;case SPI_FLASH:sfud_erase(flash1, sector 12, 4096); // SPI_FLASH都是要先擦除为1才能写sfud_write(flash1, sector 12, count 12, (uint8_t *)buff);status RES_OK;break;default:status RES_PARERR;}return status; } #endif 设备信息函数 #if _USE_IOCTL DRESULT disk_ioctl(BYTE pdrv, /* 物理编号 */BYTE cmd, /* 控制指令 */void *buff /* 写入或者读取数据地址指针 */ ) {DRESULT status RES_PARERR;switch (pdrv){case ATA: /* SD CARD */break;case SPI_FLASH:switch (cmd){//扇区数量就是例如我这里是8M的flash//那就是 8 * 1024 * 1024 (字节)/ 4096一个扇区的大小 2048扇区数case GET_SECTOR_COUNT:*(DWORD *)buff 2048; //这里是你的扇区数量break;/* 扇区大小 */case GET_SECTOR_SIZE:*(WORD *)buff 4096;break;/* 同时擦除扇区个数 */case GET_BLOCK_SIZE:*(DWORD *)buff 1;break;}status RES_OK;break;default:status RES_PARERR;}return status; } #endif获取时间函数 //这里是获取时间函数后续如果有需要的话可以使用rtc的时间 __weak DWORD get_fattime(void) {/* 返回当前时间戳 */return ((DWORD)(2015 - 1980) 25) /* Year 2015 */| ((DWORD)1 21) /* Month 1 */| ((DWORD)1 16) /* Mday 1 */| ((DWORD)0 11) /* Hour 0 */| ((DWORD)0 5) /* Min 0 */| ((DWORD)0 1); /* Sec 0 */ }对于ffconf.h主要是修改一下宏定义即可 到这里就已经是移植好啦 然后就可以开始进行测试啦 main.c文件 #include main.h #include bsp_led.h #include bsp_usart.h #include gd32f4xx.h #include sys.h #include systick.h #include stdio.h#include bsp_spi.h #include sfud.h#include ff.hFATFS fs; /* FatFs文件系统对象 */ FIL fnew; /* 文件对象 */ FRESULT res_flash; /* 文件操作结果 */ UINT fnum; /* 文件成功读写数量 */ BYTE ReadBuffer[1024]{0}; /* 读缓冲区 */ BYTE WriteBuffer[] /* 写缓冲区*/ 欢迎使用野火STM32 F429开发板 今天是个好日子新建文件系统测试文件\r\n; /*!\brief main function\param[in] none\param[out] none\retval none */ int main(void) {systick_config();led_gpio_config(); // led初始化usart_gpio_config(115200U);/* SFUD initialize */ // if (sfud_init() SFUD_SUCCESS) // { // sfud_demo(0, sizeof(sfud_demo_test_buf), sfud_demo_test_buf); // }printf(****** 这是一个SPI FLASH 文件系统实验 ******\r\n);//在外部SPI Flash挂载文件系统文件系统挂载时会对SPI设备初始化res_flash f_mount(fs,1:,1);/*----------------------- 格式化测试 ---------------------------*/ /* 如果没有文件系统就格式化创建创建文件系统 */if(res_flash FR_NO_FILESYSTEM){printf(》FLASH还没有文件系统即将进行格式化...\r\n);/* 格式化 */res_flashf_mkfs(1:,0,0); if(res_flash FR_OK){printf(》FLASH已成功格式化文件系统。\r\n);/* 格式化后先取消挂载 */res_flash f_mount(NULL,1:,1); /* 重新挂载 */ res_flash f_mount(fs,1:,1);}else{printf(《《格式化失败。》》\r\n);while(1);}}else if(res_flash!FR_OK){printf(外部Flash挂载文件系统失败。(%d)\r\n,res_flash);printf(可能原因SPI Flash初始化不成功。\r\n);printf(请下载 SPI—读写串行FLASH 例程测试如果正常在该例程f_mount语句下if语句前临时多添加一句 res_flash FR_NO_FILESYSTEM; 让重新直接执行格式化流程\r\n);while(1);}else{printf(》文件系统挂载成功可以进行读写测试\r\n);}/*----------------------- 文件系统测试写测试 -----------------------------*//* 打开文件如果文件不存在则创建它 */printf(\r\n****** 即将进行文件写入测试... ******\r\n); res_flash f_open(fnew, 1:FatFs读写测试文件.txt,FA_CREATE_ALWAYS | FA_WRITE );if ( res_flash FR_OK ){printf(》打开/创建FatFs读写测试文件.txt文件成功向文件写入数据。\r\n);/* 将指定存储区内容写入到文件内 */res_flashf_write(fnew,WriteBuffer,sizeof(WriteBuffer),fnum);if(res_flashFR_OK){printf(》文件写入成功写入字节数据%d\n,fnum);printf(》向文件写入的数据为\r\n%s\r\n,WriteBuffer);}else{printf(文件写入失败(%d)\n,res_flash);} /* 不再读写关闭文件 */f_close(fnew);}else{ printf(打开/创建文件失败。\r\n);}/*------------------- 文件系统测试读测试 ------------------------------------*/printf(****** 即将进行文件读取测试... ******\r\n);res_flash f_open(fnew, 1:FatFs读写测试文件.txt, FA_OPEN_EXISTING | FA_READ); if(res_flash FR_OK){printf(》打开文件成功。\r\n);res_flash f_read(fnew, ReadBuffer, sizeof(ReadBuffer), fnum); if(res_flashFR_OK){printf(》文件读取成功,读到字节数据%d\r\n,fnum);printf(》读取得的文件数据为\r\n%s \r\n, ReadBuffer); }else{printf(文件读取失败(%d)\n,res_flash);} }else{printf(打开文件失败。\r\n);}/* 不再读写关闭文件 */f_close(fnew); /* 不再使用文件系统取消挂载文件系统 */f_mount(NULL,1:,1);while (1){} }效果如下 origin_urlimage-4.pngpos_idimg-2thXHWxj-1721718767616) 移植成功 相关的开源代码gitee 如果对你有所帮助的话请给我点一个star嘿嘿
http://www.hkea.cn/news/14433905/

相关文章:

  • 上海有名的做网站的公司有哪些常州的网站建设
  • 网站不备案会怎...wordpress 支持手机6
  • 网站收录软件设计网站项目描述
  • 替朋友做网站wordpress get_post_custom_values
  • 完整酒店网站开发网站制作com cn域名有什么区别
  • 微信电影网站怎么做的福田网站建设论文结论
  • 网站网页设计htmlseo百度推广
  • 建网站怎么赚流量网页网站的区别是什么
  • 大连网站建设开发网站建设与推广培训学校
  • 镇江做网站网站开发遇到的问题
  • 网站如何进行网络推广福州网站怎么做的
  • seo网站推广建站服务商买网站服务器
  • 淄博网站制作优化专业建设网站技术
  • 用dw做简单图片网站wordpress注册登录
  • 东莞网站自动化推广综合性门户网站是什么意思
  • 文登做网站微信上怎么做网站链接
  • 河南app手机网站制作昆明官网优化公司
  • 网站域名怎么改谁有wap网站
  • 网站开发需要干什么wordpress树形导航注册
  • html购物网站源码wordpress博客主题源码
  • 大学生做推送的网站仙桃网站设计公司
  • 推广网站优化怎么做网站建设方案服务器
  • 网站外包维护一年多少钱东莞英文建站公司
  • 企业网站建设制作公司创业邦使用什么网站模板
  • 上海网站建设百度推广公司哪家好广州广告公司有哪些
  • 做房产的一般用哪个网站好展馆设计的主题有哪些
  • ui设计师怎么做简历网站wordpress 调用模板
  • 网站建设的架构设计个人网站模版
  • 网站个人微信收款方案做1688网站到哪里找图片
  • 建设 网站协议开发软件难吗