|
本帖最后由 68336016 于 2019-8-14 19:37 编辑
stm32+w25q64
- //先建立好文件,只执行一次
- lfs_file_open(&g_lfs, &g_file, filename, LFS_O_RDWR | LFS_O_CREAT);
- //不断循环执行下面2句,每次写入内容只有20个字节,耗时约200ms,时间几乎就是lfs_file_sync函数占用的。
- lfs_file_write(&g_lfs, &g_file, content, strlen(content));
- lfs_file_sync(&g_lfs, &g_file);
复制代码
换种方式,每次写入数据后,不去人工调用lfs_file_sync语句,让多次执行lfs_file_write后,自动写入FLASH
- //先建立好文件,只执行一次
- lfs_file_open(&g_lfs, &g_file, filename, LFS_O_RDWR | LFS_O_CREAT);
- //不断循环执行下面1句,每次写入内容只有20个字节,在缓冲区没满时候,没真正写到FLASH,几乎不耗时间。
- //每调用20多次后,估计缓冲区满了,这时耗时是3ms,应该就是写入FLASH的时间
- lfs_file_write(&g_lfs, &g_file, content, strlen(content));
复制代码
问题:人为每次去调用lfs_file_sync耗时要200ms,而缓冲区满了程序自动写入FLAHS,只需要几个ms时间。
都有执行写入FLASH操作,时间为何差别那么大呢。 |
|