//Mini STM32开发板范例代码20
//SD卡 实验
//正点原子@ALIENTEK
//技术论坛:www.openedv.com
//u8 buf[512];//SD卡数据缓存区
//FIL *temp;
FIL fp;
FATFS fs;
DIR dir;
UINT bw;
char trs[7]={"hello!"};
char buffer[1024];
void newfile(void);
void newwenjian(void);
void write_file(void);
void read_file(void);
char name[25];
void uartsend(u8 *str)
{
while(*str!='\0')
{
USART1->DR=*str;
while((USART1->SR&0X40)==0);//等待发送结束
str++;
if(*str=='\0')
{
USART1->DR=0x0d;
while((USART1->SR&0X40)==0);//等待发送结束
USART1->DR=0x0A;
while((USART1->SR&0X40)==0);//等待发送结束
}
}
}
int main(void)
{
// u8 *pname;
Stm32_Clock_Init(9);//系统时钟设置
delay_init(72); //延时初始化
uart_init(72,9600); //串口1初始化
LCD_Init(); //初始化液晶
LED_Init(); //LED初始化
POINT_COLOR=RED;//设置字体为红色
LCD_ShowString(60,50,"Mini STM32");
while(SD_Initialize()!=0)//检测不到SD卡
{
LCD_ShowString(60,130,"SD Card Failed!");
delay_ms(500);
LCD_ShowString(60,130,"Please Check! ");
delay_ms(500);
LED0=!LED0;//DS0闪烁
}
//检测SD卡成功
LCD_ShowString(60,130,"SD Card Checked OK ");
if(f_mount(0,&fs))
{
LCD_ShowString(60,150,"SD Card NO");
}
newfile();
// delay_ms(10);
// newwenjian();
// f_close(&fp);
// write_file();
read_file();
while(1)
{
LED0=!LED0;
delay_ms(200);
}
}
void newfile(void)
{
u8 res;
res=f_mkdir("0:/PHOTO");
if(res!=FR_EXIST&&res!=FR_OK) //发生了错误
{
LCD_ShowString(60,150,"SD");
}
}
void newwenjian(void)
{
u8 res;
res=f_open(&fp,(const TCHAR*)"0:/PHOTO/PIO.txt",FA_OPEN_ALWAYS);
if(res)
{
LCD_ShowString(60,170,"sorry");
}
}
void write_file(void)
{
u8 res;
res=f_opendir(&dir,(TCHAR*)"0:/PHOTO");
res=f_open(&fp,(const TCHAR*)"0:/PHOTO/PIO.txt",FA_OPEN_ALWAYS | FA_WRITE);
// f_lseek(&fp,(*temp).fsize);
res=f_write(&fp,&trs,sizeof(trs),&bw);
if(res)
{
LCD_ShowString(60,170,"im sorry");
}
f_close(&fp);
}
void read_file(void)
{
u8 res;
f_opendir(&dir,(TCHAR*)"0:/PHOTO");
f_open(&fp,(const TCHAR*)"0:/PHOTO/PIC00000.jpg",FA_OPEN_ALWAYS | FA_READ);
while(1)
{
res=f_read(&fp,buffer,sizeof(buffer),&bw);
// if(res)
// {
// LCD_ShowString(60,190,"read file");
// }
printf("%s",buffer);
if(res||bw==0)
{
LCD_ShowString(60,170,"the file is over");
break;
}
}
}