헤더파일 또는 라이브러리 추가하는 방법 알려주세요~
사랑
질문 제목 :헤더파일 또는 라이브러리 추가하는 방법 알려주세요~ 질문 요약 :헤더파일 또는 라이브러리 추가하는 방법 알려주세요~질문 내용 :안녕하세요 태양광에 관심이 있어서 공부하고 있는 전자공 학부 3학년생입니다. 논문에 나와있는 코드를 따라 작성 하려고 하는데 헤더파일에서 넘어가질 않네요아래 코드를 돌렸는데 빨간색 부분에서 오류가 납니다.그래서 Texas Instrument에서 제공하는 파일을 찾아서 링크 시켜줬는데해더파일안에 있는 헤더파일에서 또 막히네요 ㅠ.ㅠ한꺼번에 경로 지정할수 있는 방법이나 인스톨 하는 방법이 있나요??TI에서 제공하는 헤더파일은 파일로 첨부했습니다.msp430x26x.h 안에 들어있는 또 다른 헤더파일은#include iomacros.h입니다.아래 코드도 soucer.c 로 올릴께요~ ㅎ문제 해결 좀 도와주세요 ^^그리고 사진파일은 TI에서 제공한 파일을 다 못 올려서 스샷만 첨부할께요 ^^
/***********************************************************************
* File: main.c
* Author: Leonor Linares
* Created: 05/15/2008
* Changed: 11/21/2008
* Notes: The files in this project are intended to be viewed using
* a tab size and indent size of 4. Both of these options can
* be set in IAR under Tools-Options.
*
* This file contains definitions of peripherals, the high
* level startup routine and the main system loop.
**********************************************************************/
#include msp430x26x.h
#include math.h
// Sensing and filtering
volatile unsigned long filter1 = 0;
volatile unsigned long filteri = 0;
volatile unsigned long filter2 = 0;
volatile unsigned long filterv = 0;
volatile unsigned long filter3 = 0;
volatile unsigned long filterp = 0;
// Counters
char i = 0;
volatile unsigned long j = 0;
volatile unsigned int shortlim = 2000;
volatile unsigned long longlim = 100000;
volatile unsigned long countlim = 2000;
volatile unsigned long passlim = 1000000;
// MPPT signals
volatile unsigned int IPV;
volatile unsigned int VPV;
volatile unsigned int VOUT;
volatile unsigned long PPV_P = 0;
volatile unsigned long PPV = 0;
volatile unsigned long P_PASS = 0;
volatile signed long TEMP1 = 0;
volatile signed long TEMP2 = 0;
volatile unsigned int VREF_OPT = 0;
volatile unsigned int VREF = 2137;
volatile unsigned int VREF_MIN = 2137;
volatile unsigned int VREF_MAX = 3562;
volatile unsigned int VREF_INC = 45;
// Control signals
volatile signed int error = 0;
volatile signed int error_P = 0;
volatile signed int x = 0;
volatile signed int x_P = 0;
volatile signed int u = 0;
// Mode selection signals
int MODE = 1;
int PASS = 0;
// Gate driver signals
unsigned int HIBUCK = 0;
unsigned int HIBOOST = 0;
void main(void) {
WDTCTL = WDTPW + WDTHOLD; // Stop Watchdog Timer
/**********************************************************************
SETUP EXTERNAL 16MHZ XTAL
**********************************************************************/
P5DIR |= BIT4 + BIT5 + BIT6; // P5.4, P5.5, P5.6= output direction
P5SEL |= BIT4 + BIT5 + BIT6; // P5.4, P5.5, P5.6= MCLK, SMCLK, ACLK
BCSCTL1 &= ~XT2OFF; // Activate XT2 high freq xtal
BCSCTL3 |= XT2S_2 + XCAP_2; // 16MHz crystal or resonator
do
{
IFG1 &= ~OFIFG; // Clear OSCFault flag
for (i = 0xFF; i 0; i--); // Time for flag to set
}
while (IFG1 & OFIFG); // OSCFault flag still set?
BCSCTL2 |= SELM_2 + SELS; // MCLK = SMCLK = XT2 HFXTAL (16MHz)
/***********************************************************************
SETUP TIMER B
**********************************************************************/
// Start-up sequence: Turn on both low sides to charge bootstrap caps
P4SEL = 0;
P4OUT = BIT2 + BIT4;
P4OUT = BIT2 + BIT4;
P4OUT = BIT2 + BIT4;
P4OUT = BIT2 + BIT4;
P4OUT = BIT2 + BIT4;
P4OUT = BIT2 + BIT4;
P4OUT = BIT2 + BIT4;
P4OUT = BIT2 + BIT4;
P4OUT = BIT2 + BIT4;
// P4.1 - P4.4 output
P4DIR |= BIT1 + BIT2 + BIT3 + BIT4;
TBCCTL0 = CCIE;
TBCCR0 = 39; // PWM Period 40-1
TBCCTL1 = CLLD_2 + OUTMOD_2;
TBCCTL2 = CLLD_2 + OUTMOD_6;
TBCCTL3 = CLLD_2 + OUTMOD_2;
TBCCTL4 = CLLD_2 + OUTMOD_6;
TBCTL = TBSSEL_2 + MC_3; // SMCLK, up-down mode
/***********************************************************************
SETUP TIMER A
**********************************************************************/
P1DIR |= BIT2; // P1.2
CCTL0 = CCIE; // Interrupt enable
CCR0 = 4000; // CCR1 PWM duty cycle
TACTL = TASSEL_1 + MC_1; // ACLK, up mode
/***********************************************************************
SETUP ADC
**********************************************************************/
P6SEL = BIT1 + BIT3 + BIT4; // Enable A/D channel A1, A3, A4
// Turn on and set up ADC12
ADC12CTL0 = SHT1_4 + SHT0_4 + MSC + REF2_5V + REFON + ADC12ON;
// sample sequence of channels
ADC12CTL1 = SHP + CONSEQ_3 + SHS_0;
ADC12MCTL1 = SREF_1 + INCH_1; //ref+=Vref, channel = A1
ADC12MCTL3 = SREF_1 + INCH_3; //ref+=Vref, channel = A3
ADC12MCTL4 = SREF_1 + INCH_4 + EOS;
//ref+=Vref, channel = A4, end of sequence
ADC12IE = 0x08; // Enable ADC12IFG.3
ADC12CTL0 |= ENC; // Enable conversions
ADC12CTL0 |= ADC12SC; // Start conversion
_BIS_SR(GIE); // Enable interrupts
/***********************************************************************
CONTROL ALGORITHMS
**********************************************************************/
P6DIR |= BIT0; // Set P6.0 to output direction
while(1)
{
P6OUT ^= BIT0;
j++;
// PASS THROUGH mode: Input voltage can stay the same
if(PASS)
{
P4SEL = 0;
P4OUT = BIT1 + BIT3;
} // End of pass-through loop
else
{
// VOLTAGE CONTROLLER
if (VOUT = 3641) // Output voltage limit 40V
{
error = (VPV - VREF);
x = x_P + ((error*10 - error_P*7)/100);
if ( x -2100)
x = -2100;
if ( x 815)
x = 815;
u = x + 2000;
error_P = error; // Save current variables
x_P = x;
}
else
u = u;
// MODE SELECTION
if(u 0 && u = 2000) // Must increase input voltage: BUCK mode
MODE = 1;
else if(u 2000) // Must decrease input voltage: BOOST mode
MODE = 2;
else
MODE = MODE;
switch(MODE)
{
// BUCK operation
case 1:
{
P4OUT = BIT3;
P4SEL = BIT1 + BIT2;
if (u = 50 && u = 1800)
HIBUCK = u*4/200;
else if (u 50)
HIBUCK = 1;
else if (u 1800)
HIBUCK = 36;
break;
}
// BOOST operation
case 2:
{
P4OUT = BIT1;
P4SEL = BIT3 + BIT4;
if (u = 2125 && u = 2875)
HIBOOST = 40-((u-1875)*4/200);
else if (u 2125)
HIBOOST = 35;
else if (u 2875)
HIBOOST = 20;
break;
}
}
} // End of controller loop
if (j = countlim) // Begin MPPT scan
{
j = 0;
if (countlim longlim)
{
PPV = filterp;
if (PPV PPV_P)
{
PPV_P = PPV;
VREF_OPT = VREF;
}
if (VREF = VREF_MAX)
{
if(PASS)
{
P_PASS = filterp;
TEMP1 = P_PASS-PPV_P; // Compare Max output power vs.
TEMP2 = labs(TEMP1); // power during pass-through mode
// Power difference must be within 2W for pass-through
if(TEMP2 256552)
{
PASS = 1;
countlim = passlim;
}
else
{
VREF = VREF_OPT;
PASS = 0;
countlim = longlim;
}
}
else
{
PASS = 1;
}
}
else
VREF = VREF + VREF_INC;
}
else
{
countlim = shortlim;
VREF = VREF_MIN;
VREF_OPT = VREF_MIN;
PPV_P = 0;
P_PASS = 0;
PASS = 0;
}
}
} // End of while
} // End of main
/***********************************************************************
ADC interrupt service routine
**********************************************************************/
#pragma vector=ADC12_VECTOR __interrupt void ADC12ISR (void) {
VPV = ADC12MEM4; // Move A4 results, IFG is cleared VIN
IPV = ADC12MEM3; // Move A3 results, IFG is cleared IIN
VOUT = ADC12MEM1; // Move A1 results, IFG is cleared VOUT
// DIGITAL FILTERING
filter1 = IPV + (filteri4) - filteri;
filteri = filter14;
filter2 = VPV + (filterv4) - filterv;
filterv = filter24;
filter3 = filteri*filterv + (filterp4) - filterp;
filterp = filter34;
}
/***********************************************************************
Timer A interrupt service routine
**********************************************************************/
#pragma vector=TIMERA0_VECTOR __interrupt void Timer_A (void) {
CCR0 = 1024; // Charge at 16Hz
if(PASS)
{
P4OUT = 0; // Add deadtime after turning high side off
P4OUT = BIT2 + BIT4; // Turn low side on
P4OUT = BIT2 + BIT4;
P4OUT = BIT2 + BIT4;
P4OUT = 0;
P4OUT = BIT1 + BIT3;
}
else if (MODE == 1) // BUCK
{
P4OUT = 0; // Add deadtime after turning high side off
P4OUT = BIT4; // Turn low side on
P4OUT = BIT4;
P4OUT = BIT4;
P4OUT = 0;
P4OUT = BIT3;
}
else if (MODE == 2) // BOOST
{
P4OUT = 0; // Add deadtime after turning high side off
P4OUT = BIT2; // Turn low side on
P4OUT = BIT2;
P4OUT = BIT2;
P4OUT = 0;
P4OUT = BIT1;
44); }
}
/***********************************************************************
Timer B interrupt service routine
**********************************************************************/
#pragma vector=TIMERB0_VECTOR __interrupt void Timer_B (void) {
TBCCR1 = HIBUCK;
TBCCR2 = HIBUCK + 3;
TBCCR3 = HIBOOST;
TBCCR4 = HIBOOST + 3;
}
-
자랑
무슨 말인지 모르겠네요 ㅠ.ㅠ
-
참없다
gcc 계열 쓰시면 -l, -L, -I, 옵션 잘 만지시면 됩니다.
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2653802 | 배열에 저장된 데이터와 원하는 데이터비교하는것좀.. | 리카 | 2024-05-05 |
2653727 | 고수님들 봐주세요~ (2) | 아담 | 2024-05-04 |
2653702 | C언어 의 단계가 어떻게 되나요???????????????? (3) | 길가온 | 2024-05-04 |
2653645 | 저....while인데..이게무슨뜻인지좀.. | 설희 | 2024-05-03 |
2653613 | 성별변수 | 뿡뿡 | 2024-05-03 |
2653584 | 16진수 변환 관련 질문 드립니다. | 매미꽃 | 2024-05-03 |
2653557 | 한글 완성형과 조합형의 전환 | 해지개 | 2024-05-02 |
2653506 | void형 포인터 이해안가요 ㅠㅠ (2) | 뭘봐요 | 2024-05-02 |
2653482 | 패턴매칭에 대한 질문하나 올립니다 | 미투리 | 2024-05-02 |
2653452 | main 함수 매개변수 문의드립니다. (2) | 딥레드 | 2024-05-01 |
2653425 | 간단한 포인터 설명좀 해주세요 ㅠㅠㅠ | 차분나래 | 2024-05-01 |
2653400 | 플로우 차트 작성 질문입니다. (2) | 아인 | 2024-05-01 |
2653370 | c언어 해석 부탁드립니다 ㅠ | 악당 | 2024-05-01 |
2653345 | 분수의 덧셈 질문이요 | 하늘 | 2024-04-30 |
2653313 | //정수 n을 입력받아 1부터 n까지의 합을 구하는 프로그램// (6) | 거북이 | 2024-04-30 |
2653284 | 알파벳 변수 관련(배열에서) | 나슬 | 2024-04-30 |
2653260 | C언어 scanf인데.. | 찬누리 | 2024-04-30 |
2653230 | 한글로 해석부탁드립니다. (1) | BlackCat | 2024-04-29 |
2653142 | 질문드립니다.. 부탁드립니다.. | 머슴밥 | 2024-04-29 |
2653119 | cmd창[도스창, 콘솔창]에 한글이 출력이 안되요. (2) | By은지 | 2024-04-28 |