|
下面是我的源码,我是用ADC+DMA采集的数据保存到缓冲区(g_adc3_dma_data1【1024】),然后我单独测试了一下ADC采集然后打印是没问题的,但是我插上U盘就有问题了,求大佬帮忙看一下
extern ApplicationTypeDef Appli_state;
void SystemClock_Config(void);
static void MPU_Config(void);
void MX_USB_HOST_Process(void);
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc)
{
if(hadc->Instance==ADC3)
{
g_adc3_dma_complete_flag = 2;//采集完成标志
HAL_ADC_Stop_DMA(&hadc3);
}
}
int main(void)
{
unsigned int counter;
MPU_Config();
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_DMA_Init();
MX_UART4_Init();
MX_FATFS_Init();
MX_ADC3_Init();
MX_USB_HOST_Init();
HAL_ADC_Start_DMA(&hadc3,(uint32_t *)g_adc3_dma_data1,ADC_DATA_LENGTH);
USBH_Init(&hUsbHostFS, USBH_UserProcess, HOST_FS);
USBH_RegisterClass(&hUsbHostFS, USBH_MSC_CLASS);
USBH_Start(&hUsbHostFS);
HAL_PWREx_EnableUSBVoltageDetector();
while (1)
{
// /* USER CODE END WHILE */
MX_USB_HOST_Process(); //可以识别U盘
if (Appli_state == APPLICATION_READY)
break;
}
if(g_adc3_dma_complete_flag == 2)
{
FRESULT res = f_mount(&USBHFatFS,"0:",1);// 挂载USB
if(res != FR_OK)
{ printf("MOUNT Error!");}
FRESULT res1 = f_open(&USBHFile,"0:/TEST.txt",FA_WRITE | FA_CREATE_ALWAYS | FA_OPEN_ALWAYS);
if(res1 != FR_OK)
{ printf("OPEN Error!");}
FRESULT res2 = f_write(&USBHFile,g_adc3_dma_data1,sizeof(g_adc3_dma_data1),&br);
if(res2 != FR_OK)
{ printf("WRITE Error!");}
else
{printf("WRITE Successful!");}
f_close(&USBHFile);// 关闭源文件
memset(g_adc3_dma_data1,0,ADC_DATA_LENGTH);//清除数据
g_adc3_dma_complete_flag = 0;
}
}
|
|