Необъяснимая ошибка: ожидаемая ошибка токена ')' перед '*' в заголовочном файле устройства при попытке скомпилировать проект STM32duino с использованием библиотеки LoRaFi

Я пытаюсь скомпилировать пример, включенный в библиотеку LoRaFi, для использования с радиошляпой SX1272 LoRa и комплектом обнаружения узлов IoT STM32. Это проект STM32duino.

Ошибка конкретно указывает на заголовок устройства узла IoT, включенный в пакет STM32core.

C:\Users\monou\Documents\ArduinoData\packages\STM32\hardware\stm32\1.9.0\system/Drivers/CMSIS/Device/ST/STM32L4xx/Include/stm32l475xx.h:1397:43: error: expected ')' before '*' token
 1397 | #define CRC                 ((CRC_TypeDef *) CRC_BASE)
      |                              ~            ^
C:\Users\monou\Documents\Arduino\libraries\LoRaFi\src/LoRaFi.h:122:8: note: in expansion of macro 'CRC'
  122 |   void CRC(uint8_t crc = ON);
      |        ^~~

Эта ошибка не имеет для меня никакого смысла, так как структура CRC_TypeDef хорошо определена в самом заголовке.

typedef struct
{
  __IO uint32_t DR;          /*!< CRC Data register,                           Address offset: 0x00 */
  __IO uint8_t  IDR;         /*!< CRC Independent data register,               Address offset: 0x04 */
  uint8_t       RESERVED0;   /*!< Reserved,                                                    0x05 */
  uint16_t      RESERVED1;   /*!< Reserved,                                                    0x06 */
  __IO uint32_t CR;          /*!< CRC Control register,                        Address offset: 0x08 */
  uint32_t      RESERVED2;   /*!< Reserved,                                                    0x0C */
  __IO uint32_t INIT;        /*!< Initial CRC value register,                  Address offset: 0x10 */
  __IO uint32_t POL;         /*!< CRC polynomial register,                     Address offset: 0x14 */
} CRC_TypeDef;

за которым следует собственное определение CRC

#define FLASH               ((FLASH_TypeDef *) FLASH_R_BASE)
#define CRC                 ((CRC_TypeDef *) CRC_BASE)
#define TSC                 ((TSC_TypeDef *) TSC_BASE)

Радио LoRa требует включения CRC, поэтому я не могу просто закомментировать неправильный код в LoRaFi.h. Я понятия не имею, как это исправить. CRC_TypeDef определен правильно, CRC также должен быть определяемым.

Любая помощь приветствуется.

Если это поможет, вот пример, предоставленный LoRaFi. Стоит отметить, что эта ошибка возникает во всех приведенных примерах, а не только в этом.

// LoRaFi receiving data using interrupt

#include <LoRaFi.h>

  //creat object to call functions of LoRaFi library
  LoRaFi LoRaFi;

  const int messageLength = 11;
  char message[messageLength];


void setup() {
  
  //initialize serial communication
  Serial.begin(9600);
  delay(100);

  //initialize LoRa module
  LoRaFi.begin();
  delay(100);

  // activate the interrupt on LoRaFi receiving
  LoRaFi.ReceivingInterrupt(receiveMessage);

}

void loop() {

  //Just waiting the interrupt and do nothing
  delay(1000);

}

//callback function to receve the temperature and humidity using interrupt routine
void receiveMessage()
{
  Serial.print("Received Message: ");

  //Receive message
  LoRaFi.ReceivePackage(message,messageLength);

  //Print received message
  int i;
  for(i=0; i<messageLength; i++)
  {
  Serial.print(message[i]);
  }
  Serial.println();
}

person ClockworkSlime    schedule 05.08.2020    source источник


Ответы (1)


К сожалению, это плохо написанная библиотека. У вас есть конфликтующие символы.

Прокомментируйте #define CRC ...., так как вы не будете использовать аппаратный CRC.

person 0___________    schedule 05.08.2020