123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- #include "bsp_fatfs.h"
- #include "ext_sram.h"
- #include "project_var.h"
- #include "stm32f4xx.h"
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- OS_EVENT *sd_mutex = NULL;
- FATFS FatFs[_VOLUMES]; /* FatFs文件系统对象 4144字节*/
- FIL file_object; /* 文件对象 4132字节*/
- /****************************************************
- * 函 数 名:get_fattime
- * 函数功能:文件系统获取时间
- * 入口参数:
- * 返 回 值:时间
- *****************************************************/
- DWORD get_fattime(void)
- {
- RTC_TimeTypeDef RTC_TimeStruct;
- RTC_DateTypeDef RTC_DateStruct;
- RTC_GetTime(RTC_Format_BIN, &RTC_TimeStruct);
- RTC_GetDate(RTC_Format_BIN, &RTC_DateStruct);
- /* 返回当前时间戳 */
- return ((DWORD)(2000 + RTC_DateStruct.RTC_Year - 1980) << 25) /* Year 2019 */
- | ((DWORD)RTC_DateStruct.RTC_Month << 21) /* Month */
- | ((DWORD)RTC_DateStruct.RTC_Date << 16) /* Mday */
- | ((DWORD)RTC_TimeStruct.RTC_Hours << 11) /* Hour */
- | ((DWORD)RTC_TimeStruct.RTC_Minutes << 5) /* Min */
- | ((DWORD)RTC_TimeStruct.RTC_Seconds >> 1); /* Sec */
- }
- /****************************************************
- * 函 数 名:FileSystem_Init
- * 函数功能:文件系统初始化
- * 入口参数:
- * 说 明:无
- *****************************************************/
- void fatfs_init(void)
- {
- FRESULT res; /* 文件操作结果 */
- res = f_mount(&FatFs[0], "0:", 1); // 文件系统挂载时会对TF初始化
- /* 如果没有文件系统就格式化创建创建文件系统 */
- if (res == FR_NO_FILESYSTEM) // TF 卡没有文件系统
- {
- res = f_mkfs("0:", 0, 0); // 格式化
- if (res == FR_OK)
- {
- DEBUG("TF format ok\r\n");
- res = f_mount(NULL, "0:", 1); /* 格式化后,先取消挂载 */
- res = f_mount(&FatFs[0], "0:", 1); /* 重新挂载 */
- }
- else
- {
- LED1_RUN_OFF;
- DEBUG("TF format fail\r\n");
- }
- }
- else if (res != FR_OK)
- {
- LED1_RUN_OFF;
- DEBUG("!!!TF mount file system fail (%d)\r\n", res);
- }
- else
- {
- LED1_RUN_ON;
- DEBUG("TF File system mount ok !\r\n");
- }
- res = f_mount(&FatFs[1], "1:", 1); // 文件系统挂载时会对NAND初始化
- /* 挂载文件系统 */
- // if (res == FR_NO_FILESYSTEM) // NAND 没有文件系统
- // {
- // res = f_mkfs("1:", 0, 0); // 格式化
- // if (res == FR_OK)
- // {
- // DEBUG("TF format ok\r\n");
- // res = f_mount(NULL, "1:", 1); /* 格式化后,先取消挂载 */
- // res = f_mount(&fs, "1:", 1); /* 重新挂载 */
- // }
- // else
- // {
- // // LED_FAULT_ON;
- // DEBUG("TF format fail\r\n");
- // }
- // }
- // else
- /* 如果没有文件系统就格式化创建创建文件系统 */
- if (res == FR_NO_FILESYSTEM) // TF 卡没有文件系统
- {
- res = f_mkfs("1:", 0, 0); // 格式化
- if (res == FR_OK)
- {
- DEBUG("Nand flash format ok\r\n");
- res = f_mount(NULL, "1:", 1); /* 格式化后,先取消挂载 */
- res = f_mount(&FatFs[1], "1:", 1); /* 重新挂载 */
- }
- else
- {
- LED1_RUN_OFF;
- DEBUG("Nand flash format fail\r\n");
- }
- }
- if (res != FR_OK)
- {
- LED0_RUN_OFF;
- DEBUG("!!!Nand flash mount file system fail (%d)\r\n", res);
- }
- else
- {
- LED0_RUN_ON;
- DEBUG("Nand flash file system mount ok !\r\n");
- }
- }
|