MPLABX中的C头包含问题
我在MPLABX C项目中包含我的库时遇到问题。此库使用另一个库 编译项目时,出现了一个错误:MPLABX中的C头包含问题,c,header,include,C,Header,Include,我在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
../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__ */
\ifndef\uuuADS1299\uH__
#定义ADS1299__
#包括
#包括
#包括
#包括
#包括“app.h”
/**SPI命令************************************************************************************************/
类型定义枚举{
//--------------------------系统命令-------------------------------
ADSCommandWAKEUP=0x02,
ADSCommandSTANDBY=0x04,
ADSCommandRESET=0x06,
ADSCommandSTART=0x08,
ADSCommandSTOP=0x0A,
//-------------------------读取模式命令-----------------------------
ADSCommandRDATAC=0x10,
ADSCommandSDATAC=0x11,
ADSCommandRDATA=0x12,
//--------------------寄存器读/写命令------------------------
ADSCommandRREG=0x20,//0B001RRR
ADSCommandWREG=0x40//0B010RRR
}ADS命令;
/**注册地址********************************************************/
类型定义枚举{
ADSRegisterID=0x00,
ADSRegisterCONFIG1=0x01,
ADSRegisterCONFIG2=0x02,
ADSRegisterCONFIG3=0x03,
ADSRegisterOff=0x04,
ADSRegisterCH1SET=0x05,
ADSRegisterCH2SET=0x06,
ADSRegisterCH3SET=0x07,
ADSRegisterCH4SET=0x08,
ADSRegisterCH5SET=0x09,
ADSRegisterCH6SET=0x0A,
ADSRegisterCH7SET=0x0B,
ADSRegisterCH8SET=0x0C,
ADSRegisterBIAS_SENSP=0x0D,
ADSRegisterBIAS_SENSN=0x0E,
ADSRegisterOff_SENSP=0x0F,
ADSRegisterOff_SENSN=0x10,
ADSRegisterOff_FLIP=0x11,
ADSRegisterOff_STATP=0x12,
ADSRegisterOff_STATN=0x13,
ADSRegisterGPIO=0x14,
ADSRegisterMsc1=0x15,
ADSRegisterMsc2=0x16,//未使用
ADSRegisterCONFIG4=0x17
}ADS寄存器;
/**ADS1299寄存器常数************************************************/
类型定义枚举{
//----------------------------配置1-------------------------------------
ADSConstantDaiYon=0x90,//(默认)
ADSConstantDaiyoff=0xD0,
ADSConstantClockOutOff=0x90,//(默认)
ADSConstantClockOutOn=0xB0,
ADSConstantDataRate16KSPS=0x90,
ADSConstantData 8ksps=0x91,
ADSConstantDataRate4KSPS=0x92,
ADSConstantDataRate2KSPS=0x93,
ADSConstantDataRate1KSPS=0x94,
ADSConstantDataRate500SPS=0x95,
ADSConstantDataRate250SPS=0x96,//(默认)
//----------------------------配置2-------------------------------------
ADSCONSTANTETSTSIGNALEXTERNAL=0xC0,//外部驱动测试信号(默认)
ADSConstantTestSignalInternal=0xD0,//内部生成测试信号
ADSConstantCalibrationAmplitudeSmall=0x00,//校准信号振幅:1*(VREFP-VREFN)/2.4 mV(默认值)
ADSConstantCalibrationAmplitudeLarge=0x04,//校准信号振幅:2*(VREFP-VREFN)/2.4 mV
ADSConstantCalibrationFrequencyLow=0x00,//校准信号频率:在fCLK/2^21处脉冲(默认)
ADSConstantCalibrationFrequencyHigh=0x01,//校准信号频率:在fCLK/2^20处脉冲
ADSConstantCalibrationFrequencyDC=0x03,//校准信号频率:DC
//----------------------------配置3-------------------------------------
ADSConstantReferenceBufferOff=0x60,//关闭内部引用缓冲区(默认)
ADSConstantReferenceBufferOn=0xE0,//已启用内部引用缓冲区
ADSConstantBiasMeasurementDisabled=0x60,//信号断开时的偏差(默认)
ADSConstantBiasMeasurementEnabled=0x70,//BIASIN信号被路由到具有MUX_设置010(VREF)的信道
ADSConstantBiasReferenceExternal=0x60,//外部馈送的BIASREF信号(默认)
ADSConstantBiasReferenceInternal=0x68,//内部生成的BIASREF信号(AVDD-AVSS)/2
ADSConstantBiasBufferOff=0x60,//偏置缓冲区断电(默认)
ADSConstantBiasBufferOn=0x64,//已启用偏置缓冲区
ADSConstantBiasLeadOffSenseDisabled=0x60,//禁用偏差检测(默认)
ADSConstantBiasLeadOffSenseEnabled=0x62,//偏置检测已启用
//-----------------------------洛夫---------------------------------------
adsconstantleadoffcomparatorhreshold95=0x00,//正侧:95%,负侧:5%(默认)
adsconstantleadoffcomparatorhreshold92=0x20,//正侧:92.5%,负侧:7.5%
adsconstantleadoffcomparatorhreshold90=0x40,//正侧:90%,负侧:10%
adsconstantleadoffcomparatorhreshold87=0x60,//正侧:87.5%,负侧:12.5%
adsconstantleadoffcomparatorhreshold85=0x80,//正极:85%,负极:15%
adsconstantleadoffcomparatorhreshold80=0xA0,//正极:80%,负极:20%
adsconstantleadoffcomparatorhreshold75=0xC0,//正侧:75%,负侧:25%
adsconstantleadoffcomparatorhreshold70=0xE0,//正侧:70%,负侧:30%
ADSConstantLeadOffCurrent6nA=0x00,//引出电流:6na(默认值)
ADSConstantLendOffCurrent24NA=0x02,//引出电流:24NA
ADSConstantLendOffCurrent6UA=0x04,//引出电流:6UA
AdsConstantLedOffCurrent24UA