This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

求助:MSP430F5529编译出错

Other Parts Discussed in Thread: MSP430F5529

本人刚接触单片机,学校直接发的MSP430F5529,还没捂热乎。刚开始各种困难,今天,编译一个程序,功能是用PAD触摸键点亮5个LED灯,可是磕磕绊绊编译到最后总是剩下3个错误而且我也解决不了,现特地来向各位大神求救,希望可以帮一下忙,小弟感激不尽!

编译错误描述:

1、#10010 errors encountered during linking; "shiyan.out" not built

2、<a href="file:/D:/MSP430/anzhuangchu/ccsv5/tools/compiler/dmed/HTML/10234.html">#10234-D</a>  unresolved symbols remain

3、unresolved symbol main, first referenced in D:\MSP430\anzhuangchu\ccsv5\tools\compiler\msp430\lib\rts430x.lib<boot.obj>

文件main.c程序内容为:

#include <stdint.h>
#include "msp430.h"
#include "HAL_PMM.h"
#include "HAL_Board.h"
#include "HAL_Buttons.h"
#include "HAL_Dogs102x6.h"
#include "CTS_Layer.h"
#include "CTS_HAL.H"
#include "stdlib.h"
void CAPLED(void)
{
uint8_t sliderPosition = 0;

Board_ledOff(LED_ALL); //关闭所有LED
Dogs102x6_clearScreen();
buttonsPressed = 0;
TI_CAPT_Init_Baseline(&slider); //触摸按键初始化

while (!(buttonsPressed & BUTTON_S2)) //S2按键按下退出程序
{
sliderPosition = TI_CAPT_Slider(&slider);

sliderPosition = (sliderPosition + 10) / 20; //得到触摸按键位置
//以下 根据触摸按键位置点亮相应LED
switch (sliderPosition)
{
case 0: Board_ledOff(LED4 + LED5 + LED6 + LED7 + LED8);
break;
case 1: Board_ledOn(LED4);
Board_ledOff(LED5 + LED6 + LED7 + LED8);
break;
case 2: Board_ledOn(LED4 + LED5);
Board_ledOff(LED6 + LED7 + LED8);
break;
case 3: Board_ledOn(LED4 + LED5 + LED6);
Board_ledOff(LED7 + LED8);
break;
case 4: Board_ledOn(LED4 + LED5 + LED6 + LED7);
Board_ledOff(LED8);
break;
case 5: Board_ledOn(LED4 + LED5 + LED6 + LED7 + LED8);
break;
case (255 / 17):
break;
}
}

Board_ledOff(LED_ALL);
Dogs102x6_clearScreen();
buttonsPressed = 0;
}

注:附件中的压缩包,包含这个工程中的一切文件,各位大神也可以自己试着编译一下。

非常感谢您的帮助!!!

shiyan.zip
  • ZhaoF,

    我看了你的代码,具体问题如下:

    1. 你的main.c中缺主函数,就是:void main() {} ,这个最重要的函数没有。添加下面一行,在主函数中调用CAPLED()函数。

    void main()
    {

    WDTCTL = WDTPW+WDTHOLD; // Stop WDT
    CAPLED();
    }

    2. 即使加上main,还是不能编译成功,而且错误更多,那是因为:包含了好多头文件,但是没有对应的.c文件,就是说只有函数的声明,没有函数的具体实现。具体举例来说:

    CAPLED()函数中调用Board_ledOff(),函数,它在HAL_Board.h中声明,但是没有HAL_Board.c,故没有Board_ledOff(),函数的具体实现。

    你可以先使用CCS的MSP430Ware 建一个最简单的闪灯程序,其实就是先学习如何点亮一个LED,灭掉一个LED,然后再慢慢学习。

    你的工程中已经使用了库函数,但是只有库函数的头文件,缺少源文件。

  • 下面是非常简单的闪灯例子。你先看看这个吧,补补基础知识。

    #include <msp430.h>

    int main(void)
    {
    volatile unsigned int i;

    WDTCTL = WDTPW+WDTHOLD; // Stop WDT

    P1DIR |= BIT0; // P1.0 set as output

    // P1OUT |= BIT0; //Turn on LED
    // P1OUT &= ~BIT0; //Turn off LED

    while(1) // continuous loop
    {
    P1OUT ^= BIT0; // XOR P1.0
    for(i=50000;i>0;i--); // Delay
    }
    }

  • 你好:

    补充一下;

    这里可以找到更多的关于MSP430F5529的每个外设的参考例程,让你更快速简单的了解它的开发。

    C:\ti\ccsv5\ccs_base\msp430\msp430ware_1_25_00_30\examples\devices\5xx_6xx\MSP430F55xx Code Examples\C

    谢谢。