2014-03-27 93 views
0

对不起,有一个新手问题。尝试将此代码移植到msp430f5529。它不编译,说“标识符CCTL0未定义”。我是否在使用错误的时钟?一个错误的.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 & F5438的A和非A版本的工作。

您必须将示例移植到您的设备,因此CCTL0 & TACTL寄存器必须用您的微控制器寄存器替换。看看你device's datasheet。 它肯定是以下形式: TAxCCTL0 和 TAxCTL 其中x是您正在使用的计时器。

从我在代码中可以看到的,你将使用TimerA0,以便使他们TA0CCTL0和TA0CTL。

希望这会有所帮助。