0

我正在使用 ST32 I-cube 示例代码并尝试使用以下代码启动 ADC:

ADC_HandleTypeDef hadc;

void HAL_ADC_MspInit(ADC_HandleTypeDef *hadc) {

  if(hadc->Instance==ADC){

  GPIO_InitTypeDef GPIO_InitStruct={0};

  /*##-1- Enable peripherals and GPIO Clocks #################################*/
  /* Enable GPIO clock ****************************************/
  __HAL_RCC_GPIOA_CLK_ENABLE();
  /* ADC1 Periph clock enable */

  /*##- 2- Configure peripheral GPIO #########################################*/
  /* ADC3 Channel8 GPIO pin configuration */
  GPIO_InitStruct.Pin = GPIO_PIN_0;
  GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
.........
}

编译器在行上给我一个“不同指针类型的比较缺少强制转换”的警告:

if(hadc->Instance==ADC){

我做错了什么?

感谢帮助!

4

1 回答 1

1

我几乎可以肯定这ADC不是一个有效的实例,你应该使用ADC1(或 2 或其他)来代替。

查看 STM32 头文件之一显示:

// stm32f030x6.h
...
#define ADC1       ((ADC_TypeDef *) ADC1_BASE)
#define ADC        ((ADC_Common_TypeDef *) ADC_BASE) /* Kept for legacy purpose */
...

这向我建议您可能一直在查看一个旧示例,该示例仍然存在,因此它不是未定义的符号,但ADC1具有它正在寻找的类型,而ADC没有。

于 2020-02-17T18:43:45.493 回答