你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
wenyangzeng 发表于 2019-6-28 10:02 ADC_RegularChannelConfig(ADC1, ADC_Channel_3, 1,ADC_SampleTime_144Cycles); ADC_RegularChannelConfi ...
hh748960295 发表于 2019-6-28 11:16 stm32L431里是不是这么写? ADC_ChannelConfTypeDef sConfig;
wenyangzeng 发表于 2019-6-28 16:23 楼主应该把2楼ST官方代码消化消化呀
查看全部评分
wenyangzeng 发表于 2019-6-26 11:14 ST官方的代码改一下就可以了呀。
hh748960295 发表于 2019-6-26 15:37 他的配置是配置了ADC1_IN9(PA9),直接在HAL_ADC_MspInit这个函数里配置好了。、如果我是三个传感器,用到 ...
wenyangzeng 发表于 2019-6-26 16:22 ADC扫描方式就OK了
hh748960295 发表于 2019-6-26 20:20 最后的值是存在一个数组里了?数组的长度是通道数吗?比如我用三个传感器,三个通道,长度就是3 ? ...
wenyangzeng 发表于 2019-6-27 07:14 当然存在数组里了。
hh748960295 发表于 2019-6-27 08:41 三个传感器的话(三通道),应该是个二维数组吧?
wenyangzeng 发表于 2019-6-27 10:04 如果是单次转换是1维数组,多次转换当然要二维数组了。
hh748960295 发表于 2019-6-28 08:14 单次转换和多次转换有什么区别呢? 如果我是三个传感器,用到ADC1_IN3 ADC1_IN6 ADC1_IN7 分别对应pin口 ...
craft 发表于 2019-6-28 10:25 还能这么玩
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);
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__);
}
嗯呢,看的那个代码。他定义的一个数组,
#define ADC_CONVERTED_DATA_BUFFER_SIZE ((uint32_t) 32) /* Size of array aADCxConvertedData[] */
static uint16_t aADCxConvertedData[ADC_CONVERTED_DATA_BUFFER_SIZE];
然后把值写进去,
if (HAL_ADC_Start_DMA(&AdcHandle,
(uint32_t *)aADCxConvertedData,
ADC_CONVERTED_DATA_BUFFER_SIZE
) != HAL_OK)
{
//Error_Handler();
}
但是我现在不知道怎么从这个数组把俩通道上的值拿到,。
ST官方的代码改一下就可以了呀。
评分
查看全部评分
他的配置是配置了ADC1_IN9(PA9),直接在HAL_ADC_MspInit这个函数里配置好了。、如果我是三个传感器,用到ADC1_IN3 ADC1_IN6 ADC1_IN7 分别对应pin口:pc2 pa2 pa1。。该怎么配置。把HAL_ADC_MspInit这个函数加个参数吗???
ADC扫描方式就OK了
最后的值是存在一个数组里了?数组的长度是通道数吗?比如我用三个传感器,三个通道,长度就是3
?
当然存在数组里了。
三个传感器的话(三通道),应该是个二维数组吧?
如果是单次转换是1维数组,多次转换当然要二维数组了。
单次转换和多次转换有什么区别呢?
如果我是三个传感器,用到ADC1_IN3 ADC1_IN6 ADC1_IN7 分别对应pin口:pc2 pa2 pa1。。应该怎么转换
ADC_RegularChannelConfig(ADC1, ADC_Channel_3, 1,ADC_SampleTime_144Cycles);
ADC_RegularChannelConfig(ADC1, ADC_Channel_6, 2,ADC_SampleTime_144Cycles);
ADC_RegularChannelConfig(ADC1, ADC_Channel_7, 3,ADC_SampleTime_144Cycles);
还有我不想用dma,直接用轮询模式不行吗,?
???那该怎么搞,急求。。。需求很简单啊,就是stm32L431采集三个传感器的值,这仨传感器都是接AD口的、