stm32f4中fwrite函数的输入只能为16进制吗?

2019-07-20 11:44发布

如题,本人小白,现在项目上需要用stm32向SD卡内写数据,因此用到FATFS里的fwrite函数,但是无法做到输入10进制数并写进SD卡,只能输入16进制,写文件的主要代码如下:
int main()
{       
        u8 offline_cnt=0;
        u8 tct=0;
        u8 USB_STA;
        u8 Divece_STA;
  u8 i=0;
  u16 j=0;
  u32 free,total;  
       

       
        SysTick_Init(168);
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  
        LED_Init();
        KEY_Init();
        USART3_Init(9600);
        TFTLCD_Init();                       
        EN25QXX_Init();                                          
        my_mem_init(SRAMIN);               
       
       
        FRONT_COLOR=RED;       
       
       
        while(SD_Init())
        {
                printf("SD Card Error! ");
                delay_ms(500);                                       
        }
       
        FRONT_COLOR=BLUE;               
        printf("SD Card OK! ");       
       
        FATFS_Init();                                                                 
          f_mount(fs[0],"0:",1);                                
                          
        while(FATFS_GetFree("0:",&total,&free))
        {
                delay_ms(200);
        }
        FRONT_COLOR=BLUE;          
               
        printf("SD Total Size: %ldMB ",total>>10);
        printf("SD  Free Size: %ldMB ",free>>10);
       

        FATFS fs;
  FIL fsrc;
  FRESULT res;
       
        UINT  btw = 512;
  UINT  bw;
        u16 WriteBuffer[3] = {0x31,0x32,0x33};
        u8        ReadBuffer[512];
       
        res = f_open(&fsrc,"0:/test.txt",FA_CREATE_ALWAYS|FA_WRITE);
       

        if(res == FR_OK)
        {
        f_lseek(&fsrc,fsrc.fsize);
               
        f_write(&fsrc,WriteBuffer,sizeof(WriteBuffer),&bw);
       
               
        LCD_ShowString(10,200,tftlcd_data.width,tftlcd_data.height,16,"Write Success");
        }
        else
        {
        LCD_ShowString(10,200,tftlcd_data.width,tftlcd_data.height,16,"Write Error");
        }
        f_close(&fsrc);
       
        res = f_open(&fsrc,"0:/test.txt",FA_READ);
        f_read(&fsrc,ReadBuffer,sizeof(ReadBuffer),&br);
        f_close(&fsrc);
        LCD_ShowString(10,240,tftlcd_data.width,tftlcd_data.height,16,"SD Card TXT:");       

        LCD_ShowString(10,260,tftlcd_data.width,tftlcd_data.height,16,ReadBuffer);

       
       
       
        USBD_Init(&USB_OTG_dev,USB_OTG_FS_CORE_ID,&USR_desc,&USBD_MSC_cb,&USR_cb);

        while(1)
        {       
                if(USB_STA!=USB_STATUS_REG)
                {       
                        Divece_STA=bDeviceState;
                }
                tct++;
                if(tct==200)
                {
                        tct=0;
                        led2=1;
                        led1=!led1;
                        if(USB_STATUS_REG&0x10)
                        {
                                offline_cnt=0;
                                bDeviceState=1;
                        }else
                        {
                                offline_cnt++;  
                                if(offline_cnt>10)bDeviceState=0;
                        }
                        USB_STATUS_REG=0;
                }
                delay_ms(10);       
        }       
}


输入的数组为WriteBuffer,0x31~0x33对应的是按键1~3,现在想做到输入量就是1~3,同时也能通过fwrite函数写在SD卡里面去,

求大佬指教!



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
qjj88798014
2019-07-20 17:50
本帖最后由 qjj88798014 于 2017-9-29 15:48 编辑
正点原子 发表于 2017-9-28 17:02
对于SD卡来说,存储的都是二进制数据流。至于你用什么显示出来,看你打开的软件,和你写入的内容。  你要写 ...

现在我想把stm32的AD输出的数据写进SD卡里,但是它输出的是0~4096的十进制数,我是不是要写个十进制转十六进制,再通过fwrite写进SD卡吗?

已解决,谢谢!

一周热门 更多>