헤더파일 또는 라이브러리 추가하는 방법 알려주세요~
사랑
질문 제목 :헤더파일 또는 라이브러리 추가하는 방법 알려주세요~ 질문 요약 :헤더파일 또는 라이브러리 추가하는 방법 알려주세요~질문 내용 :안녕하세요 태양광에 관심이 있어서 공부하고 있는 전자공 학부 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, 옵션 잘 만지시면 됩니다.
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2656966 | 문자열 상수 저장메모리 (5) | 은별 | 2024-06-02 |
2656912 | 퀵정렬인데 급해요 ㅠㅠ | 큰돌찬 | 2024-06-02 |
2656767 | 초보입니다.. (1) | 플랜 | 2024-05-31 |
2656744 | 재귀함수 공부하다 이해가 안가서 질문드려요 (10) | PinkPearl | 2024-05-31 |
2656717 | 10진수를 2진수로 바꾸는 프로그램인데요 (3) | 감춰왔던 | 2024-05-31 |
2656686 | 포인터의 메모리값에 문자열넣기가 원래 안되나요..? | 심플이 | 2024-05-31 |
2656658 | 두가지 질문...(요약하기가 어렵내요... 죄송합니다..) | 한봄찬 | 2024-05-30 |
2656583 | 배열에 주소값대입 왜!!!!!!!!!!! (6) | 갅쥐누뉨 | 2024-05-30 |
2656555 | C언어 인데요 EOF에 대해서에여 알고리즘.. | 루라 | 2024-05-29 |
2656531 | 과제가왔는데 문제이해조차못하겠네요.. (2) | 다온 | 2024-05-29 |
2656502 | 비트 연산자 부분 질문드려요... (1) | 진주 | 2024-05-29 |
2656474 | c언어 왕초보인데요.. (4) | 예님 | 2024-05-29 |
2656444 | switch 문 대신에 다른 것을 사용하는 방법 (1) | 맺음새 | 2024-05-28 |
2656365 | for문하나로 1부터 100까지 5의배수 아닌 수들의 합을 구하는 프로그램 질문입니다. (7) | 똘끼 | 2024-05-28 |
2656309 | 구조체를 배열로 여러개만든뒤 함수에서 사용하는법? | 눈내리던날 | 2024-05-27 |
2656280 | c언어 프로그램 틀좀 잡아주실수 있는분.. (2) | 별하 | 2024-05-27 |
2656247 | 질문이 있는데요... | 시원 | 2024-05-27 |
2656218 | 함수 반환하는거 질문 ㅠ | 스릉흔다 | 2024-05-26 |
2656166 | 갑자기 증가하거나 감소하는 부분 처리. (2) | 마디 | 2024-05-26 |
2656141 | 윤성우 저 열혈 c 에서.. (7) | 유진 | 2024-05-26 |