test µSD
Dependencies: SD_DISCO_F469NI BSP_DISCO_F469NI BD_SD_DISCO_F469NI USBHOST
main.cpp
- Committer:
- bouaziz
- Date:
- 2019-02-20
- Revision:
- 6:f3337d7c598a
- Parent:
- 5:5c29a3f6600b
File content as of revision 6:f3337d7c598a:
/* * Mbed Application program * SD Card file control function with FatFs on Mbed-os5 * * Copyright (c) 2018 Kenji Arai / JH1PJL * http://www.page.sannet.ne.jp/kenjia/index.html * https://os.mbed.com/users/kenjiArai/ * Created: April 7th, 2018 * Revised: April 30th, 2018 */ // Include -------------------------------------------------------------------- #include "mbed.h" //#include "USBHostMSD.h" #include "FATFileSystem.h" #include "SDBlockDeviceDISCOF469NI.h" //#include "mon.h" #include <stdlib.h> #include <stdio.h> #include <errno.h> // Definition ----------------------------------------------------------------- #define USER_SW_ON 1 // Constructor ---------------------------------------------------------------- DigitalOut led(LED1); DigitalOut led_orange(LED2); DigitalOut led_red(LED3); DigitalOut led_blue(LED4); DigitalIn user_sw(USER_BUTTON); Serial uart(USBTX, USBRX); // Instantiate the Block Device for sd card on DISCO-F469NI SDBlockDeviceDISCOF469NI bd; //USBHostMSD msd; FATFileSystem fs("fs"); Timer tic; // RAM ------------------------------------------------------------------------ // ROM / Constant data -------------------------------------------------------- char *const opening_msg0 = "microSD Card test program"; char *const opening_msg1 = " -> run on Mbed OS-5\r\n"; // Function prototypes -------------------------------------------------------- void return_error (int ret_val); void errno_error (void* ret_val); //------------------------------------------------------------------------------ // Control Program //------------------------------------------------------------------------------ /*int main() { time_t seconds; uint32_t data0 = 10000U; if (user_sw == USER_SW_ON) { // mon(); uart.printf("Start BUTTON ON\r\n"); } //pc.printf("line:%d\r\n", __LINE__); uart.printf("\r\nStart\r\n"); int error = 0; error = fs.mount(&bd); return_error(error); /* FILE* fp = fopen("/fs/test.txt", "w"); errno_error(fp); if (fp != 0) { pc.printf("OPEN : %s%s", opening_msg0, opening_msg1); fprintf(fp,"OPEN : %s%s", opening_msg0, opening_msg1); } else { pc.printf("ERROR\r\n"); } fclose(fp); */ // uint32_t size = get_disk_freespace(); // seconds = time(NULL); // strftime(tmp, 64, "DATE %H:%M:%S,%Y/%m/%d,", localtime(&seconds)); /* while(true) { mon(); NVIC_SystemReset(); }*/ /* pc.printf("terminé\r\n"); while(1); }*/ void return_error (int ret_val) { if (ret_val) { uart.printf("retrun error/Failure. %d\r\n", ret_val); } } void errno_error (void* ret_val) { if (ret_val == NULL) { uart.printf("error #/Failure. %d \r\n", errno); } } unsigned int count=0,val1,val2; char tmess[]="/fs/test1.txt"; unsigned int index; #define TAILLEMAX (4096*4) #define ITER 50000 unsigned flag; unsigned char tabf[TAILLEMAX+1]; unsigned int tstat[20000]; unsigned int cal1,cal2; double ff; unsigned long vdebut,vfin; int main(){ unsigned int max=0,min=200000000; int retour; led=1; led_orange=1; led_red=1; led_blue=1; int error = 0; //led4=1; uart.printf("TEST\r\n"); led_red=0; wait(0.1); /* while(!msd.connect()) { wait(0.500); }*/ led_red=1; error = fs.mount(&bd);//bd); return_error(error); wait(0.1); FILE *fp = fopen(tmess, "w"); errno_error(fp); if(fp==0){ // led1=1; // led2=1; // led4=0; uart.printf("erreur ouverture fichier\r\n"); while(1); } uart.printf("DEBUT TEST\r\n"); tic.reset(); tic.start(); // tc1.attach(&per,0.001); vdebut=tic.read_us(); while(count<ITER){ // if(flag>0){ led=0; // flag--; val1= tic.read_us(); *((unsigned int*)tabf)=val1; *((unsigned int*)(tabf+12))=0; fwrite(tabf,1,TAILLEMAX,fp); *((unsigned int*)(tabf+16))=0; val2=tic.read_us(); cal1=val2-val1; *((unsigned int*)(tabf+4))=val2; *((unsigned int*)(tabf+8))=cal1; //uart.printf("max = %u min=%u flag=%u\n",max,min,flag); if(cal1>max){ max=cal1; } if(cal1<min){ min=cal1; } cal1 = (cal1+50)/100; if(cal1>19999) cal1=19999; tstat[cal1]=tstat[cal1]+1; count++; led=1; wait(0.003); //led3=0; //} } vfin=tic.read_us(); fclose(fp); fp=fopen("/fs/fin.txt","w"); if(fp==0){ // led1=1; // led2=1; // led4=0; uart.printf("erreur ouverture fichier STAT\r\n"); while(1); } for(cal2=0;cal2<20000;cal2++){ if(tstat[cal2]!=0){ ff=ff+ (cal2/10.)*(tstat[cal2]/(double)ITER); fprintf(fp,"%u\t%u\r\n",cal2,tstat[cal2]); } } fprintf(fp,"max = %u min=%u moyenne=%u tempstotal(ms)=%u\r\n",max,min,(unsigned)(ff*1000),(vfin-vdebut)/1000); fclose(fp); // led4=1; uart.printf("max = %u min=%u moyenne=%u tempsmanip(H)=%f\r\n",max,min,(unsigned)(ff*1000),(((vfin-vdebut)/1000000.)+1)/3600.); while(1); }