เขียนข้อมูลลง sdcard stm32f4

  • 3 Replies
  • 1512 Views
เขียนข้อมูลลง sdcard stm32f4
« on: April 10, 2015, 04:20:59 pm »
เขียนข้อมูลลง sdcard stm32f4 ทำไมเมื่อนำฟังก์ชันเขียนข้อมูลลงsdcardมาไว้ใน while(1)แล้วโปรแกรมไม่นำข้อมูลลงsdcardให้คะ
Code: [Select]
int main(void)
{
SystemInit();
LED_GPIOInitialize();
FRESULT L_RESULT;
FATFS obj_FATFS;  //Fatfs object
FIL fil;  //File object
uint32_t total, free;  //Free and total space
int a = 5555;
int b = 7935;
int c = 1234;

L_RESULT = f_mount(&obj_FATFS,"",1);
  if(L_RESULT == FR_OK)
  {
      // LED Green On
  GPIO_SetBits(GPIOD,GPIO_Pin_14);  // LED red
  //Try to open file
         if (f_open(&fil, "file.txt", FA_OPEN_ALWAYS | FA_READ | FA_WRITE) == FR_OK) {
             //File opened, turn off RED and turn on GREEN led
        GPIO_ResetBits(GPIOD,GPIO_Pin_14);
        GPIO_SetBits(GPIOD,GPIO_Pin_12); 
                 }

                 
  }

    while(1)
    {
                                                         f_printf(&fil, "%d\n", a);
        f_printf(&fil, "%d\n", b);
        f_printf(&fil, "%d\n", c);
                                                         f_close(&fil);
    }
}//end main

Re: เขียนข้อมูลลง sdcard stm32f4
« Reply #1 on: April 11, 2015, 12:02:37 am »
เขียนข้อมูลลง sdcard stm32f4 ทำไมเมื่อนำฟังก์ชันเขียนข้อมูลลงsdcardมาไว้ใน while(1)แล้วโปรแกรมไม่นำข้อมูลลงsdcardให้คะ
int main(void)
{
      SystemInit();
      LED_GPIOInitialize();
      FRESULT L_RESULT;
         FATFS obj_FATFS;  //Fatfs object
         FIL fil;  //File object
         uint32_t total, free;  //Free and total space
         int a = 5555;
         int b = 7935;
         int c = 1234;
         
          L_RESULT = f_mount(&obj_FATFS,"",1);
              if(L_RESULT == FR_OK)
              {
                  // LED Green On
                 GPIO_SetBits(GPIOD,GPIO_Pin_14);  // LED red
                 //Try to open file
                        if (f_open(&fil, "file.txt", FA_OPEN_ALWAYS | FA_READ | FA_WRITE) == FR_OK) {
                            //File opened, turn off RED and turn on GREEN led
                           GPIO_ResetBits(GPIOD,GPIO_Pin_14);
                           GPIO_SetBits(GPIOD,GPIO_Pin_12); 
                                   }

                                   
              }
            
    while(1)
    {
                                                         f_printf(&fil, "%d\n", a);
                           f_printf(&fil, "%d\n", b);
                           f_printf(&fil, "%d\n", c);
                                                         f_close(&fil);
    }
}//end main
1. ถ้าไม่มี While(1) ทำงานได้ใช่ไหมครับ???
2. mount ผ่าน open ได้ใช่ไหม???
3. แนะนำให้ Tap โปรแกรมให้ดูสวยงามด้วยครับ เพื่อให้ผู้ที่มาช่วยเหลืออ่านง่ายครับ

Re: เขียนข้อมูลลง sdcard stm32f4
« Reply #2 on: April 11, 2015, 12:12:35 am »
ถ้าเขียนไว้นอก while(1) สามารถใช้งานได้คะ
สามารถmountได้ค่ะ

Re: เขียนข้อมูลลง sdcard stm32f4
« Reply #3 on: April 11, 2015, 12:32:40 am »
ถ้าเขียนไว้นอก while(1) สามารถใช้งานได้คะ
สามารถmountได้ค่ะ

โอเคครับผม
ตามหลักการใช้งาน Fatfs จะต้องดำเนินการตามขั้นตอน 4 ลำดับ ดังนี้
1. Mount
2. Open
3. Write/Read
4. Close

1. หลังคุณ Mount นั้นหมายความว่าคุณได้เข้าถือครอง SD Card นั้น จากนั้น คุณจะ Open
2. หลังคุณ Open คุณสามารถ Write/Read ได้ จากนั้นคุณจะต้อง Close ไฟล์ที่ Open

คราวนี้คุณลองเอา Close ออกมานอก while(1) แล้วลองแก้ while(1) เป็นให้เขียนสัก 10 ครั้งดูครับ