OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3826|回复: 2

sd卡+ucos两个任务写入文件出错

[复制链接]

2

主题

9

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2015-7-22
在线时间
4 小时
发表于 2016-3-24 09:59:41 | 显示全部楼层 |阅读模式
10金钱
用的是战舰的开发板,ucos里面建立了两个任务,要实现两个任务采集到的ADC值都可以存储到SD卡的功能
写文件的时候也写了临界保护,但是两个任务都运行的时候程序还是会死掉。(单独一个任务写入文件是可以的)
难道不能两个任务都写文件吗?


void Auto_mode(void *pdata)
{
        OS_CPU_SR cpu_sr;
        for(;;)
        {
                u16 adcx;
                FIL fsrc;
                FRESULT tes;
                unsigned int bw;//·×嬀/size]
                char buf_adc[100];
               
                adcx=Get_Adc_Average(ADC_Channel_1,10);
                sprintf(buf_adc,"%04d ",adcx);
                OS_ENTER_CRITICAL();         
                tes = f_open(&fsrc,"han/A.txt",FA_READ|FA_WRITE|FA_OPEN_ALWAYS);//ò嬀/size]
    if(tes==FR_OK)                        
    {
      tes=f_lseek(&fsrc,fsrc.fsize);         
      tes=f_write(&fsrc,buf_adc,strlen(buf_adc),&bw);
                        f_sync(&fsrc);
    }
    f_close(&fsrc);     
                OS_EXIT_CRITICAL();                 
                printf("adc1:");
                printf("%d\r\n",adcx);
                LED0=!LED0;
                OSTimeDlyHMSM(0,0,10,0);       
        }
}


//Manul_mode嬀/size]
void Manul_mode(void *pdata)
{
                OS_CPU_SR cpu_sr;

                while(1)
                {
                u16 adcy;
                FIL fsrc1;
                FRESULT hes;
                unsigned int bw;
                char buf_adc2[100];
               
                adcy=Get_Adc_Average(ADC_Channel_9,10);
                sprintf(buf_adc2,"%04d ",adcy);   
                OS_ENTER_CRITICAL();        
                hes = f_open(&fsrc1,"han/B.txt",FA_READ|FA_WRITE|FA_OPEN_ALWAYS);//ò嬀/size]
    if(hes==FR_OK)                        
    {
      hes=f_lseek(&fsrc1,fsrc1.fsize);         
      hes=f_write(&fsrc1,buf_adc2,strlen(buf_adc2),&bw);
                        f_sync(&fsrc1);
    }
    f_close(&fsrc1);   
                OS_EXIT_CRITICAL();                 
                printf("adc2:");
                printf("%d\r\n",adcy);
                LED1=!LED1;
               OSTimeDlyHMSM(0,0,5,0);       
        }
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2015-7-22
在线时间
4 小时
 楼主| 发表于 2016-3-24 10:13:22 | 显示全部楼层
回复

使用道具 举报

1

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2020-7-27
在线时间
10 小时
发表于 2020-10-13 11:01:56 | 显示全部楼层
请问这个问题怎么解决的呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-20 08:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表