初级会员

- 积分
- 76
- 金钱
- 76
- 注册时间
- 2014-10-22
- 在线时间
- 1 小时
|
5金钱
ADC双通道采集的数据,经过DMA传输的内存(buf[512]数组)中,然后保存到SD卡(没有文件系统,直接保存到SD卡的扇区)中,然后打印出SD卡扇区中的数据时,只有256个数据,剩余的256个数据全是0.但是我打印出内存中的数据是正确的512个数据。求解各位高手。。。
main()
#include <stm32f10x.h>
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include "exti.h"
#include "wdg.h"
#include "timer.h"
#include "lcd.h"
#include "wkup.h"
#include "adc.h"
#include "dma.h"
#include "mmc_sd.h"
//Mini STM32开发板范例代码13
//ADC 实验
//正点原子@ALIENTEK
//技术论坛:www.openedv.com
u16 AD_Value[512];
u16 Send_buf_Ch0[512];
u16 Send_buf_Ch1[512];
int main(void)
{ u32 sector_size;
u16 i;
// u8 t;
SystemInit();//系统时钟设置
delay_init(72); //延时初始化
uart_init(9600); //串口1初始化
Adc_Init();
MYDMA_Config(DMA1_Channel1,(u32)&ADC1->DR,(u32)AD_Value,512); //DMA1通道1初始化配置
MYDMA_Enable(DMA1_Channel1); //开启DMA通道1
LED_Init();
KEY_Init();
LCD_Init();
POINT_COLOR=RED;//设置字体为红色
LCD_ShowString(60,50,"Mini STM32");
LCD_ShowString(60,70,"SD Card TEST");
LCD_ShowString(60,90,"ATOM@ALIENTEK");
LCD_ShowString(60,110,"2011/1/1");
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 ");
sector_size=SD_GetSectorCount();
printf(" SD Sector Size:%x\n",sector_size);
LCD_ShowString(60,150,"SD Card Size: Mb");
LCD_ShowNum(164,150,sector_size>>11,5,16);
while(DMA1->ISR&(1<<1))//等待通道1传输完成
{
DMA1->IFCR|=1<<1; //清除传输完成标志
for(i=0;i<512;i++)
{
Send_buf_Ch1=512;
}
SD_WriteDisk((u8*)Send_buf_Ch1,21,1);
LCD_ShowString(60,170,"xie ru ok");
}
while(1){
if(SD_ReadDisk((u8*)Send_buf_Ch0,21,1)==0)//读取MBR扇区
{
LCD_ShowString(60,170,"USART1 Sending Data...");
printf("SECTOR 0 DATA:\n");
for(sector_size=0;sector_size<512;sector_size++)printf("%d ",Send_buf_Ch0[sector_size]);//打印MBR扇区数据
printf("\nDATA ENDED\n");
LCD_ShowString(60,170,"USART1 Send Data Over!");
}
}
|
|