初级会员

- 积分
- 70
- 金钱
- 70
- 注册时间
- 2015-10-24
- 在线时间
- 26 小时
|
1金钱
- #include "adc.h"
- /* USER CODE BEGIN 0 */
- volatile uint32_t ADC_ConvertedValue[2]={0,0};
- #define ADC1_DR_Address ((u32)0x40012400+0x4c)
- /* USER CODE END 0 */
- /* ADC1 init function */
- void MX_ADC1_Init(void)
- {
- LL_ADC_InitTypeDef ADC_InitStruct = {0};
- LL_ADC_CommonInitTypeDef ADC_CommonInitStruct = {0};
- LL_ADC_REG_InitTypeDef ADC_REG_InitStruct = {0};
- LL_GPIO_InitTypeDef GPIO_InitStruct = {0};
- /* Peripheral clock enable */
- LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_ADC1);
- LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOA);
- /**ADC1 GPIO Configuration
- PA0-WKUP ------> ADC1_IN0
- PA1 ------> ADC1_IN1
- */
- GPIO_InitStruct.Pin = LL_GPIO_PIN_0|LL_GPIO_PIN_1;
- GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG;
- LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
- /* ADC1 DMA Init */
- /* ADC1 Init */
- LL_DMA_SetDataTransferDirection(DMA1, LL_DMA_CHANNEL_1, LL_DMA_DIRECTION_PERIPH_TO_MEMORY);
- LL_DMA_SetChannelPriorityLevel(DMA1, LL_DMA_CHANNEL_1, LL_DMA_PRIORITY_HIGH);
- LL_DMA_SetMode(DMA1, LL_DMA_CHANNEL_1, LL_DMA_MODE_CIRCULAR);
- LL_DMA_SetPeriphIncMode(DMA1, LL_DMA_CHANNEL_1, LL_DMA_PERIPH_NOINCREMENT);
- LL_DMA_SetMemoryIncMode(DMA1, LL_DMA_CHANNEL_1, LL_DMA_MEMORY_INCREMENT);
- LL_DMA_SetPeriphSize(DMA1, LL_DMA_CHANNEL_1, LL_DMA_PDATAALIGN_HALFWORD);
- LL_DMA_SetMemorySize(DMA1, LL_DMA_CHANNEL_1, LL_DMA_MDATAALIGN_HALFWORD);
- /* ADC1 interrupt Init */
- NVIC_SetPriority(ADC1_2_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),2, 0));
- NVIC_EnableIRQ(ADC1_2_IRQn);
- /** Common config
- */
- ADC_InitStruct.DataAlignment = LL_ADC_DATA_ALIGN_RIGHT;
- ADC_InitStruct.SequencersScanMode = LL_ADC_SEQ_SCAN_ENABLE;
- LL_ADC_Init(ADC1, &ADC_InitStruct);
- ADC_CommonInitStruct.Multimode = LL_ADC_MULTI_INDEPENDENT;
- LL_ADC_CommonInit(__LL_ADC_COMMON_INSTANCE(ADC1), &ADC_CommonInitStruct);
- ADC_REG_InitStruct.TriggerSource = LL_ADC_REG_TRIG_SOFTWARE;
- ADC_REG_InitStruct.SequencerLength = LL_ADC_REG_SEQ_SCAN_ENABLE_2RANKS;
- ADC_REG_InitStruct.SequencerDiscont = LL_ADC_REG_SEQ_DISCONT_DISABLE;
- ADC_REG_InitStruct.ContinuousMode = LL_ADC_REG_CONV_CONTINUOUS;
- ADC_REG_InitStruct.DMATransfer = LL_ADC_REG_DMA_TRANSFER_UNLIMITED;
- LL_ADC_REG_Init(ADC1, &ADC_REG_InitStruct);
- /** Configure Regular Channel
- */
- LL_ADC_REG_SetSequencerRanks(ADC1, LL_ADC_REG_RANK_1, LL_ADC_CHANNEL_0);
- LL_ADC_SetChannelSamplingTime(ADC1, LL_ADC_CHANNEL_0, LL_ADC_SAMPLINGTIME_55CYCLES_5);
- /** Configure Regular Channel
- */
- LL_ADC_REG_SetSequencerRanks(ADC1, LL_ADC_REG_RANK_2, LL_ADC_CHANNEL_1);
- LL_ADC_SetChannelSamplingTime(ADC1, LL_ADC_CHANNEL_1, LL_ADC_SAMPLINGTIME_55CYCLES_5);
- }
- /* USER CODE BEGIN 1 */
- void ADC_DMA_Config_Start(void)
- {
- LL_DMA_SetChannelPriorityLevel(DMA1, LL_DMA_CHANNEL_1, LL_DMA_PRIORITY_LOW);
- LL_DMA_SetMemoryAddress(DMA1,LL_DMA_CHANNEL_1,(uint32_t)ADC_ConvertedValue);
- LL_DMA_SetPeriphAddress(DMA1,LL_DMA_CHANNEL_1,LL_ADC_DMA_GetRegAddr(ADC1,LL_ADC_DMA_REG_REGULAR_DATA));
- LL_DMA_SetDataLength(DMA1,LL_DMA_CHANNEL_1, sizeof(ADC_ConvertedValue));
- LL_DMA_EnableChannel(DMA1,LL_DMA_CHANNEL_1);
- LL_ADC_Enable(ADC1);
- LL_ADC_StartCalibration(ADC1);
- while(LL_ADC_IsCalibrationOnGoing(ADC1));
- LL_ADC_REG_StartConversionSWStart(ADC1);
- }
复制代码
程序就是添加了这个adc单元,现在main里面已添加void ADC_DMA_Config_Start(),LCD就没显示,注释掉后LCD就显示正常,检查了几次里面没设计LCD SPI(硬件) 的内容啊?
请大家帮忙看看呢? |
|