В типах отдельных указателей отсутствует приведение в c - PullRequest
0 голосов
/ 17 февраля 2020

Я использую пример кода I-куба ST32 и пытаюсь запустить AD C с помощью следующего кода:

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){

Что я делаю не так?

Цените помощь!

1 Ответ

1 голос
/ 17 февраля 2020

Я почти уверен, что 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 - нет.

...