做向串口发数据,写在SD卡中,然后串口调试助手显示SD卡内容。
u8 buf[512];//SD卡数据缓存区
int main(void)
{
u32 sd_size;
u8 a=0,flag=0;
u8 t;
u8 len;
Stm32_Clock_Init(9);//系统时钟设置
delay_init(72); //延时初始化
uart_init(72,9600); //串口1初始化
LCD_Init(); //初始化液晶
LED_Init(); //LED初始化
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 ");
LCD_ShowString(60,150,"SD Card Size: Mb");
sd_size=SD_GetSectorCount();//得到扇区数
LCD_ShowNum(164,150,sd_size>>11,5,16);//显示SD卡容量
while(1)
{
if(a==30)//每6s钟执行一次
{
if(SD_WriteDisk(buf,0,1)==0)//写MBR扇区
{
if(USART_RX_STA&0x80)
{
len=USART_RX_STA&0x3f;//得到此次接收到的数据长度
for(t=0;t<len;t++)
{
buf[sd_size]=USART_RX_BUF[t];
sd_size++;
}
USART_RX_STA=0;
flag=1;
}
}
while(flag)
{
if(SD_ReadDisk(buf,0,1)==0)//读取MBR扇区
{
LED0=!LED0;
LCD_ShowString(60,170,"USART1 Sending Data...");
printf("SECTOR 0 DATA:\n");
for(sd_size=0;sd_size<512;sd_size++)printf("%x ",buf[sd_size]);//打印MBR扇区数据
printf("\nDATA ENDED\n");
LCD_ShowString(60,170,"USART1 Send Data Over!");
flag=0;
}
}
a=0;
}
a++;
delay_ms(200);
}
}
但是程序不能收到 我用串口助手发的数据(按照要求 以回车键结尾),串口的中断我也使能了,没看出有什么问题,也对照了以往的串口实验代码,没看出有问题啊 求指教!
|