📄 mmcmain.c
字号:
/*---------------------------------------------------------------------------------------------
* Name: MMCMAIN.C
* Purpose: SD卡主程序
* Version: V1.00
*--------------------------------------------------------------------------------------------*/
#include "config.h"
#include "spi_mmc.h"
#include "mmcmain.h"
uint32 BlockNum;
/*延时函数*/
void Delay(uint32 dly)
{
uint32 i;
for(; dly>0; dly--)
for(i=0; i<50000; i++);
}
/*蜂鸣器函数*/
void Beep(uint32 dly)
{
PINSEL0=0x0;
IO0DIR=BEEP;
IO0SET=BEEP;
Delay(dly-2);
IO0CLR=BEEP;
Delay(2);
}
/* 主函数 */
int main (void)
{
uint32 i;
uint8 state[1],CSD[16],MMCWRData[MMC_DATA_SIZE], MMCRDData[MMC_DATA_SIZE];
BlockNum=3000;
PINSEL1 = 0x40004000; //31:30->01 UP_LED 15:14->01 Vusb
IO1DIR = LED_MSK; //LED输出位设置
IO1SET = LED_MSK; //LED熄灭
SPI_Init(); //初始化SPI
for(i=0;i<MMC_DATA_SIZE;i++) //生成写入的数据
{
MMCWRData[i] = 0xBC;
}
IO1CLR = LED_CFG; //LED7
if ( mmc_init() != 0 ) //初始化SD卡
{ //初始化SD卡失败
IO0SET = SPI_SEL; //SSEL CS引脚置高
Beep(20);
Delay(10);
Beep(10);
Delay(10);
Beep(20);
Delay(10);
IO1SET = LED_MSK;
IO1CLR = LED_IE|LED_CFG;
while ( 1 ); //结束程序
}
//块操作
IO1SET = LED_MSK;
IO1CLR = LED_WR|LED_CFG; //写操作
do
{
mmc_read_csd(CSD);
mmc_read_state(state);
mmc_read_block(BlockNum,MMCRDData);
mmc_read_state(state);
mmc_write_block(BlockNum,MMCWRData);
mmc_read_state(state);
mmc_read_block(BlockNum,MMCRDData);
mmc_read_state(state);
BlockNum++;
}while(1);
/* mmc_read_block(BlockNum);
if ( mmc_write_block(BlockNum,MMCWRData) == 0 )
{
IO1SET = LED_MSK;
IO1CLR = LED_RD|LED_CFG; //读操作
mmc_read_block(BlockNum);
}
else //写操作失败
{
IO0SET = SPI_SEL; //SSEL CS引脚置高
IO1SET = LED_MSK;
IO1CLR = LED_WE|LED_CFG;
Beep(10);
Beep(10); //二声报警
while ( 1 ); //结束程序
}
for ( i = 0; i < MMC_DATA_SIZE; i++ ) //校验
{
if ( MMCRDData[i] != MMCWRData[i] )
{ //校验发生错误
IO1SET = SPI_SEL; //SSEL CS引脚置高
IO1SET = LED_MSK;
IO1CLR = LED_JE|LED_CFG;
Beep(200);
while ( 1 ); //结束程序
}
}
*/ for ( i = 0; i < MMC_DATA_SIZE; i++ ) //清空读缓冲区
MMCRDData[i] = 0x00;
Beep(50); //操作完成
IO1SET = LED_MSK;
IO1CLR = LED_DONE|LED_CFG;
while (1); //程序结束
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -