例程中给出的是在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文件实现函数的编程风格应该怎样理解呢?希望能够得到各位的回答,急求答案,已经纠结了一天了?谢谢,谢谢。。。
Siwei Chen:
回复 Xutong Han2:
恩恩,开始的时候只加入外部函数定义的.h文件,报错,然后加入实现外部函数的.c文件还是一样的错误,说是函数未定义,按照您的方法,我试过了没成功。因为有封装好的函数库,想直接调用函数,就不用对端口DIR OUT等寄存器操作。今天放弃IAR,在win7 64bit 上安装了CCS5.2 虽然安装包是32bit 但是还是一样安装,运行,结果刚才终于好了,还是用CCS吧 虽然是90天试用版,可能是IAR与CCS编译器要求配置不同的原因吧,IAR没解决还是有点不爽。。。(*^__^*) 嘻嘻…… 谢谢啦,