zoukankan      html  css  js  c++  java
  • 【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链接:

  • 相关阅读:
    [Re] SpringMVC-5(Converter+拦截器+国际化+异常处理)
    [Re] SpringMVC-4(数据绑定+数据格式化+数据校验)
    [Re] SpringMVC-3(视图解析+RESTful CRUD)
    [Re] SpringMVC-2(数据输出+源码流程)
    常用SQL优化
    JAVA 中的标准注解
    linux第一发
    easyui js取消选中 Tree 指定节点
    axis1.4 服务端获取请求报文报文和客户端获取请求报文和响应报文
    对于两个实体类属性值的合并,java实现
  • 原文地址:https://www.cnblogs.com/xiaomagee/p/7451367.html
Copyright © 2011-2022 走看看