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.

在IAR中,调用MSP-EXP430F5529开发箱历程中的函数

Other Parts Discussed in Thread: MSP430F5529

例程中给出的是在CCS开发环境中的。因为win7 64bit的系统的原因,不好安装ccs就利用虚拟机中的IAR进行编写MSP430F5529的程序。
程序很简单,我只想调用例程中普通函数实现led灯的控制,不想直接对430 I/O口操作,就想调用函数。
#include <msp430f5529.h>
#include"HAL_Board.h"
int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
Board_init();
Board_ledOn(LED1+LED2);
while(1);

return 0;
}
把HAL_Board.h文件添加进来之后,又根据网上的说法,HAL_Board.c添加进去,结果编译通过,链接时总是说
Error[e46]: Undefined external "Board_init()" referred in main ( C:\workspace\MSP430\test5529\Debug\Obj\main.r43 )
Error[e46]: Undefined external "Board_ledOn(uint8_t)" referred in main ( C:\workspace\MSP430\test5529\Debug\Obj\main.r43 )
我在网上查资料,都没有解决问题,其中文件中外部函数的声明external应该没有错误,就是不能通过链接,这种通过.h文件定义外部函数,并通过.c文件实现函数的编程风格应该怎样理解呢?希望能够得到各位的回答,急求答案,已经纠结了一天了?谢谢,谢谢。。。

  • 首先要知道Board_init();  Board_ledOn(LED1+LED2);这两个函数在哪个.c文件中定义的,然后把这个.c文件加载到你的工程中,然后在主程序.c中include子文件的.h文件就可以调用子文件的中函数了,其次如果只是控制IO的灯可以直接初始化P1DIR置1设为输出,P1OUT 输出高或者低电平控制LED灯的亮灭~

  • 恩恩,开始的时候只加入外部函数定义的.h文件,报错,然后加入实现外部函数的.c文件还是一样的错误,说是函数未定义,按照您的方法,我试过了没成功。因为有封装好的函数库,想直接调用函数,就不用对端口DIR OUT等寄存器操作。今天放弃IAR,在win7 64bit 上安装了CCS5.2  虽然安装包是32bit  但是还是一样安装,运行,结果刚才终于好了,还是用CCS吧  虽然是90天试用版,可能是IAR与CCS编译器要求配置不同的原因吧,IAR没解决还是有点不爽。。。(*^__^*) 嘻嘻……   谢谢啦,