|

楼主 |
发表于 2020-2-21 17:12:00
|
显示全部楼层
代码贴的不对,重新贴一下
- static fsStatus init_filesystem (void)
- {
- fsStatus stat;
- fsFileInfo info;
- FILE *pfrec;
- char *opt = "/L SD Card /FAT32";
-
- /* 挂载TF卡 */
- stat = fmount ("M0:");
- if (stat == fsNoFileSystem)
- {
- /* 格式化,格式化完之后不知道是不是就自动挂载了 */
- stat = fformat ("M0:", opt);
- }
-
- pfrec = fopen("001.csv","a");
- if(pfrec)
- {
- fclose(pfrec);
- return(fsOK);
- }
-
- return(fsError);
- }
- void check_SD(void)
- {
- static uint16_t count = 0;
- fsStatus fstat;
-
- fstat = fmedia("M0:");
- if(fstat == fsOK)
- {
- if(count < 5)
- {
- if(!lastSDstate)count++;
- }
- else if(count == 5)
- {
- /* 检测到插入卡 */
- if(!lastSDstate)
- {
- fstat = init_filesystem();
- if(fstat == fsOK)
- {
- lastSDstate = 1;
- count = 6;
- }
- }
- }
- }
- else
- {
- if(lastSDstate)if(count)count--;
- if(count == 1)
- {
- /* 检测到拔卡 */
- if(lastSDstate)
- {
- lastSDstate = 0;
- count = 0;
- funmount ("M0:");
- }
- }
- }
- }
- void Thread_SD (void *argument)
- {
- osStatus_t status;
- fsStatus fstat;
- MEM_MSG_t Msg;
- L_MEM_BLOCK_t *pMem;
- MEM_Type_e mpType;
- FILE *pfrec;
- int32_t drv_id;
- uint32_t drv_sta;
-
- fstat = finit ("M0:");
- if (fstat != fsOK)
- {
- /* 接口初始化失败 */
- osThreadFlagsWait(0x01, osFlagsWaitAny, osWaitForever);
- }
-
- drv_id = fs_ioc_get_id("M0:");
- drv_sta = FS_CONTROL_MEDIA_INIT;
- fstat = fs_ioc_device_ctrl(drv_id,fsDevCtrlCodeControlMedia,&drv_sta);
- if(fstat == fsOK)
- {
- // fstat = fmount ("M0:");
- }
-
- while (1)
- {
- /* 检查热拔插 */
- check_SD();
-
- /* 等待其它线程发送的消息 */
- status = osMessageQueueGet(qid_SDcard, &Msg, NULL, 200);
- /* 成功接收到消息 */
- if (status == osOK)
- {
- pMem = Msg.addr;
- mpType = Msg.mem_Type;
- /* 参数合法则存储此包数据 */
- if(pMem && pMem->len && lastSDstate)
- {
- status = osOK;
- if( mpType == mp_Small ){if(pMem->len > S_DATA_LEN)status = osError;}
- else if(mpType == mp_Middle){if(pMem->len > M_DATA_LEN)status = osError;}
- else if(mpType == mp_Large ){if(pMem->len > L_DATA_LEN)status = osError;}
- if(status == osOK)
- {
- /* 存储,暂时没找到不开关文件的方法 */
- pfrec = fopen (filename, "a");
- if(pfrec)
- {
- fwrite (pMem->Buf, pMem->len, sizeof(uint8_t), pfrec);
- fclose(pfrec);
- }
- }
- }
- Free_Mem(mpType,pMem);
- }
- }
- }
复制代码 |
|