初级会员

- 积分
- 128
- 金钱
- 128
- 注册时间
- 2018-4-22
- 在线时间
- 39 小时
|
发表于 2018-9-19 17:21:06
|
显示全部楼层
我也遇到同样的问题, RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); 注释掉,LCD正常显示,不注释,LCD就白屏。[mw_shl_code=c,true]
void ADC12_Init(void)
{
ADC_InitTypeDef ADC_InitStructure;
DMA_InitTypeDef DMA_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); //??DMA??
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1|RCC_APB2Periph_ADC2,ENABLE); //??ADC??
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //??GPIO??
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;
GPIO_Init(GPIOA,&GPIO_InitStructure);
ADC_DeInit(ADC1); //??ADC1
RCC_ADCCLKConfig(RCC_PCLK2_Div6); //??ADC??,72/6=12MHz
//-----------ADC1????----------------------------------
ADC_InitStructure.ADC_Mode=ADC_Mode_RegSimult; //ADC??????
ADC_InitStructure.ADC_ScanConvMode=ENABLE; //?????
ADC_InitStructure.ADC_ContinuousConvMode=ENABLE; //??????
ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;//??????????????
ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;//ADC?????
ADC_InitStructure.ADC_NbrOfChannel=2; //?????????ADC????4
ADC_Init(ADC1,&ADC_InitStructure); //???ADC1
ADC_RegularChannelConfig(ADC1,ADC_Channel_1,1,ADC_SampleTime_71Cycles5); //ADC_Test1??
ADC_RegularChannelConfig(ADC1,ADC_Channel_3, 2,ADC_SampleTime_71Cycles5); //ADC_Test2??
//-----------ADC2????----------------------------------
ADC_InitStructure.ADC_Mode=ADC_Mode_RegSimult; //ADC??????
ADC_InitStructure.ADC_ScanConvMode=ENABLE; //?????
ADC_InitStructure.ADC_ContinuousConvMode=ENABLE; //??????
ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;//??????????????
ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;//ADC?????
ADC_InitStructure.ADC_NbrOfChannel=2; //?????????ADC????4
ADC_Init(ADC2,&ADC_InitStructure); //???ADC1
ADC_RegularChannelConfig(ADC2,ADC_Channel_2 ,1,ADC_SampleTime_71Cycles5); //FreeBack1??
ADC_RegularChannelConfig(ADC2,ADC_Channel_4 , 2,ADC_SampleTime_71Cycles5); //FreeBack2??
ADC_ExternalTrigConvCmd(ADC2, ENABLE); //??ADC2??????
//------------DMA????----------------------------------
DMA_DeInit(DMA1_Channel1); //?DMA???x?????????
DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)&ADC1->DR; //DMA?????
DMA_InitStructure.DMA_MemoryBaseAddr = (u32)AD_Value; //DMA?????
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; //??????,?????
DMA_InitStructure.DMA_BufferSize = M*N; //DMA???DMA?????
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //?????????
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //?????????
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word; //?????32?
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word; //?????32?
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; //?????????
DMA_InitStructure.DMA_Priority = DMA_Priority_High; //DMA?? x???????
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable; //DMA??x????????????
DMA_Init(DMA1_Channel1, &DMA_InitStructure); //??DMA_InitStruct?????????DMA???USART1_Tx_DMA_Channel???????
DMA_Cmd(DMA1_Channel1,ENABLE); //??DMA??
ADC_Cmd(ADC1,ENABLE); //??ADC1
ADC_Cmd(ADC2,ENABLE); //??ADC2
ADC_ResetCalibration(ADC1); //??????
while(ADC_GetResetCalibrationStatus(ADC1)); //????????
ADC_StartCalibration(ADC1); //??AD??
while(ADC_GetCalibrationStatus(ADC1)); //??????
ADC_ResetCalibration(ADC2); //??????
while(ADC_GetResetCalibrationStatus(ADC2)); //????????
ADC_StartCalibration(ADC2); //??AD??
while(ADC_GetCalibrationStatus(ADC2)); //??????
ADC_DMACmd(ADC1, ENABLE); //ADC1 DMA??????
ADC_SoftwareStartConvCmd(ADC1,ENABLE); //?????ADC1???????
}
void DMA1_Channel1_IRQHandler(void) //DMA?????????,???????????
{
if(DMA_GetITStatus(DMA1_IT_TC1) != RESET)
{
DMA_ClearITPendingBit(DMA1_IT_TC1);
// filter();
}
}[/mw_shl_code]
|
|