如题,本人小白,现在项目上需要用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卡里面去,
求大佬指教!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
现在我想把stm32的AD输出的数据写进SD卡里,但是它输出的是0~4096的十进制数,我是不是要写个十进制转十六进制,再通过fwrite写进SD卡吗?
已解决,谢谢!
一周热门 更多>