问答

汇集网友智慧,解决技术难题

21ic问答首页 - HC32F460 U盘文件读写例程

单片机 hc32f460 U盘 读写 使用 TX

HC32F460 U盘文件读写例程 赏100家园币

小铭杨工2025-05-05
1.使用的MCU为:HC32F460PETB。
2.U盘TXT文件读写。
3.不使用实时操作系统,即“裸奔”
回答 +关注 3
4309人浏览 1人回答问题 分享 举报
1 个回答
  • #include "usb_host.h"    // USB Host驱动接口#include "ff.h"          // FatFs头文件#include FATFS fs;       // 文件系统对象FIL file;       // 文件对象FRESULT res;UINT bw, br;    // 读写字节数void USBH_UserProcess(uint8_t id){    switch(id) {        case HOST_USER_CONNECTION:            // U盘连接成功            break;        case HOST_USER_DISCONNECTION:            // U盘拔出            break;        case HOST_USER_CLASS_ACTIVE:            // 设备准备好,可以挂载文件系统            if (f_mount(&fs, "", 1) == FR_OK) {                // 文件系统挂载成功            }            break;        default:            break;    }}int main(void){    System_Init();      // 系统初始化    USBH_Init();        // USB Host初始化,注册回调USBH_UserProcess    USBH_Start();    while(1) {        USBH_Process();   // USB Host主状态机        if (U盘已挂载) {            // 写文件示例            res = f_open(&file, "test.txt", FA_OPEN_ALWAYS | FA_WRITE);            if(res == FR_OK) {                f_lseek(&file, f_size(&file));  // 定位到文件末尾                char wbuf[] = "Hello HC32F460 USB!\r\n";                f_write(&file, wbuf, strlen(wbuf), &bw);                f_close(&file);            }            // 读文件示例            res = f_open(&file, "test.txt", FA_READ);            if(res == FR_OK) {                char rbuf[128];                memset(rbuf, 0, sizeof(rbuf));                f_read(&file, rbuf, sizeof(rbuf)-1, &br);                f_close(&file);                // 这里可以打印rbuf,或做其它处理            }        }    }}参考以上框架

您需要登录后才可以回复 登录 | 注册