📄 main.c
字号:
#include "AT91SAM7S64.h"
#include "Board.h"
#include "datatype.h"
#include "spi.h"
#include "fat.h"
extern Byte gl_buffer[];
extern Byte fat_is_fat16; /* TRUE: FAT16 - FALSE: FAT12 */
extern Byte fat_is_fat32; /* TRUE: FAT32 - FALSE: FAT12/FAT16 */
Byte SPI_Init = 1;
//------------------------------------------------------------------------
void DbguSend(INT8U a)
{
while(!(*AT91C_DBGU_CSR & 0x00000200));
*AT91C_DBGU_THR = a;
}
//------------------------------------------------------------------------
void DBGU_Print(char* pString)
{
while(*pString)
{
while(! (*AT91C_DBGU_CSR & 0x00000200));
*AT91C_DBGU_THR = *pString ++;
}
}
//------------------------------------------------------------------------
void vDebugUintInit()
{
*AT91C_PIOA_PDR |= DBUG_MASK; //PIO Disable
*AT91C_PIOA_ASR |= DBUG_MASK; //A,B Peripheral,select A
*AT91C_PIOA_PPUDR |= DBUG_MASK; //Pull-up disable
*AT91C_DBGU_BRGR = 48; //CD = 48. Baud Rate = MCK/(16*CD)
*AT91C_DBGU_MR = 0x00000800; //Normal Mode,
*AT91C_DBGU_CR = 0x00000040; //TXEN = 1;
}
//------------------------------------------------------------------------
void Main(void)
{
INT8U mark=0;
// #define FILE_START_SECTOR 555
// #define FILE_END_SECTOR (11668+4)
#define FILE_START_SECTOR 33319
#define FILE_END_SECTOR 43319
INT16U i;
INT16U j;
INT32U u32FileSector;
INT16U u16Offset;
fat_is_fat16 = 0;
fat_is_fat32 = 0;
//vSpiInit();
vDebugUintInit();
PIO_Init();
VS1003_CS_HIGH();
VS1003_RST_LOW();
delay(0xffff);
delay(0xffff);
VS1003_RST_HIGH();
delay(0xffff);
while(!vGet_DREQ());
VS1003_SCI_Write(0x03,0x9000);
while(!vGet_DREQ());
VS1003_SCI_Write(0x02,0x1fff);
while(!vGet_DREQ());
VS1003_SCI_Write(0x0b,0x3030);
RESTART:
if(MMC_Init() != 1)
{
*AT91C_PIOA_CODR = LED1;
goto RESTART;
}
SPI_Init = 0;
//-----------------test---------------
/*vMmcReadSector(523,gl_buffer);
for(i=0; i<512; i++)
{
DbguSend(gl_buffer[i]);
}
while(1);*/
//--------------------------------------
if( fat_install() )
DBGU_Print("xyz");
if(fat_is_fat16)
DBGU_Print("fat16\n");
if(fat_is_fat32)
DBGU_Print("fat32\n");
while(1)
{
for(u32FileSector=FILE_START_SECTOR; u32FileSector<=FILE_END_SECTOR; u32FileSector++)
{
if(mark ==0 )
{
mark = 1;
*AT91C_PIOA_CODR = LED1;
}
else
{
mark = 0;
*AT91C_PIOA_SODR = LED1;
}
vMmcReadSector(u32FileSector, gl_buffer);
u16Offset = 0;
while(u16Offset < 510)
{
while(!vGet_DREQ());
VS1003_SDI_Write(&gl_buffer[u16Offset], 32);
u16Offset += 32;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -