헤더파일 또는 라이브러리 추가하는 방법 알려주세요~
사랑
질문 제목 :헤더파일 또는 라이브러리 추가하는 방법 알려주세요~ 질문 요약 :헤더파일 또는 라이브러리 추가하는 방법 알려주세요~질문 내용 :안녕하세요 태양광에 관심이 있어서 공부하고 있는 전자공 학부 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, 옵션 잘 만지시면 됩니다.
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2700562 | 함수포인터에서요 (7) | 소심한여자 | 2025-07-06 |
2700530 | 전처리문 질문입니다. (1) | 아놀드 | 2025-07-05 |
2700510 | c언어를 어케하면 잘할수 있을까요.. | 연연두 | 2025-07-05 |
2700484 | 두 개가 차이가 뭔지 알려주세요...(소수 찾는 프로그램) (2) | 날위해 | 2025-07-05 |
2700426 | 인터넷 창 띄우는 질문이요 (1) | 정훈 | 2025-07-04 |
2700400 | 원넓이를 계산이요 ㅜㅜ | 천칭자리 | 2025-07-04 |
2700368 | if에 관해서 질문이요... | Orange | 2025-07-04 |
2700339 | 이거 결과값이 왜이런건지.. (4) | 그댸와나 | 2025-07-04 |
2700313 | 파일 읽어서 저장하는데 빈파일일 경우 문재가 발생하네요.. (2) | 크나 | 2025-07-03 |
2700287 | 구조체 동적할당 연습을 하는데 오류가 뜹니다...(해결) (3) | 아련나래 | 2025-07-03 |
2700264 | 문자와 숫자 동시에 입력??? | 글고운 | 2025-07-03 |
2700236 | txt파일로만 쓰고 읽게 하려면 어떻게 해야 하나요..?? (8) | 미국녀 | 2025-07-03 |
2700211 | 전위 연산자 (2) | 어른처럼 | 2025-07-02 |
2700183 | C에서 파일이름을 받고, 그 파일의 사이즈를 출력해줘야하는데 내용이 출력이 안되네요 ;ㅅ; | 피스케스 | 2025-07-02 |
2700150 | 꼭좀 도와주세요ㅠㅠㅠ | 호습다 | 2025-07-02 |
2700095 | 연산문제...질문... | 오빤테앵겨 | 2025-07-01 |
2700070 | while문 , 3의배수 출력하는 프로그램좀 짜주세욤. | 횃불 | 2025-07-01 |
2700041 | 초보인데요 ㅎ 배열안에 배열을 집어넣을수 있나요?? | 헛장사 | 2025-07-01 |
2700012 | 배열// (1) | 전갈자리 | 2025-07-01 |
2699895 | 무한루프에 빠집니다.!! 해결좀부탁드려요 (10) | 선아 | 2025-06-30 |