初级会员

- 积分
- 51
- 金钱
- 51
- 注册时间
- 2018-4-15
- 在线时间
- 10 小时
|
11金钱
通过Cube配置adc参数,在执行完MX_ADC1_Init语句后ADC没有被配置。
具体情况如图(ADC初始化无效):。
可以看到,在执行完MX_ADC1_Init语句后,右侧的ADC寄存器全都是0。
作为对比,这是一张正确执行该语句后的效果图(ADC初始化成功):。
在正确执行后,右侧的几个控制寄存器应该会被配置为相应值。
我再次尝试进入该函数内部单步执行,ADC参数初始化和通道初始化两个子函数返回状态都是HAL_OK。但是寄存器依然没有被配置。
最后附上我的ADC初始化参数设置代码:
void MX_ADC1_Init(void)
{
ADC_ChannelConfTypeDef sConfig = {0};
/**Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion) */
hadc1.Instance = ADC1;
hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;
hadc1.Init.Resolution = ADC_RESOLUTION_12B;
hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
hadc1.Init.ContinuousConvMode = DISABLE;
hadc1.Init.DiscontinuousConvMode = DISABLE;
hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
hadc1.Init.NbrOfConversion = 1;
hadc1.Init.DMAContinuousRequests = DISABLE;
hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
if (HAL_ADC_Init(&hadc1) != HAL_OK)
{
Error_Handler();
}
/**Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time. */
sConfig.Channel = ADC_CHANNEL_2;
sConfig.Rank = ADC_REGULAR_RANK_1;
sConfig.SamplingTime = ADC_SAMPLETIME_112CYCLES;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
{
Error_Handler();
}
}
|
-
ADC初始化无效
-
ADC初始化成功
-
参数初始化
-
通道初始化
|