2014-03-27 7 views
0

미안합니다. 이 코드를 msp430f5529로 이식하려고합니다. 그것은 컴파일되지 않는다. "Identifier CCTL0 undefined"라고 말한다. 잘못된 시계를 사용하고 있습니까? 틀린 .h? 양자 모두?내 코드가 컴파일되지 않습니다. CCTL0 undefined

//*************************************************************************************** 
// MSP430 Timer Blink LED Demo - Timer A Software Toggle P1.0 & P1.6 
// 
// Description; Toggle P1.0 and P1.6 by xor'ing them inside of a software loop. 
// Since the clock is running at 1Mhz, an overflow counter will count to 8 and then toggle 
// the LED. This way the LED toggles every 0.5s. 
// ACLK = n/a, MCLK = SMCLK = default DCO 
//4 
// MSP430G2xx 
// ----------------- 
// /|\| XIN|- 
// | | | 
// --|RST XOUT|- 
// | P1.6|-->LED 
// | P1.0|-->LED 
// 
// Aldo Briano 
// Texas Instruments, Inc 
// June 2010 
// Built with Code Composer Studio v4 
//*************************************************************************************** 
//#include <msp430g2231.h> 
//#include <msp430.h> 
#include <msp430f5529.h> 

#define LED_0 BIT0 
#define LED_1 BIT6 
#define LED_OUT P1OUT 
#define LED_DIR P1DIR 

unsigned int timerCount = 0; 

//---------------------------------------------------------------------------------------------- 
void main(void) 
{ 
    WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer 
    LED_DIR |= (LED_0 + LED_1); // Set P1.0 and P1.6 to output direction 
    LED_OUT &= ~(LED_0 + LED_1); // Set the LEDs off 

    CCTL0 = CCIE; 
    TACTL = TASSEL_2 + MC_2; // Set the timer A to SMCLCK, Continuous 
// Clear the timer and enable timer interrupt 

    __enable_interrupt(); 

    __bis_SR_register(LPM0 + GIE); // LPM0 with interrupts enabled 

} 

// Timer A0 interrupt service routine 
#pragma vector=TIMERA0_VECTOR 
//---------------------------------------------------------------------------------------------- 
__interrupt void Timer_A(void) 
{ 
    timerCount = (timerCount + 1) % 8; 

    if (timerCount == 0) 
     P1OUT ^= (LED_0 + LED_1); 
} 
+1

CCTL0은 무엇을하고 있어야한다고 생각합니까? 어디서 났어? 나는 그것이 타이머 레지스터라고 생각하거나 적어도 원래의 코드에서 타이머 레지스터라고 생각한다. 타이머 레지스터의 이름이이 프로세서와 약간 다르게 지정되어 있거나 다른 컴파일러로 컴파일 된 코드에서 이식하는 경우 헤더 파일은 원래 컴파일러와 다릅니다. 주변기기에 어떤 레지스터가 있는지 알지 못하면 프로그래밍을한다고 생각하기 어렵습니다. – DiBosco

답변

4

은 내가 F5529 함께 일하지 않은,하지만 난 다른 F5x의 가족, 즉 F5437 A의 & F5438 및 비-A 버전과 함께 일했다.

예제를 장치에 포트해야하므로 CCTL0 & TACTL 레지스터를 사용자의 마이크로 컨트롤러 레지스터로 교체해야합니다. 당신을 봐 device's datasheet. 분명히 다음 형식의 것이 될 것입니다. TAxCCTL0 및 TAxCTL 여기서 x는 사용중인 타이머입니다.

코드에서 볼 수 있듯이 TimerA0을 사용하므로 TA0CCTL0 및 TA0CTL이됩니다.

희망이 도움이됩니다.