This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Code Composer Studio
我不熟悉 CCS v5。 我有 C2000 LaunchPadXL TMS320F28027F、我想将其用于 BLDC 驱动器。 我创建了一个新项目并得到 "../main.c"、第2行:致命错误#1965:无法打开源文件"common/include/adc.h"此错误。 我尝试了路径和库、但它们都不起作用。 此外、我打开了示例工程、尝试编译、但再次发生了相同的错误。 我正在进行毕业项目、一直在这里、请帮我。
您可以在下面找到我的 main.c、属性屏幕截图和错误。
#include "DSP28x_Project.h"
#include "common/include/adc.h"
#include "common/include/clk.h"
#include "common/include/flash.h"
#include "common/include/gpio.h"
#include "common/include/pie.h"
#include "common/include/pll.h"
#include "common/include/timer.h"
#include "common/include/wdog.h"
#include "common/include/pwer.h"
#include "common/include/pwm.h"
#include "math.h"
#define INTPOOLCOUNT 50
#define INTEGRALCOUNTPERIOD 50000
_interrupt void ADC_ISR (void);
中断空 CPU_timer0_ISR (空);
中断空 CPU_Timer1_ISR (空);
_interrupt void XINT1_ISR (void);
_interrupt void XINT2_ISR (void);
_interrupt void xint3_ISR (void);
void PWM_Init_();
void pwm2_Init_();
void pwm3/Init_();
void GPIO_init();
void adc_init();
void delay_loop (void);
unsigned int period = 5000;
unsigned int 半周期;
unsigned int cmpa;
int 死区时间=2;//MMKROSANIYE HIGHLAR VE LOWLAR ARASI BEKLEME
int inition=0;
所需的 int = 0;
int i=0、j=0;
int g气_value=200;
int gastest=0;
int g气 池[10]={0、0、0、0、0、0、0、0、0、0};
int Integral_pool[INTPOOLCOUNT];
int integralpoolcounter=0;
浮点积分;
浮点微分值;
浮点比例;
//
浮子 KINTEGRAL;
浮子 KDERIVATIVE;
悬空 KPROPORTIONAL;
//
int pidoutput;
int hallbinary、HALL1、hall2、hall3;
int nutman=0;
int counter1 = 0;
int counter2 = 0;
int counter3 = 0;
int counter_adc=0;
long int temp=0、inttemp=0;
内部转速;
int 错误, lasterror;
int counterdd=0;
int start=0;
int ADC2=0;
int timer2count=0;
int timer1count=0;
INT CAN=0;
int timerstart=0;
int close_signal=0;
adc_handle myAdc;
clk_handle myClk;
Flash_handle myFlash;
GPIO_Handle myGpio;
PIE_Handle myPie;
pll_handle myPll;
Timer_handle myTimer;
Timer_handle myTimer1;
WDOG_Handle myWDog;
PWR_Handle MyPwr;
cpu_handle myCpu;
PWM_Handle myPwm1;
PWM_Handle myPwm2;
PWM_Handle myPwm3;
PWM_Handle adcepwm;
int main (void){
myAdc = ADC_init ((void *) ADC_base_ADDR、sizeof (ADC_Obj));
myClk = CLK_init ((void *) CLK_base_ADDR、sizeof (CLK_Obj));
myFlash = flash_init ((void *) flash_base_ADDR、sizeof (flash_Obj));
myGpio = GPIO_init ((void *) GPIO_base_ADDR、sizeof (GPIO_Obj));
myPie = PI_init ((void *) PIE_BASE_ADDR、sizeof (PIE_Obj));
myPll = PLL_init ((void *) PLL_base_ADDR、sizeof (PLL_Obj));
myTimer = TIMER_INIT ((void *) TIMER0_BASE_ADDR、sizeof (timer_Obj));
myTimer1 = timer_init (((void *) Timer1_base_ADDR、sizeof (timer_Obj));
myWdDog = WDOG_INIT ((void *) WDOG_BASE_ADDR、sizeof (WDOG_Obj));
myCpu = cpu_init ((void *) NULL、sizeof (cpu_Obj));
myPwm1 = PWM_init ((void *) PWM_ePWM2_base_ADDR、sizeof (PWM_Obj));
myPwm2 = PWM_init (((void *) PWM_ePWM3_base_ADDR、sizeof (PWM_Obj));
myPwm3 = PWM_init ((void *) PWM_ePWM1_base_ADDR、sizeof (PWM_Obj));
adcepwm = PWM_init ((void *) PWM_ePWM4_base_ADDR、sizeof (PWM_Obj));
WDOG_DISABLE (myWDog);
CLK_enableAdcClock (myClk);
(*Device_cal)();
CLK_setOscSrc (myClk、CLK_OscSrc_Internal);
PLL_setup (myPll、PLL_Multiplier_10、PLL_DivideSelect_CLKIN_BY_2);
PIE_DISABLE (myPie);
PI_DisableAllInts (myPie);
CPU_disableGlobalInts (myCpu);
CPU_clearIntFlags (myCpu);
#ifdef _flash
memcpy (&RamfuncsRunStart、&RamfuncsLoadStart、(size_t)&RamfuncsLoadSize);
#endif
PI_setDebugIntVectorTable (myPie);
PIE_ENABLE (myPie);
PI_registerPieIntHandler (myPie、PI_GroupNumber_1、PI_SubGroupNumber_4、(intVec_t)&XINT1_ISR);
PI_registerPieIntHandler (myPie、PI_GroupNumber_1、PI_SubGroupNumber_5、(intVec_t)&XINT2_ISR);
PI_registerPieIntHandler (myPie、PI_GroupNumber_12、PI_SubGroupNumber_1、(intVec_t)&xint3_ISR);
//PI_registerPieIntHandler (myPie、PI_GroupNumber_1、PI_SubGroupNumber_7、(intVec_t)&CPU_timer0_ISR);
PI_registerPieIntHandler (myPie、PI_GroupNumber_10、PI_SubGroupNumber_1、(intVec_t)&ADC_ISR);
//PI_registerSystemIntHandler (myPie、PI_SystemInterrupts_TINT1、(intvec_t)&CPU_Timer1_ISR);
adc_enableBandGap (myAdc);
ADC_enableRefBuffers (myAdc);
ADC_POWERUP (myAdc);
ADC_ENABLE (myAdc);
ADC_setVoltRefSrc (myAdc、ADC_VoltageRefSrc_Int);
/*timer_stop (myTimer);
Timer_setPeriod (myTimer、5000000000);
Timer_setPrescaler (myTimer、0);
Timer_reload (myTimer);
Timer_setEmulationMode (myTimer、TIMER_EmulationMode_StopAfterNextDecrement);
Timer_enableInt (myTimer);
Timer_start (myTimer);*/
//TIMER0 Ile 外部 INTERRUPTLAR Ayni Anda CALISMAZ
Timer_stop (myTimer1);
Timer_setPeriod (myTimer1、50000);
Timer_setPreScaler (myTimer1、0);
Timer_reload (myTimer1);
Timer_setEmulationMode (myTimer1、timer_EmulationMode_StopAfterNextDecrement);
Timer_enableInt (myTimer1);
Timer_start (myTimer1);
PI_enableInt (myPie、PI_GroupNumber_1、PI_InterruptSource_XINT_1);
PI_enableInt (myPie、PI_GroupNumber_1、PI_InterruptSource_XINT_2);
PI_enableInt (myPie、PI_GroupNumber_12、PI_InterruptSource_XINT_3);
CPU_enableInt (myCpu、CPU_IntNumber_1);//XINT1、XINT2
CPU_enableInt (myCpu、CPU_IntNumber_12);//XINT3
//CPU _enableInt (myCpu、CPU_IntNumber_13);//Timer1中断寄存器
CPU_enableInt (myCpu、CPU_IntNumber_10);//ADC 中断寄存器
//PIE_enableTimer0Int (myPie);
PIE_enableAdcInt (myPie、ADC_IntNumber_1);
cpu_enableGlobalInts (myCpu);
CPU_enableDebugInt (myCpu);
ADC_setIntPulseGenMode (myAdc、ADC_IntPulseGenMode_Prior);
ADC_enableInt (myAdc、ADC_IntNumber_1);
ADC_setIntMode (myAdc、ADC_IntNumber_1、ADC_IntMode_ClearFlag);
ADC_setIntSrc (myAdc、ADC_IntNumber_1、ADC_IntSrc_EoC2);
ADC_setSockChanNumber (myAdc、ADC_SockNumber_1、ADC_SockChanNumber_A6);
ADC_setSockTrigSrc (myAdc、ADC_SockNumber_1、ADC_SockTrigSrc_EPWM4_ADCSOCA);
ADC_setSockSampleWindow (myAdc、ADC_SockNumber_1、ADC_SockSampleWindow_14_cycles);//CALISMAZSA 7周期 Yap
//ADC PWM
CLK_enablePwmClock (myClk、PWM_NUMBER_4);
PWM_enableSockpulse (adcepwm);// SOC ACILIMI
PWM_setSockAPulseSrc (adcepwm、PWM_SockPulseSrc_CounterEqualCmpAcincr);
PWM_setSockAPeriod (adcepwm、PWM_SockPeriod_FirstEvent);
PWM_setCmpA (adcepwm、0x0080);//CMPA DEGERI
PWM_setPeriod (adcepwm、0xFFFF);//1ms
PWM_setCounterMode (adcepwm、PWM_CounterMode_Up);//递增计数并启动
//ADC PWM BITIS
GPIO_init();
PI_setExtIntPolarity (myPie、CPU_ExtIntNumber_1、PI_ExtIntPolarity_RisingAndFallingEdge);
PI_setExtIntPolarity (myPie、CPU_ExtIntNumber_2、PI_ExtIntPolarity_RisingAndFallingEdge);
PI_setExtIntPolarity (myPie、CPU_ExtIntNumber_3、PI_ExtIntPolarity_RisingAndFallingEdge);
PI_enableExtInt (myPie、CPU_ExtIntNumber_1);
PI_enableExtInt (myPie、CPU_ExtIntNumber_2);
PI_enableExtInt (myPie、CPU_ExtIntNumber_3);
clk_disableTbClockSync (myClk);
PWM_Init_();
pwm2_Init_();
pwm3/Init_();
CLK_enableTbClockSync (myClk);
//电机 ilk ACILDIGINDA 中断 OLMAYACAGINAN ILK HALL DURUMLARINI ALMAMIZ GEREKIR
HALL1 = GPIO_getData (myGpio、GPIO_Number_19);
hall2 = GPIO_getData (myGpio、GPIO_Number_28);
hall3 = GPIO_getData (myGpio、GPIO_Number_29);
hallbinary=HALL1+(hall2<<1)+(hall3<2);
while (1){
g气_value=adc_readResult (myAdc、adc_ResultNumber_1);
if (g气_value<200){
起始= 0;
}
if (g气_value<400){
GAS 值= 0;
}
if (g气_value>=400){
起始= 1;
}
CMPA =((float) g气_value / 4095.0)*(float)周期;
///deadman=GPIO_getData (myGpio、GPIO_Number_34);
门人=0;
if (deadman=1){
CMPA=0;
}
if (start=0){
//START-STOP KISMINDA KAPASITE DOLUMLARI HALL SENSORLERE ETKI ETMEDEN
GPIO_setLow (myGpio、GPIO_Number_4);
GPIO_setLow (myGpio、GPIO_Number_0);
GPIO_setHigh (myGpio、GPIO_Number_2);
delay_loop();
GPIO_setLow (myGpio、GPIO_Number_4);
GPIO_setHigh (myGpio、GPIO_Number_0);
GPIO_setLow (myGpio、GPIO_Number_2);
delay_loop();
GPIO_setHigh (myGpio、GPIO_Number_4);
GPIO_setLow (myGpio、GPIO_Number_0);
GPIO_setLow (myGpio、GPIO_Number_2);
delay_loop();
GPIO_setLow (myGpio、GPIO_Number_4);
GPIO_setLow (myGpio、GPIO_Number_0);
GPIO_setHigh (myGpio、GPIO_Number_2);
delay_loop();
GPIO_setLow (myGpio、GPIO_Number_4);
GPIO_setHigh (myGpio、GPIO_Number_0);
GPIO_setLow (myGpio、GPIO_Number_2);
delay_loop();
GPIO_setHigh (myGpio、GPIO_Number_4);
GPIO_setLow (myGpio、GPIO_Number_0);
GPIO_setLow (myGpio、GPIO_Number_2);
delay_loop();
GPIO_setLow (myGpio、GPIO_Number_4);
GPIO_setLow (myGpio、GPIO_Number_0);
GPIO_setLow (myGpio、GPIO_Number_2);
delay_loop();
}
/*HALL1 = GPIO_getData (myGpio、GPIO_Number_19);
hall2 = GPIO_getData (myGpio、GPIO_Number_28);
hall3 = GPIO_getData (myGpio、GPIO_Number_29);
*
hallbinary=HALL1+(hall2<<1)+(hall3<2);
switch (hallbinary)
{
情况5:
PWM_setCmpA (myPwm1、0);//faz1高电平
PWM_setCmpA (myPwm2、CMPA);//faz2高电平
PWM_setCmpA (myPwm3、0);//faz3为高电平
DELAY_US (10);
GPIO_setLow (myGpio、GPIO_Number_4);//faz1 LOW
GPIO_setLow (myGpio、GPIO_Number_0);//faz2低电平
GPIO_setHigh (myGpio、GPIO_Number_2);//faz3低电平
中断;
案例2:
PWM_setCmpA (myPwm1、0);
PWM_setCmpA (myPwm2、0);
PWM_setCmpA (myPwm3、CMPA);
DELAY_US (10);
GPIO_setLow (myGpio、GPIO_Number_4);
GPIO_setHigh (myGpio、GPIO_Number_0);
GPIO_setLow (myGpio、GPIO_Number_2);
中断;
案例3:
PWM_setCmpA (myPwm1、0);
PWM_setCmpA (myPwm2、0);
PWM_setCmpA (myPwm3、CMPA);
DELAY_US (10);
GPIO_setHigh (myGpio、GPIO_Number_4);
GPIO_setLow (myGpio、GPIO_Number_0);
GPIO_setLow (myGpio、GPIO_Number_2);
中断;
案例4:
PWM_setCmpA (myPwm1、CMPA);
PWM_setCmpA (myPwm2、0);
PWM_setCmpA (myPwm3、0);
DELAY_US (10);
GPIO_setLow (myGpio、GPIO_Number_4);
GPIO_setLow (myGpio、GPIO_Number_0);
GPIO_setHigh (myGpio、GPIO_Number_2);
中断;
案例6:
PWM_setCmpA (myPwm1、CMPA);
PWM_setCmpA (myPwm2、0);
PWM_setCmpA (myPwm3、0);
DELAY_US (10);
GPIO_setLow (myGpio、GPIO_Number_4);
GPIO_setHigh (myGpio、GPIO_Number_0);
GPIO_setLow (myGpio、GPIO_Number_2);
中断;
案例1:
PWM_setCmpA (myPwm1、0);
PWM_setCmpA (myPwm2、CMPA);
PWM_setCmpA (myPwm3、0);
DELAY_US (10);
GPIO_setHigh (myGpio、GPIO_Number_4);
GPIO_setLow (myGpio、GPIO_Number_0);
GPIO_setLow (myGpio、GPIO_Number_2);
中断;
默认值:
PWM_setCmpA (myPwm1、0);
PWM_setCmpA (myPwm2、0);
PWM_setCmpA (myPwm3、0);
DELAY_US (10);
GPIO_setLow (myGpio、GPIO_Number_4);
GPIO_setLow (myGpio、GPIO_Number_0);
GPIO_setLow (myGpio、GPIO_Number_2);
}
}
}
///------------------ 中断-------
_interrupt void ADC_ISR (void){
gas _pool[counter_ADC]= ADC_readResult (myAdc、ADC_ResultNumber_1);
if (counter_ADC=9) counter_ADC=0;
COUNTER_ADC++;
for (i=0;i<9;i++){
temp+=gas 池[i];
}
gastest=temp/10;
ADC_clearIntFlag (myAdc、ADC_IntNumber_1);
PI_clearInt (myPie、PI_GroupNumber_10);
}
中断空 CPU_Timer1_ISR (空){
/*
rpm=(int)(416666.66/(float)半周期);
error=期望值-rpm;
//积分
Integral_pool[integralpoolcounter]=错误;
integralpoolcounter++;
if (integralpoolcounter=intPOOLCOUNT) integralpoolcounter=0;
对于(j=0;<INTPOOLCOUNT;j++){
inttemp+=integral_pool[j];
}
Integral=KINTEGRAL *inttemp;
//导数
衍生品=KDERIVATIVE*(error-lasterror/INTEGRALCOUNTPIOD);
lasterror=错误;
//成比例
比例= ERROR*KPROPORTIONAL;
//结束
pidoutput=integral+proportion+derivative;*/
}
_interrupt void XINT1_ISR (void){//INTERRUPTLARDA HALL KACIRMAAK icin HEPSINE BAKIYORUZ 1. HALLDEN HIZ OKUMASI ALIYORUZ
/*if (timerstart){
半周期=0;
Timer_reload (myTimer);
timerstart=0;
}否则{
半周期=TIMER_getCount (myTimer);
timerstart=1;
}*/
HALL1 = GPIO_getData (myGpio、GPIO_Number_19);
PI_clearInt (myPie、PI_GroupNumber_1);
}
_interrupt void XINT2_ISR (void){//INTERRUPTLARDA HALL KACIRMAAK icin HEPSINE BAKIYORUZ
hall2 = GPIO_getData (myGpio、GPIO_Number_28);
PI_clearInt (myPie、PI_GroupNumber_1);
}
_interrupt void xint3_ISR (void){//INTERRUPTLARDA HALL KACIRMAAK icin HEPSINE BAKIYORUZ
hall3 = GPIO_getData (myGpio、GPIO_Number_29);
PI_clearInt (myPie、PI_GroupNumber_12);
}
///---------------------- PWM ---------------------------
void PWM_Init_()
{
CLK_enablePwmClock (myClk、PWM_NUMBER_2);
PWM_enableSockpulse (myPwm1);
PWM_setSockAPulseSrc (myPwm1、PWM_SockPulseSrc_CounterEqualCmpAcincr);
PWM_setSockAPeriod (myPwm1、PWM_SockPeriod_FirstEvent);
PWM_setPeriod (myPwm1、period);
PWM_setCounterMode (myPwm1、PWM_CounterMode_Up);
PWM_DisableCounterLoad (myPwm1);
PWM_setPhase (myPwm1、0x0000);
PWM_setCount (myPwm1、0x0000);
PWM_setHighSpeedClkDiv (myPwm1、PWM_HspClkDiv_BY_1);
PWM_setClkDiv (myPwm1、PWM_ClkDiv_BY_1);
PWM_setShadowImage Mode_cmpA (myPwm1、PWM_ShadowImage Mode_Shadow);
PWM_setLoadMode_CmpA (myPwm1、PWM_LoadMode_Zero);
PWM_setShadowImage Mode_CMPB (myPwm1、PWM_ShadowImage Mode_Shadow);
PWM_setLoadMode_CMPB (myPwm1、PWM_LoadMode_Zero);
PWM_setActionQual_Zero_PwmA (myPwm1、PWM_ActionQual_set);
PWM_setActionQual_CntUp_CmpA_PwmA (myPwm1、PWM_ActionQual_clear);
PWM_setActionQual_Zero_PwmB (myPwm1、PWM_ActionQual_set);
PWM_setActionQual_CntUp_CmpA_PwmB (myPwm1、PWM_ActionQual_clear);
PWM_setCmpA (myPwm1、0);
//死区 YAPMAMIZA gerek YOK CUNKU BIZ IKI FARKLI PWM KAYNAGINDAN SURUS YAPMIYORUZ
//low SIDELARA DIREK 5V VERIYORUZ
//Eger PWM 模块 A VE B DEN AYRI AYRI SURSEYDIK GEREKIRDI
}
void pwm2_Init_()
{
CLK_enablePwmClock (myClk、PWM_NUMBER_3);
PWM_enableSockpulse (myPwm2);
PWM_setSockAPulseSrc (myPwm2、PWM_SockPulseSrc_CounterEqualCmpAcincr);
PWM_setSockAPeriod (myPwm2、PWM_SockPeriod_FirstEvent);
PWM_setPeriod (myPwm2、period);
PWM_setCounterMode (myPwm2、PWM_CounterMode_Up);
PWM_DisableCounterLoad (myPwm2);
PWM_setPhase (myPwm2、0x0000);
PWM_setCount (myPwm2、0x0000);
PWM_setHighSpeedClkDiv (myPwm2、PWM_HspClkDiv_BY_1);
PWM_setClkDiv (myPwm2、PWM_ClkDiv_BY_1);
PWM_setShadowImage Mode_cmpA (myPwm2、PWM_ShadowImage Mode_Shadow);
PWM_setLoadMode_cmpA (myPwm2、PWM_LoadMode_Zero);
PWM_setShadowImage Mode_CMPB (myPwm2、PWM_ShadowImage Mode_Shadow);
PWM_setLoadMode_CMPB (myPwm2、PWM_LoadMode_Zero);
PWM_setActionQual_Zero_PwmA (myPwm2、PWM_ActionQual_set);
PWM_setActionQual_CntUp_CmpA_PwmA (myPwm2、PWM_ActionQual_clear);
PWM_setActionQual_Zero_PwmB (myPwm2、PWM_ActionQual_set);
PWM_setActionQual_CntUp_CmpA_PwmB (myPwm2、PWM_ActionQual_clear);
PWM_setCmpA (myPwm2、0);
//死区 YAPMAMIZA gerek YOK CUNKU BIZ IKI FARKLI PWM KAYNAGINDAN SURUS YAPMIYORUZ
//low SIDELARA DIREK 5V VERIYORUZ
//Eger PWM 模块 A VE B DEN AYRI AYRI SURSEYDIK GEREKIRDI
}
void pwm3/Init_()
{
CLK_enablePwmClock (myClk、PWM_NUMBER_1);
PWM_enableSockpulse (myPwm3);
PWM_setSockAPulseSrc (myPwm3、PWM_SockPulseSrc_CounterEqualCmpAcincr);
PWM_setSockAPeriod (myPwm3、PWM_SockPeriod_FirstEvent);
PWM_setPeriod (myPwm3、period);
PWM_setCounterMode (myPwm3、PWM_CounterMode_Up);
PWM_DisableCounterLoad (myPwm3);
PWM_setPhase (myPwm3、0x0000);
PWM_setCount (myPwm3、0x0000);
PWM_setHighSpeedClkDiv (myPwm3、PWM_HspClkDiv_BY_1);
PWM_setClkDiv (myPwm3、PWM_ClkDiv _BY_1);
PWM_setShadowImage Mode_cmpA (myPwm3、PWM_ShadowImage Mode_Shadow);
PWM_setLoadMode_cmpA (myPwm3、PWM_LoadMode_Zero);
PWM_setShadowImage Mode_CMPB (myPwm3、PWM_ShadowImage Mode_Shadow);
PWM_setLoadMode_CMPB (myPwm3、PWM_LoadMode_Zero);
PWM_setActionQual_Zero_PwmA (myPwm3、PWM_ActionQual_set);
PWM_setActionQual_CntUp_CmpA_PwmA (myPwm3、PWM_ActionQual_clear);
PWM_setActionQual_Zero_PwmB (myPwm3、PWM_ActionQual_set);
PWM_setActionQual_CntUp_CmpA_PwmB (myPwm3、PWM_ActionQual_clear);
PWM_setCmpA (myPwm3、0);
//死区 YAPMAMIZA gerek YOK CUNKU BIZ IKI FARKLI PWM KAYNAGINDAN SURUS YAPMIYORUZ
//low SIDELARA DIREK 5V VERIYORUZ
//Eger PWM 模块 A VE B DEN AYRI AYRI SURSEYDIK GEREKIRDI
}
///------------------ 首字母缩写-------------------------------------------------------
void GPIO_init(){
GPIO_setMode (myGpio、GPIO_Number_19、GPIO_19_Mode_generalpurpose);
GPIO_setMode (myGpio、GPIO_Number_28、GPIO_28_Mode_generalpurpose);
GPIO_setMode (myGpio、GPIO_Number_29、GPIO_29_Mode_generalpurpose);
GPIO_setPullUp (myGpio、GPIO_Number_19、GPIO_PULLUP_Enable);
GPIO_setPullUp (myGpio、GPIO_Number_28、GPIO_PULLUP_Enable);
GPIO_setPullUp (myGpio、GPIO_Number_29、GPIO_PULLUP_Enable);
GPIO_setDirection (myGpio、GPIO_Number_19、GPIO_Direction_Input);
GPIO_setDirection (myGpio、GPIO_Number_28、GPIO_Direction_Input);
GPIO_setDirection (myGpio、GPIO_Number_29、GPIO_Direction_Input);
/*GPIO_setQualification (myGpio、GPIO_Number_19、GPIO_Qual_异 步);
GPIO_setQualification (myGpio、GPIO_Number_28、GPIO_Qual_异 步);
GPIO_setQualification (myGpio、GPIO_Number_29、GPIO_Qual_异 步);
//INTERRUPTLAR GIRMEZSE ACACILIRSIN
GPIO_setQualificationPeriod (myGpio、GPIO_Number_28、0xFF);*/
GPIO_setExtInt (myGpio、GPIO_Number_19、CPU_ExtIntNumber_1);
GPIO_setExtInt (myGpio、GPIO_Number_28、CPU_ExtIntNumber_2);
GPIO_setExtInt (myGpio、GPIO_Number_29、CPU_ExtIntNumber_3);
GPIO_setMode (myGpio、GPIO_Number_34、GPIO_34_Mode_generalpurpose);
GPIO_setDirection (myGpio、GPIO_Number_34、GPIO_Direction_Input);
GPIO_setPullUp (myGpio、GPIO_Number_34、GPIO_PULLUP_Enable);
//高
GPIO_setMode (myGpio、GPIO_Number_3、GPIO_3_Mode_EPWM2B);
//低
GPIO_setMode (myGpio、GPIO_Number_4、GPIO_4_Mode_generalpurpose);
GPIO_setDirection (myGpio、GPIO_Number_4、GPIO_Direction_Output);
GPIO_setLow (myGpio、GPIO_Number_4);
//高
GPIO_setMode (myGpio、GPIO_Number_5、GPIO_5_Mode_EPWM3B);
//低
GPIO_setMode (myGpio、GPIO_Number_0、GPIO_0_Mode_generalpurpose);
GPIO_setDirection (myGpio、GPIO_Number_0、GPIO_Direction_Output);
GPIO_setLow (myGpio、GPIO_Number_0);
//高
GPIO_setMode (myGpio、GPIO_Number_1、GPIO_1_Mode_EPWM1B);
//低
GPIO_setMode (myGpio、GPIO_Number_2、GPIO_2_Mode_generalpurpose);
GPIO_setDirection (myGpio、GPIO_Number_2、GPIO_Direction_Output);
GPIO_setLow (myGpio、GPIO_Number_2);
GPIO_setPullUp (myGpio、GPIO_Number_0、GPIO_PULLUP_Disable);
GPIO_setPullUp (myGpio、GPIO_Number_1、GPIO_PULLUP_Disable);
GPIO_setPullUp (myGpio、GPIO_Number_2、GPIO_PULLUP_Disable);
GPIO_setPullUp (myGpio、GPIO_Number_3、GPIO_PULLUP_Disable);
GPIO_setPullUp (myGpio、GPIO_Number_4、GPIO_PULLUP_Disable);
GPIO_setPullUp (myGpio、GPIO_Number_5、GPIO_PULLUP_Disable);
}
void delay_loop ()
{
短 I、j;
对于(j = 0;j < 1;j++){
对于(i = 0;i < 30000;i++){
}
}
}
错误:
****为项目 BLDC_DRIVER 构建配置调试****
"C:\\ti\\ccsv5\\utils\\bin\\gmake"-k all
'生成文件:./main.c'
'调用:C2000编译器'
"c:/ti/ccsv5/tools/compiler/c2000_6.2.0/bin/cl2000 -v28 -ml -mt --include_path="C:/ti/controlSUITE/device_support/f2802x/v230/f2802x_common --include_path="C:/ti/controlSUITE/device_support/f2802x/v230/f2802x_headers --include_path="C:/ti/ccsv5/tools/compiler/c2000_6.2.0/include --include_path="C:/ti/controlSUITE/development_kits/C2000_LaunchPad -g --diag_warning=dependency--display_error_number --diag_wrap=off --preproc_preproc_main_proc.ppru.c。
"./main.c"、第2行:致命错误#1965:无法打开源文件"common/include/adc.h"
1在编译"./main.c"时检测到灾难性错误。
编译已终止。
属性屏幕截图:
例如、如果您看一下 LaunchPadDemo 示例、您将在源文件 example_F2802xLaunchPadDemo.c 中看到#includes 的编写方式如下:
#include "F2802x_common/include/adc.h"
#include "F2802x_common/include/clk.h"
请注意、包含这些头文件的目录的名称是 F2802x_common、不常见。
如果将源文件中的#include 语句更改为如上所示、并且工程的编译器包含路径具有 C:\ti\controlSUITE\development_kits\c2000_LaunchPad (我认为它已经存在)、则应解决这些错误。
希望这对您有所帮助。
非常感谢、我没有看到这些小错误。 但现在、它给了我另外两个错误、它们被删除了。
****为项目 BLDC 构建配置调试****
"C:\\ti\\ccsv5\\utils\\bin\\gmake"-k all
'生成文件:./main.c'
'调用:C2000编译器'
"c:/ti/ccsv5/tools/compiler/c2000_6.2.0/bin/cl2000 -v28 -ml -mt -include_path="C:/ti/ccsv5/tools/compiler/c2000_6.2.0/include --include_path="C:/ti/controlSUITE/development_kits/C2000_LaunchPad -g --diag_warning=225 --display_error_number --diag_wrap=off --preproc_with_compile --preproc_dependence="main.pP""..c/main.c"
"./main.c"、第118行:警告#225-D:隐式声明函数"PIE_setDebugIntVectorTable"
'完工建筑:./main.c'
'
'构建目标:BLDC.OUT"
'调用:C2000链接器'
"c:/ti/ccsv5/tools/compiler/c2000_6.2.0/bin/cl2000 -v28 -ml -mt -g -diag_warning=225 --display_error_number --diag_wrap=off -z -m"BLDC.map"--stack_size=0x300 --warn_SECTIONS -i"C:/ti/ccsv5/tools/compiler/c2000_6.2.0/lib --reread_lib_libs --reread_lib_lib_ram_modules"-"\con_line_display_linep_lib_rom_lib_lib_line.cmp_line_display_lib_lib_rom_rom_lib_line.html"/ti/ccsv5/tools/compiler/c2000_6.2.0/include -display_lib_lib_line_display_lib_rom_lib_lib_lib_rom_lib_line_display_lib_rom_linep_lib_rom_lib_lib_lib_lib_lib_lib_lib_rom_rom_lib_infote_display_lib_lib_lib_lib_lib_lib_lib_lib_lib_lib_lib_lib_rom.
警告#10247-D:在没有 SECTIONS 规范的情况下创建输出段"csm_rsvD"
警告#10247-D:在不使用 SECTIONS 规范的情况下创建输出段"csmpasswds"
"../28027_RAM_lnk.cmd"、行114:错误#10099-D:程序将无法放入可用内存中。 对齐/分块放置在".text"大小为0xd95的第0页上失败。 可用存储器范围:
>>编译失败
PRAML0大小:0x900未使用:0x900最大孔数:0x900
错误#10010:链接期间遇到错误;未生成"BLDC.OUT"
gmake:***[BLDC.OUT]错误1
gmake:目标`全部'不会由于错误而重制。
****构建完成****
当我单击"error#10099-D"时、它会显示该错误;
/*
// TI 文件$Revision:/main/5 $
//签入$日期:2009年7月6日17:18:44 $
//######################################################################################################################
//
//文件:28027_RAM_lnk.cmd
//
//标题:运行 RAM 的28027示例的链接器命令文件
//
//这仅包括28027器件上的所有 SARAM 块。
//这不包括闪存或 OTP。
//
//请记住,L0受代码保护
//安全模块。
//
//在大多数情况下,这意味着您要迁移到
//另一个定义了更多内存的内存映射文件。
//
//######################################################################################################################
//$TI 版本:DSP2802x 头文件内部版本2 $
//$Release Date:2008年7月15日$
//######################################################################################################################
*
/*===================================================================
//适用于 Code Composer Studio V2.2和更高版本
//--------------------------------------------------------
//除了该内存链接器命令文件外,
//将头文件链接器命令文件直接添加到工程中。
//链接时需要标头链接器命令文件
//将外设结构设置到内部的适当位置
//存储器映射。
//
//在中找到了头文件链接器文件 \DSP2802x_headers\cmd
//
//对于 BIOS 应用程序添加:DSP2802x_Headers_BIOS.cmd
//对于非 BIOS 应用程序添加:DSP2802x_Headers_nonBIOS.cmd
=================================================================================================== *
/*===================================================================
//对于 V2.2之前的 Code Composer Studio
//--------------------------------------------------------
// 1)使用以下-l 语句之一来包含
//项目中的头链接器命令文件。 头文件链接器
//将外设结构链接到正确的文件
//内存映射中的位置*/
/*取消注释此行以仅包括非 BIOS 应用程序的文件*/
/*-l DSP2802x_Headers_nonBIOS.cmd */
/*取消注释此行以仅包括 BIOS 应用程序的文件*/
/*-l DSP2802x_Headers_BIOS.cmd */
/* 2)在项目中添加路径 \DSP2802x_headers\cmd 至
库搜索路径位于 project->build options、linker tab、
库搜索路径(-I)。
/*================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================ *
/*定义 DSP2802x 的存储器块开始/长度
PAGE 0将用于组织程序段
第1页将用于组织数据段
注:
F28027上的存储器块是一致的(也是相同的
物理存储器)。
不应该是相同的存储器区域
同时为 PAGE 0和 PAGE 1定义。
这样做将导致程序损坏
和/或数据。
L0存储器块被镜像-即
它可以在高内存或低内存中访问。
为简单起见、其中仅使用了一个实例
链接器文件。
可组合连续 SARAM 存储器块
如果需要创建更大的存储器块。
*
存储器
{
第0页:
/*在本示例中,L0在第0页和第1页之间拆分*/
/* begin 用于"引导至 SARAM"引导加载程序模式*/
开始:origin = 0x000000,length = 0x000002
RAMM0:origin = 0x000050、length = 0x0003B0
PRAML0:origin = 0x008000、length = 0x000900
复位:origin = 0x3FFFC0,length = 0x000002
IQTABLES:origin = 0x3FE000,length = 0x000B50 //引导 ROM 中的 IQMath 表*/
IQTABLES2:origin = 0x3FEB50,length = 0x00008C //引导 ROM 中的 IQMath 表*
IQTABLES3:origin = 0x3FEBDC,length = 0x0000AA /*引导 ROM 中的 IQMath 表*/
BootROM:origin = 0x3FF27C,length = 0x000D44
第1页:
/*在本示例中,L0在第0页和第1页之间拆分*/
BOOT_RSVD:origin = 0x000002,length = 0x00004E // M0的一部分,引导 ROM 将使用此栈*/
RAMM1:origin = 0x000400、length = 0x000400 //片上 RAM 块 M1 *
DRAML0:origin = 0x008900,length = 0x000700
}
部分
{
/*"引导至 SARAM"模式的设置:
codestart 段(可在 DSP28_CodeStartBranch.asm 中找到)
将执行重定向到用户代码的开始。 *
codestart:> begin,page = 0
ramfuncs:>RAMM0 page = 0
.text:>PRAML0,page = 0
.cinit:> RAMM0,page = 0
.pinit:> RAMM0,page = 0
switch:>RAMM0,page = 0
.reset:> reset,page = 0,type = DSECT //未使用,*/
.stack:>RAMM1,PAGE = 1.
.ebss:> DRAML0,PAGE = 1
econst:>DRAML0,PAGE = 1
.esysmem:>RAMM1,PAGE = 1.
IQMath:>PRAML0,page = 0
IQmathTables :>IQTABLES,PAGE = 0,TYPE = NOLOAD
/*如果调用 IQNexp()或 IQexp(),请取消注释以下部分
库中的函数、以便利用
引导 ROM 中的相关 IQ Math 表(这可以节省空间和引导 ROM
1个等待状态)。 如果此部分未注释、则为 IQmathTables2
将被加载到其他存储器(SARAM、闪存等)中并将采用
上行空间、但0等待状态是可能的。
*
/*
IQmathTables2:> IQTABLES2,PAGE = 0,TYPE = NOLOAD
{
IQMath.lib (IQmathTablesRam)
}
*
/*如果调用 IQNasin ()或 IQasin (),请取消注释以下部分
库中的函数、以便利用
引导 ROM 中的相关 IQ Math 表(这可以节省空间和引导 ROM
1个等待状态)。 如果此部分未注释、则为 IQmathTables2
将被加载到其他存储器(SARAM、闪存等)中并将采用
上行空间、但0等待状态是可能的。
*
/*
IQmathTables3:> IQTABLES3,PAGE = 0,TYPE = NOLOAD
{
IQMath.lib (IQmathTablesRam)
}
*
}
/*
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
//文件结束。
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
*
[引用 user="user5232960"]。/28027_RAM_lnk.cmd",第114行:错误#10099-D:程序不能装入可用内存。 对齐/分块放置在".text"大小为0xd95的第0页上失败。 可用存储器范围:
>>编译失败
PRAML0大小:0x900未使用:0x900最大孔数:0x900
错误#10010:链接期间遇到错误;"BLDC.OUT"未生成[/QUERP]
有关此错误的解释、请访问 :https://processors.wiki.ti.com/index.php/Compiler/diagnostic_messages/10099
为了了解根本原因以及如何修复这些错误、对链接器命令文件有一个基本的了解是很有帮助的。 为此、以下资源将会有所帮助:
http://software-dl.ti.com/ccs/esd/documents/c2000_c28x-compiler-understanding-linking.html
http://software-dl.ti.com/ccs/esd/documents/sdto_cgt_Linker-Command-File-Primer.html
在您的情况下、您可以尝试通过增大 PRAML0 (.text 段分配给该存储器)的存储器长度并将 DRAML0的长度减小相同的数量(因为这两个存储器范围是连续的)来解决该问题。 但是、它也取决于应用程序中其他段的大小、例如分配给 DRAML0的.ebss 和.econst。 因此、如果您的应用程序太大而无法放入 RAM、这可能是不可行的。 在这种情况下、您可能需要移至基于闪存的配置。 许多 controlSUITE 示例都将 RAM 和闪存配置显示为参考。
希望这对您有所帮助。
[引用 user5232960]但现在出现了新的错误,“No source avalable for "0x3ff5f5"”。 除了在“错误日志”窗口中,还出现了属于的错误;[/引用]
我要求今后为每一个新问题设立一个新员额,特别是因为原来的问题已经得到解决。 这有助于跟踪、也有利于在论坛中搜索相关问题的其他人。
至于"no source available "错误、您是否将代码加载到闪存或 RAM 中? 报告的地址位于器件的引导 ROM 中。
此主题 包含有关消息的一些信息。
我还建议从 controlSUITE 中加载类似示例、以检查是否会产生相同的错误。 如果没有、则将您的项目设置与示例进行比较、以查看有何不同。 如果该示例产生相同的错误、则可能与电路板上的 GPIO 引导模式设置有关。
如果您在查看上述参考文献后仍然遇到问题、请在 C2000微控制器论坛中发布新帖子、以便那里的专家可以进一步为您提供帮助。