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:16
stm32L431里是不是这么写?
ADC_ChannelConfTypeDef sConfig;
还有我不想用dma,直接用轮询模式不行吗,? craft 发表于 2019-6-28 10:25
还能这么玩
???那该怎么搞,急求。。。需求很简单啊,就是stm32L431采集三个传感器的值,这仨传感器都是接AD口的、 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__);
}
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: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
hh748960295 发表于 2019-6-28 16:14
这个函数在stm32L里是不是就对应HAL_ADC_ConfigChannel(&AdcHandle, &sConfig);?
楼主应该把2楼ST官方代码消化消化呀 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]