我在MPLABX C项目中包含我的库时遇到问题。该库使用另一个库。
编译项目时,出现错误:
../src/NGSC.h:169:31: error: unknown type name 'ADSConstant'
void NGSCSetTestMode(uint8_t, ADSConstant, ADSConstant);
这是我的NGSC.h
#ifndef NGSC_H /* Guard against multiple inclusion */
#define NGSC_H
#include "ads1299.h"
/*******************************************************************************
* TYPES DEFINITION
******************************************************************************/
typedef enum {
NGSCCheckHeadingState,
NGSCCheckStartOfPacketState,
NGSCDecodeCommandState,
NGSCChannelMaskState,
NGSCCheckEndOfPacketState
} NGSCCommandDecoderState;
typedef struct {
uint8_t command;
uint8_t channelMask;
bool valid;
} NGSCReceivedCommand;
typedef struct {
uint8_t data[PACKET_MAX_DATA_LENGTH];
uint8_t *header;
double *rawData;
int size;
bool valid;
} NGSCTransmittingDataPacket;
//------- User Commands --------
typedef enum {
NGSCCommandCheckSPIComunication = 0x00,
NGSCCommandStartConversions = 0x10,
NGSCCommandStopConversions = 0x20,
NGSCCommandSetChannelOff = 0x30,
NGSCCommandSetNormalMode = 0x40,
NGSCCommandSetTestModeA1F1 = 0x51,
NGSCCommandSetTestModeA1F2 = 0x52,
NGSCCommandSetTestModeA2F1 = 0x53,
NGSCCommandSetTestModeA2F2 = 0x54,
NGSCCommandSetTestModeA1DC = 0x55,
NGSCCommandSetTestModeA2DC = 0x56,
NGSCCommandSetMVDDMode = 0x57,
NGSCCommandSetShortMode = 0x60,
NGSCCommandSetBiasMode = 0x70,
NGSCCommandSetDataRate250SPS = 0x81,
NGSCCommandSetDataRate500SPS = 0x82,
NGSCCommandSetDataRate1KSPS = 0x83,
NGSCCommandSetDataRate2KSPS = 0x84,
NGSCCommandSetDataRate4KSPS = 0x85,
NGSCCommandSetDataRate8KSPS = 0x86,
NGSCCommandSetDataRate16KSPS = 0x87,
NGSCCommandSetGain1 = 0x91,
NGSCCommandSetGain2 = 0x92,
NGSCCommandSetGain4 = 0x93,
NGSCCommandSetGain6 = 0x94,
NGSCCommandSetGain8 = 0x95,
NGSCCommandSetGain12 = 0x96,
NGSCCommandSetGain24 = 0x97,
NGSCCommandSetSRB1On = 0xA0,
NGSCCommandSetSRB1Off = 0xA1,
NGSCCommandFilterNotch50On = 0xB0,
NGSCCommandFilterNotch50Off = 0xB1,
NGSCCommandFilterCombNotch50On = 0xB2,
NGSCCommandFilterCombNotch50Off = 0xB3,
NGSCCommandFilterNotch0On = 0xB4,
NGSCCommandFilterNotch0Off = 0xB5,
NGSCCommandPrintSettings = 0xC0,
NGSCCommandReset = 0xD0
} NGSCCommand;
/*******************************************************************************
* FUNCTIONS PROTOTYPE DECLARATION
******************************************************************************/
void NGSCInit(void);
void NGSCSetup(void);
void NGSCEnvironmentSetup(void);
uint8_t NGSCGetId(void);
void NGSCReset(void);
void NGSCReadADSData(void);
void NGSCDeactivateChannel(uint8_t);
void NGSCSetNormalMode(uint8_t);
void NGSCSetTestMode(uint8_t, ADSConstant, ADSConstant);
void NGSCSetMVDDtMode(uint8_t);
void NGSCSetShortMode(uint8_t);
void NGSCSetBiasMode(uint8_t);
void NGSCSetDataRate(ADSConstant);
void NGSCSetGain(uint8_t, ADSConstant);
void NGSCSetSRB1(ADSConstant);
void NGSCPrintSettings(void);
void NGSCCommandDecoder(uint8_t);
void NGSCCommandHandler(void);
void NGSCProcessData(void);
void NGSCGetDataPacket(NGSCTransmittingDataPacket *);
#endif /* NGSC_H */
这里是ads1299.h
#ifndef __ADS1299_H__
#define __ADS1299_H__
#include <xc.h>
#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>
#include "app.h"
/** SPI Commands *************************************************************/
typedef enum {
//-------------------------- System Commands -------------------------------
ADSCommandWAKEUP = 0x02,
ADSCommandSTANDBY = 0x04,
ADSCommandRESET = 0x06,
ADSCommandSTART = 0x08,
ADSCommandSTOP = 0x0A,
//------------------------- Read Mode Commands -----------------------------
ADSCommandRDATAC = 0x10,
ADSCommandSDATAC = 0x11,
ADSCommandRDATA = 0x12,
//-------------------- Register Read/Write Commands ------------------------
ADSCommandRREG = 0x20, // 0b001rrrrr
ADSCommandWREG = 0x40 // 0b010rrrrr
} ADSCommand;
/** Register Addresses ********************************************************/
typedef enum {
ADSRegisterID = 0x00,
ADSRegisterCONFIG1 = 0x01,
ADSRegisterCONFIG2 = 0x02,
ADSRegisterCONFIG3 = 0x03,
ADSRegisterLOFF = 0x04,
ADSRegisterCH1SET = 0x05,
ADSRegisterCH2SET = 0x06,
ADSRegisterCH3SET = 0x07,
ADSRegisterCH4SET = 0x08,
ADSRegisterCH5SET = 0x09,
ADSRegisterCH6SET = 0x0A,
ADSRegisterCH7SET = 0x0B,
ADSRegisterCH8SET = 0x0C,
ADSRegisterBIAS_SENSP = 0x0D,
ADSRegisterBIAS_SENSN = 0x0E,
ADSRegisterLOFF_SENSP = 0x0F,
ADSRegisterLOFF_SENSN = 0x10,
ADSRegisterLOFF_FLIP = 0x11,
ADSRegisterLOFF_STATP = 0x12,
ADSRegisterLOFF_STATN = 0x13,
ADSRegisterGPIO = 0x14,
ADSRegisterMISC1 = 0x15,
ADSRegisterMISC2 = 0x16, // Not used
ADSRegisterCONFIG4 = 0x17
} ADSRegister;
/** ADS1299 Register Constants ************************************************/
typedef enum {
//---------------------------- CONFIG1 -------------------------------------
ADSConstantDaisyOn = 0x90, // (default)
ADSConstantDaisyOff = 0xD0,
ADSConstantClockOutOff = 0x90, // (default)
ADSConstantClockOutOn = 0xB0,
ADSConstantDataRate16KSPS = 0x90,
ADSConstantDataRate8KSPS = 0x91,
ADSConstantDataRate4KSPS = 0x92,
ADSConstantDataRate2KSPS = 0x93,
ADSConstantDataRate1KSPS = 0x94,
ADSConstantDataRate500SPS = 0x95,
ADSConstantDataRate250SPS = 0x96, // (default)
//---------------------------- CONFIG2 -------------------------------------
ADSConstantTestSignalExternal = 0xC0, // Test signals are driven externally (default)
ADSConstantTestSignalInternal = 0xD0, // Test signals are generated internally
ADSConstantCalibrationAmplitudeSmall = 0x00, // Calibration signal amplitude: 1 * (VREFP - VREFN) / 2.4 mV (default)
ADSConstantCalibrationAmplitudeLarge = 0x04, // Calibration signal amplitude: 2 * (VREFP - VREFN) / 2.4 mV
ADSConstantCalibrationFrequencyLow = 0x00, // Calibration signal frequency: Pulsed at fCLK / 2^21 (default)
ADSConstantCalibrationFrequencyHigh = 0x01, // Calibration signal frequency: Pulsed at fCLK / 2^20
ADSConstantCalibrationFrequencyDC = 0x03, // Calibration signal frequency: DC
//---------------------------- CONFIG3 -------------------------------------
ADSConstantReferenceBufferOff = 0x60, // Power-down internal reference buffer (default)
ADSConstantReferenceBufferOn = 0xE0, // Internal reference buffer enabled
ADSConstantBiasMeasurementDisabled = 0x60, // BIASIN signal disconnected (default)
ADSConstantBiasMeasurementEnabled = 0x70, // BIASIN signal is routed to the channel that has the MUX_Setting 010 (VREF)
ADSConstantBiasReferenceExternal = 0x60, // BIASREF signal fed externally (default)
ADSConstantBiasReferenceInternal = 0x68, // BIASREF signal (AVDD - AVSS) / 2 generated internally
ADSConstantBiasBufferOff = 0x60, // BIAS buffer is powered down (default)
ADSConstantBiasBufferOn = 0x64, // BIAS buffer is enabled
ADSConstantBiasLeadOffSenseDisabled = 0x60, // BIAS sense is disabled (default)
ADSConstantBiasLeadOffSenseEnabled = 0x62, // BIAS sense is enabled
//----------------------------- LOFF ---------------------------------------
ADSConstantLeadOffComparatorThreshold95 = 0x00, // Positive side: 95%, negative side: 5% (default)
ADSConstantLeadOffComparatorThreshold92 = 0x20, // Positive side: 92.5%, negative side: 7.5%
ADSConstantLeadOffComparatorThreshold90 = 0x40, // Positive side: 90%, negative side: 10%
ADSConstantLeadOffComparatorThreshold87 = 0x60, // Positive side: 87.5%, negative side: 12.5%
ADSConstantLeadOffComparatorThreshold85 = 0x80, // Positive side: 85%, negative side: 15%
ADSConstantLeadOffComparatorThreshold80 = 0xA0, // Positive side: 80%, negative side: 20%
ADSConstantLeadOffComparatorThreshold75 = 0xC0, // Positive side: 75%, negative side: 25%
ADSConstantLeadOffComparatorThreshold70 = 0xE0, // Positive side: 70%, negative side: 30%
ADSConstantLeadOffCurrent6nA = 0x00, // Lead off current: 6 nA (default)
ADSConstantLeadOffCurrent24nA = 0x02, // Lead off current: 24 nA
ADSConstantLeadOffCurrent6uA = 0x04, // Lead off current: 6 uA
ADSConstantLeadOffCurrent24uA = 0x06, // Lead off current: 24 uA
ADSConstantLeadOffFrequencyDC = 0x00, // DC lead-off detection (default)
ADSConstantLeadOffFrequency7Hz8 = 0x01, // AC lead-off detection at 7.8 Hz (SYS_CLK / 2^18)
ADSConstantLeadOffFrequency31Hz2 = 0x02, // AC lead-off detection at 31.2 Hz (SYS_CLK / 2^16)
ADSConstantLeadOffFrequencyDataRate4 = 0x03, // AC lead-off detection at fDR / 4
//------------------------------ CHnSET ------------------------------------
ADSConstantChannelOn = 0x00, // Normal operation (default)
ADSConstantChannelOff = 0x80, // Channel power-down
ADSConstantGain1 = 0x00,
ADSConstantGain2 = 0x10,
ADSConstantGain4 = 0x20,
ADSConstantGain6 = 0x30,
ADSConstantGain8 = 0x40,
ADSConstantGain12 = 0x50,
ADSConstantGain24 = 0x60, // (default)
ADSConstantSRB2Off = 0x00, // (default)
ADSConstantSRB2On = 0x08,
ADSConstantMuxNormal = 0x00, // Normal electrode input (default)
ADSConstantMuxShortedInputs = 0x01, // Input shorted (for offset or noise measurements)
ADSConstantMuxBiasMeasurement = 0x02, // Used in conjunction with BIAS_MEAS bit (BiasMeasurementEnabled) in CONFIG3 for BIAS measurements
ADSConstantMuxVDDMeasurement = 0x03, // MVDD for supply measurement // For channels 1,2,5,6,7,8 (MVDDP - MVDDN) = [0.5 * (AVDD + AVSS)]
// For channels 3,4 (MVDDP - MVDDN) = DVDD / 4
// Note: set gain = 1 while mesuring supplies to avoid saturation
ADSConstantMuxTemperatureMeasurement = 0x04, // Temperature sensor
ADSConstantMuxTestSignal = 0x05, // Test signal
ADSConstantMuxBiasOnPostiveElectrode = 0x06, // BIAS_DRP (positive electrode is the driver)
ADSConstantMuxBiasOnNegativeElectrode = 0x07, // BIAS_DRN (negative electrode is the driver)
//----------------------- BIAS/LOFF_SENSP/SENSN ----------------------------
ADSConstantSenseNone = 0x00,
ADSConstantSenseAll = 0xFF,
ADSConstantSense1 = 0x01,
ADSConstantSense2 = 0x02,
ADSConstantSense3 = 0x04,
ADSConstantSense4 = 0x08,
ADSConstantSense5 = 0x10,
ADSConstantSense6 = 0x20,
ADSConstantSense7 = 0x40,
ADSConstantSense8 = 0x80,
//----------------------------- LOFF_FLIP ----------------------------------
ADSConstantFlipNone = 0x00,
ADSConstantFlipAll = 0xFF,
ADSConstantFlip1 = 0x01,
ADSConstantFlip2 = 0x02,
ADSConstantFlip3 = 0x04,
ADSConstantFlip4 = 0x08,
ADSConstantFlip5 = 0x10,
ADSConstantFlip6 = 0x20,
ADSConstantFlip7 = 0x40,
ADSConstantFlip8 = 0x80,
//------------------------------- MISC1 ------------------------------------
ADSConstantSRB1Off = 0x00, // (default)
ADSConstantSRB1On = 0x20,
//------------------------------ CONFIG4 -----------------------------------
ADSConstantContinuousConversionMode = 0x00, // Continuous conversion mode (default)
ADSConstantSingleShotMode = 0x08, // Single-shot mode
ADSConstantLeadOffComparatorOff = 0x00, // Lead-off comparators disabled (default)
ADSConstantLeadOffComparatorOn = 0x02 // Lead-off comparators enabled
} ADSConstant;
typedef enum {
ADSMaskId = 0x0F,
ADSMaskGain = 0x70
} ADSMask;
/** Function Prototypes *******************************************************/
void ADS_CHIP_SELECT_Assert(void);
void ADS_CHIP_SELECT_Deassert(void);
uint8_t TransferByteOverSPI2(uint8_t);
void ADSInit(void);
void ADSWakeup(void);
void ADSStandby(void);
void ADSReset(void);
void ADSStartConversions(void);
void ADSStopConversions(void);
void ADSStartReadDataContinuousMode(void);
void ADSStopReadDataContinuousMode(void);
void ADSReadData(void);
uint8_t ADSReadRegister(ADSRegister);
void ADSWriteRegister(ADSRegister, uint8_t);
void ADSPrintAllRegisters(void);
#endif /* __ADS1299_H__ */
即使我包含标题,文件NGSC.h
似乎也看不到ADSConstant
文件中的ads1299.h
类型定义。
这是正常的吗?为什么会出现这个错误?