craft 发表于 2019-6-28 10:25:10

还能这么玩

hh748960295 发表于 2019-6-28 11:16:27

wenyangzeng 发表于 2019-6-28 10:02
ADC_RegularChannelConfig(ADC1, ADC_Channel_3, 1,ADC_SampleTime_144Cycles);
ADC_RegularChannelConfi ...

stm32L431里是不是这么写?

ADC_ChannelConfTypeDef sConfig;

/* ### - 3 - Channel configuration ######################################## */
sConfig.Channel      = ADC_CHANNEL_6|ADC_CHANNEL_7;                /* Sampled channel number */

sConfig.Rank         = ADC_REGULAR_RANK_1;          /* Rank of sampled channel number ADCx_CHANNEL */
sConfig.SamplingTime = ADC_SAMPLETIME_6CYCLES_5;   /* Sampling time (number of clock cycles unit) */
sConfig.SingleDiff   = ADC_SINGLE_ENDED;            /* Single-ended input channel */
sConfig.OffsetNumber = ADC_OFFSET_NONE;             /* No offset subtraction */
sConfig.Offset = 0;                                 /* Parameter discarded because offset correction is disabled */
HAL_ADC_ConfigChannel(&AdcHandle, &sConfig);

hh748960295 发表于 2019-6-28 11:17:03

hh748960295 发表于 2019-6-28 11:16
stm32L431里是不是这么写?

ADC_ChannelConfTypeDef sConfig;


还有我不想用dma,直接用轮询模式不行吗,?

hh748960295 发表于 2019-6-28 11:17:57

craft 发表于 2019-6-28 10:25
还能这么玩

???那该怎么搞,急求。。。需求很简单啊,就是stm32L431采集三个传感器的值,这仨传感器都是接AD口的、

wenyangzeng 发表于 2019-6-28 13:19:21

hh748960295 发表于 2019-6-28 11:16
stm32L431里是不是这么写?

ADC_ChannelConfTypeDef sConfig;


sConfig.Channel = ADC_CHANNEL_3;
sConfig.Rank = ADC_REGULAR_RANK_1;

sConfig.SamplingTime = ADC_SAMPLETIME_12CYCLES_5;
sConfig.SingleDiff = ADC_SINGLE_ENDED;
sConfig.OffsetNumber = ADC_OFFSET_NONE;
sConfig.Offset = 0;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
{
    _Error_Handler(__FILE__, __LINE__);
}


sConfig.Channel = ADC_CHANNEL_6;
sConfig.Rank = ADC_REGULAR_RANK_2;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
{
    _Error_Handler(__FILE__, __LINE__);
}


sConfig.Channel = ADC_CHANNEL_7;
sConfig.Rank = ADC_REGULAR_RANK_3;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
{
    _Error_Handler(__FILE__, __LINE__);
}


hh748960295 发表于 2019-6-28 16:14:30

wenyangzeng 发表于 2019-6-28 10:02
ADC_RegularChannelConfig(ADC1, ADC_Channel_3, 1,ADC_SampleTime_144Cycles);
ADC_RegularChannelConfi ...

这个函数在stm32L里是不是就对应HAL_ADC_ConfigChannel(&AdcHandle, &sConfig);?

hh748960295 发表于 2019-6-28 16:19:06

本帖最后由 hh748960295 于 2019-6-28 16:23 编辑

wenyangzeng 发表于 2019-6-28 13:19
sConfig.Channel = ADC_CHANNEL_3;
sConfig.Rank = ADC_REGULAR_RANK_1;

这是我定义的数组,然后读入值,再打印。完全看不懂啊,这个数组只是一个通道的值吧???第二个通道的怎么获得?
C:\Users\User\Desktop\360截图16591013112120106.png

wenyangzeng 发表于 2019-6-28 16:23:26

hh748960295 发表于 2019-6-28 16:14
这个函数在stm32L里是不是就对应HAL_ADC_ConfigChannel(&AdcHandle, &sConfig);?

楼主应该把2楼ST官方代码消化消化呀

hh748960295 发表于 2019-6-28 20:30:47

wenyangzeng 发表于 2019-6-28 16:23
楼主应该把2楼ST官方代码消化消化呀

嗯呢,看的那个代码。他定义的一个数组,
#define ADC_CONVERTED_DATA_BUFFER_SIZE   ((uint32_t)32)   /* Size of array aADCxConvertedData[] */
static uint16_t aADCxConvertedData;
然后把值写进去,
if (HAL_ADC_Start_DMA(&AdcHandle,
                        (uint32_t *)aADCxConvertedData,
                        ADC_CONVERTED_DATA_BUFFER_SIZE
                     ) != HAL_OK)
{
    //Error_Handler();
}

但是我现在不知道怎么从这个数组把俩通道上的值拿到,。
页: 1 [2]
查看完整版本: 有偿求stm32L431的DMA配置代码