Embedded 我的代码未编译,CCTL0未定义

Embedded 我的代码未编译,CCTL0未定义,embedded,msp430,texas-instruments,Embedded,Msp430,Texas Instruments,很抱歉有个新手问题。正在尝试将此代码移植到msp430f5529。它不编译,表示“标识符CCTL0未定义”。我用错钟了吗?A错了。h?两者都有 //*************************************************************************************** // MSP430 Timer Blink LED Demo - Timer A Software Toggle P1.0 & P1.6 // // Descripti

很抱歉有个新手问题。正在尝试将此代码移植到msp430f5529。它不编译,表示“标识符CCTL0未定义”。我用错钟了吗?A错了。h?两者都有

//***************************************************************************************
// 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);
}
//***************************************************************************************
//MSP430定时器闪烁LED演示-定时器A软件切换P1.0和P1.6
//
//描述;通过在软件循环中异或切换P1.0和P1.6。
//由于时钟以1Mhz运行,溢出计数器将计数为8,然后切换
//发光二极管。这样,LED每0.5秒切换一次。
//ACLK=不适用,MCLK=SMCLK=默认DCO
//4
//MSP430G2xx
// -----------------
///| \| XIN|-
// | | |
//——| RST XOUT|-
//| P1.6 |-->发光二极管
//| P1.0 |-->发光二极管
//
//阿尔多·布里亚诺
//德克萨斯仪器公司
//2010年6月
//使用CodeComposer Studio v4构建
//***************************************************************************************
//#包括
//#包括
#包括
#定义LED_0位0
#定义LED_1位6
#定义LED_OUT P1OUT
#定义LED_DIR P1DIR
无符号整数计时计数=0;
//----------------------------------------------------------------------------------------------
真空总管(真空)
{
WDTCTL=WDTPW+WDTHOLD;//停止看门狗定时器
LED_DIR |=(LED_0+LED_1);//将P1.0和P1.6设置为输出方向
LED_OUT&=~(LED_0+LED_1);//关闭LED
CCTL0=CCIE;
TACTL=TASSEL_2+MC_2;//将计时器A设置为SMCLCK,连续
//清除计时器并启用计时器中断
__启用_中断();
__bis_SR_寄存器(LPM0+GIE);//启用中断的LPM0
}
//定时器A0中断服务程序
#pragma向量=时间向量
//----------------------------------------------------------------------------------------------
__中断无效计时器(无效)
{
timerCount=(timerCount+1)%8;
if(timerCount==0)
P1OUT^=(发光二极管0+发光二极管1);
}

我没有使用过F5529,但我使用过其他F5x系列,即A和非A版本中的F5437和F5438

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

从我在代码中看到的情况来看,您将使用TimerA0,这将使它们成为TA0CCTL0和TA0CTL


希望这有帮助。

我没有使用过F5529,但我使用过其他F5x系列,即A和非A版本的F5437和F5438

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

从我在代码中看到的情况来看,您将使用TimerA0,这将使它们成为TA0CCTL0和TA0CTL


希望这能有所帮助。

您认为CCTL0是或应该是什么?你从哪儿弄来的?我假设你认为它是一个计时器寄存器,或者至少在原始代码中是一个计时器寄存器。我可以想象,这个处理器的计时器寄存器的命名[稍微]不同,或者如果您从使用不同编译器编译的代码移植它,那么原始编译器中的头文件是不同的。如果你不知道外围设备中的寄存器是什么,你就很难说了。你认为CCTL0是或应该是什么?你从哪儿弄来的?我假设你认为它是一个计时器寄存器,或者至少在原始代码中是一个计时器寄存器。我可以想象,这个处理器的计时器寄存器的命名[稍微]不同,或者如果您从使用不同编译器编译的代码移植它,那么原始编译器中的头文件是不同的。如果不知道外围设备中的寄存器是什么,那么很难说你在编程。