0

我正在尝试编译 LoRaFi 库中包含的示例,用于 SX1272 LoRa 无线电帽和 STM32 IoT 节点发现套件。这是一个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();
}
4

1 回答 1

0

不幸的是,这是一个写得很糟糕的库。你有冲突的符号。

注释,#define CRC ....因为您不会使用硬件 CRC。

于 2020-08-05T22:40:10.533 回答