新手上路
- 积分
- 35
- 金钱
- 35
- 注册时间
- 2015-7-22
- 在线时间
- 4 小时
|
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);
}
}
|
|