我正在尝试编译 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();
}