헤더파일 또는 라이브러리 추가하는 방법 알려주세요~
사랑
질문 제목 :헤더파일 또는 라이브러리 추가하는 방법 알려주세요~ 질문 요약 :헤더파일 또는 라이브러리 추가하는 방법 알려주세요~질문 내용 :안녕하세요 태양광에 관심이 있어서 공부하고 있는 전자공 학부 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, 옵션 잘 만지시면 됩니다.
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2676152 | 기본적인거 하나 질문드립니다. | 개미 | 2024-11-24 |
2676124 | 함수선언관련 질문이에요~...털썩..수정완료 (2) | 가지 | 2024-11-24 |
2676092 | C언어 책 (2) | 아서 | 2024-11-24 |
2676065 | 웹사이트 또는 메신저 등에서 원하는 텍스트를 검사하는방법?? (1) | 모든 | 2024-11-23 |
2676033 | 배열 기초연습중 발생하는 에러 ㅠㅜ... | Creative | 2024-11-23 |
2676005 | keybd_event 게임 제어 | 영글 | 2024-11-23 |
2675900 | 진짜기본적인질문 | 글길 | 2024-11-22 |
2675845 | 수정좀해주세요ㅠㅠㅠ | 해골 | 2024-11-21 |
2675797 | 병합 정렬 소스 코드 질문입니다. (2) | 도래솔 | 2024-11-21 |
2675771 | 큐의 활용이 정확히 어떻게 되죠?? | 해긴 | 2024-11-21 |
2675745 | 도서관리 프로그램 질문이요 | 도리도리 | 2024-11-20 |
2675717 | 2진수로 변환하는것! (3) | 동생몬 | 2024-11-20 |
2675599 | for문 짝수 출력하는 법 (5) | 널위해 | 2024-11-19 |
2675575 | Linux 게시판이 없어서.. | 첫삥 | 2024-11-19 |
2675545 | 구조체 이용할 때 함수에 자료 넘겨주는 것은 어떻게 해야 하나요? | 아연 | 2024-11-19 |
2675518 | 사각형 가로로 어떻게 반복해서 만드는지좀.. 내용 | 신당 | 2024-11-18 |
2675491 | !느낌표를 입력하는것은 어떻게합니까~~?ㅠㅠ (5) | 사지타리우스 | 2024-11-18 |
2675411 | 파일입출력으로 받아온 파일의 중복문자열을 제거한 뒤 파일출력 | 앨버트 | 2024-11-17 |
2675385 | 링크드리스트 주소록 질문드립니다. (1) | 겨루 | 2024-11-17 |
2675356 | 2진수를 10진수로 바꾸려고 하는데 막히네요.. | 풀잎 | 2024-11-17 |