• 【iCore4 双核心板_ARM】例程十四:FATFS实验——文件操作


    实验现象:

    核心代码:

    int main(void)
    {    
        int i,j;
        FIL file;
        FATFS fatfs;
        static FRESULT res;
        unsigned char write_buffer[512];                                      
        unsigned char read_buffer[512];                                       
        unsigned int counter;
        
        system_clock.initialize();                                                                                        
        led.initialize();                                                                                                
        usart6.initialize(115200);                                                                                  
        usart6.printf("x0c");                                                             
        usart6.printf("33[1;32;40m");                                                 
        usart6.printf("
    Hello, I am iCore4!
    
    ");                                     
        if(BSP_SD_Init() != 0){
            usart6.printf("SD ERROR!
    ");
            while(1){
                LED_RED_ON;
                HAL_Delay(500);
                LED_RED_OFF;
                HAL_Delay(500);
            }
        }else{
            usart6.printf("SD Initialize successful!
    ");
        }
    
        HAL_Delay(500);
        res = f_mount(&fatfs,"0:",1);
        if(res != RES_OK){
            usart6.printf("f_mount error!
    ");
            while(1){
                LED_RED_ON;
                HAL_Delay(500);
                LED_RED_OFF;
                HAL_Delay(500);            
            }
        }else{
            usart6.printf("f_mount successful!
    ");
        }
    
        res = f_open(&file,"0:/SD¿¨²âÊÔ.txt",FA_READ | FA_WRITE | FA_OPEN_ALWAYS);//´ò¿ªÇý¶¯Æ÷0ÉϵÄÔ´Îļþ
        if(res != RES_OK){
            usart6.printf("f_open error!
    ");
            while(1){
                HAL_Delay(500);
                LED_RED_ON;
                HAL_Delay(500);
                LED_RED_OFF;
            }        
        }else{
            usart6.printf("f_open successful!
    ");
        }
        
        res = f_lseek(&file,0);                                               
        if(res != RES_OK){
            usart6.printf("f_lseek error!
    ");
            while(1){
                HAL_Delay(500);
                LED_RED_ON;
                HAL_Delay(500);
                LED_RED_OFF;
            }                
        }else{
            usart6.printf("f_lseek successful!
    ");
        }
        
        for(i = 0;i < 512;i++){
            write_buffer[i] = i % 256;
        }    
    
        res = f_write(&file,write_buffer,512,&counter);                       //½«»º³åÆ÷ÖеÄÄÚÈÝдÈëÔ´Îļþ
        if(res != RES_OK || counter != 512){
            usart6.printf("f_write error!
    ");
            while(1){
                HAL_Delay(500);
                LED_RED_ON;
                HAL_Delay(500);
                LED_RED_OFF;
            }    
        }else{
            usart6.printf("f_write successful!
    ");    
        }    
    
        res = f_lseek(&file,0);                                                  
        if(res != RES_OK){
            usart6.printf("f_lseek error!
    ");
            while(1){
                HAL_Delay(500);
                LED_RED_ON;
                HAL_Delay(500);
                LED_RED_OFF;
            }                
        }else{
            usart6.printf("f_lseek successful!
    ");
        }
    
        res = f_read(&file,read_buffer,512,&counter);
        if(res != RES_OK || counter != 512){
            usart6.printf("f_read error!
    ");
            while(1){
                HAL_Delay(500);
                LED_RED_ON;
                HAL_Delay(500);
                LED_RED_OFF;
            }    
        }else{
            usart6.printf("f_read successful!
    ");
        }
        f_close(&file);    
      
        usart6.printf("read data:
    ");
        for(i = 0;i < 32;i++){
            for(j = 0; j < 16; j ++)
                usart6.printf(" %02X",read_buffer[i*16+j]);
            usart6.printf("
    ");
        }    
        
        while(1){
            LED_GREEN_ON;
            HAL_Delay(500);
            LED_GREEN_OFF;
            HAL_Delay(500);            
        }    
    }

    源代码下载链接:

    链接:https://pan.baidu.com/s/1jJDh134 密码:3pyh

    iCore4链接:

  • 相关阅读:
    输出宽字符数组 C++
    python并发编程之多线程2------------死锁与递归锁,信号量等
    python并发编程之多线程1
    初始线程(相关理论)
    python并发编程之多进程2-------------数据共享及进程池和回调函数
    python并发编程之多进程1-----------互斥锁与进程间的通信
    Cpython支持的进程与线程
    进程理论基础
    函数嵌套复习
    python中if __name__ == '__main__'的说明
  • 原文地址:https://www.cnblogs.com/xiaomagee/p/7451367.html
Copyright © 2020-2023  润新知