OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4537|回复: 2

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

[复制链接]

2

主题

5

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2017-9-28
在线时间
7 小时
发表于 2017-9-28 17:02:20 | 显示全部楼层 |阅读模式
1金钱
如题,本人小白,现在项目上需要用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!\r\n");
                delay_ms(500);                                       
        }
       
        FRONT_COLOR=BLUE;               
        printf("SD Card OK!\r\n");       
       
        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\r\n",total>>10);
        printf("SD  Free Size: %ldMB\r\n",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#楼]

对于SD卡来说,存储的都是二进制数据流。至于你用什么显示出来,看你打开的软件,和你写入的内容。 你要写ASCII的1,2,3,那就用字符串的形式,写入文本文件,那就是1,2,3了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-9-28 17:02:21 | 显示全部楼层
对于SD卡来说,存储的都是二进制数据流。至于你用什么显示出来,看你打开的软件,和你写入的内容。  你要写ASCII的1,2,3,那就用字符串的形式,写入文本文件,那就是1,2,3了。
回复

使用道具 举报

2

主题

5

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2017-9-28
在线时间
7 小时
 楼主| 发表于 2017-9-29 14:28:16 | 显示全部楼层
本帖最后由 qjj88798014 于 2017-9-29 15:48 编辑
正点原子 发表于 2017-9-28 17:02
对于SD卡来说,存储的都是二进制数据流。至于你用什么显示出来,看你打开的软件,和你写入的内容。  你要写 ...

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

已解决,谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 05:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表