新手入门
- 积分
- 31
- 金钱
- 31
- 注册时间
- 2012-4-15
- 在线时间
- 0 小时
|
从f_read 赋值里 把buffer赋值给zijitext后, 在关闭201205.TXT里能够通过超级终端显示hello,之后在主函数里就不能显示,求解。
#include "stm32f10x.h"
#include "usart1.h"
#include "sdcard.h"
#include "ff.h"
#include "diskio.h"
#include <string.h>
/* 变量定义 */
SD_CardInfo SDCardInfo; /* 存放SD卡的信息 */
FATFS fs[2]; // Work area (file system object) for logical drive
FIL fsrc, fdst; // file objects
BYTE buffer[512]; // file copy buffer
int a = 0;
FRESULT res; // FatFs function common result code
UINT br, bw; // File R/W count
char path[512]="0:";
uint8_t textFileBuffer[] = "20120416";
uint8_t metext[]="hello";
char zijitext[20];
/* 函数声明 */
void NVIC_Configuration(void);
SD_Error SD_USER_Init(void);
void OutPutFile(void);
FRESULT scan_files (char* path);
int SD_TotalSize(void);
int main(void)
{
SystemInit();/* config the sysclock to 72M */
USART1_Config(); /* USART1 config */
NVIC_Configuration(); /* Interrupt Config */
disk_initialize( 0 ); /* SD 卡硬件初始化,非常重要 */
/*--------------- 在SD卡里面创建一个文件并将缓冲区的内容写到文件中 ---------------*/
/* 在文件系统中注册一个工作区 */
f_mount(0, &fs[0]);
res = f_open( &fsrc , "0:/201204.TXT" , FA_OPEN_ALWAYS | FA_WRITE); /* 在刚刚注册的工作区中打开一个文件,如果文件不存在则创建该文件,属性为可写 */
res = f_write(&fsrc, textFileBuffer, sizeof(textFileBuffer), &br); /* 将缓冲区的数据写到文件中 */
f_close(&fsrc); /*关闭文件 */
res = f_open(&fsrc, "0:/201204.TXT", FA_OPEN_EXISTING | FA_READ); /* 打开文件 */
br = 1;
a = 0;
for (;;)
{
for ( a=0; a<512; a++ ) /* 清缓冲区 */
buffer[a]=0;
res = f_read( &fsrc, buffer, sizeof(buffer), &br ); /* 将文件里面的内容读到缓冲区 */
printf("\r\n %s ", buffer);
if (res || br == 0) break; /* 错误或者到了文件尾 */
}
f_close(&fsrc); /* 关闭打开的文件 */
// 写201205.txt
res = f_open( &fsrc , "0:/201205.TXT" , FA_OPEN_ALWAYS | FA_WRITE);
res = f_lseek(&fsrc , 0);
res = f_write(&fsrc, metext, sizeof(metext), &br);
f_close(&fsrc);
res = f_open(&fsrc, "0:/201205.TXT", FA_OPEN_EXISTING | FA_READ); /* 打开文件 */
br = 1;
a = 0;
for (;;)
{
for ( a=0; a<512; a++ ) /* 清缓冲区 */
buffer[a]=0;
res = f_read( &fsrc, buffer, sizeof(buffer), &br ); /* 将文件里面的内容读到缓冲区 */
for(a=0;a<20;a++)
zijitext[a] = buffer[a];
printf("\r\n %s ", zijitext); ///通过超级终端可以显示hello
if (res || br == 0) break; /* 错误或者到了文件尾 */
}
f_close(&fsrc); /* 关闭打开的文件 */
printf("\r\n %s ", zijitext); ///这一语句在超级终端不显示hello
while (1)
{
}
}
SD_Error SD_USER_Init(void)
{
SD_Error Status = SD_OK;
/* SD Init */
Status = SD_Init();
if (Status == SD_OK)
{
/* Read CSD/CID MSD registers */
Status = SD_GetCardInfo( &SDCardInfo );
}
if (Status == SD_OK)
{
/* Select Card */
Status = SD_SelectDeselect( (u32) (SDCardInfo.RCA << 16) );
}
if (Status == SD_OK)
{
/* set bus wide */
Status = SD_EnableWideBusOperation( SDIO_BusWide_1b );
}
/* Set Device Transfer Mode to DMA */
if (Status == SD_OK)
{
/* 任选一种都可以工作 */
Status = SD_SetDeviceMode( SD_DMA_MODE );
//Status = SD_SetDeviceMode( SD_POLLING_MODE );
//Status = SD_SetDeviceMode( SD_INTERRUPT_MODE );
}
return ( Status );
}
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); /* Configure the NVIC Preemption Priority Bits */
NVIC_InitStructure.NVIC_IRQChannel = SDIO_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
} |
|