主题中讨论的其他部件: MSP430G2553
工具/软件:Code Composer Studio
我正在使用msp430f5659微控制器。 我正在尝试连接LCD,UART,但在构建之后却出现了错误:未解析的符号,首先参考。 我已阅读论坛以解决此错误,发现我缺少一些库,但无法找到哪个库。 我附上了我的控制台的屏幕截图,问题屏幕。 请告诉我我我犯了什么错误?
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.
工具/软件:Code Composer Studio
我正在使用msp430f5659微控制器。 我正在尝试连接LCD,UART,但在构建之后却出现了错误:未解析的符号,首先参考。 我已阅读论坛以解决此错误,发现我缺少一些库,但无法找到哪个库。 我附上了我的控制台的屏幕截图,问题屏幕。 请告诉我我我犯了什么错误?
Harish yadav 说:我尝试连接LCD,UART,但在构建之后会出现错误:未解析符号,首先参考。 我已阅读论坛以解决此错误,我发现缺少某些库,但无法找到哪个库。[/QUOT]
哈里什
未解决的符号错误基本上是表示main.c引用了符号clean_lcd,lcd_init等,但链接程序找不到它的定义。 定义可以位于作为项目一部分进行编译和链接的C源文件中,也可以位于链接到项目的库文件中。 我不知道您正在使用的项目/接口代码是如何定义这些符号的,但我看到/driverlibrary目录中有一些源文件。 如果这些文件包含这些符号的定义,我想它们应该包含这些定义。 或者,符号定义可能来自库,但MSP设备论坛需要考虑哪个库。
您好,
这是我的lcd.h文件:
/*
* lcd.h
*
* 创建日期:2017年3月21日
* 作者:Acer
*/
包含"inc/hw659.h"
#ifndef驱动器LIBRARY_LCD_H_
#define DRIVERLIBRARY_LCD_H_
#define LCD_RS BIT1.
#define LCD_EN BIIT2
#define LCD_D4 BIT3.
#define LCD_D5 BIT4.
#define LCD_D6 BIT5.
#define LCD_D7 BIT6.
#define LCD_DIR P1DIR
#define lcd_port P1OUT
#define LCD_port_mask (LCD_EN | LCD_D4 | LCD_D5 | LCD_D6 | LCD_D7)
extern void lcd_cmd(char);
外部void lcd_pulse (void);
extern void lcd_init(void);
extern void lcd_data(unsigned char);
extern void set_cursor_pos(int,int );
extern void clearport();
外部真空bussyck (void);
extern void cleal_lcd (void);
extern void显示(unsigned char*字);
#endif /* DRIVERLIBRARY_LCD_H_*/
这是c文件中发生错误的2个函数:
void set_cursor_pos (int row,int col)
{
字符地址;
IF (行=0)
addr=0x00; //行0,然后addr=0x00h (RAM addr)
否则
addr=0x40; //行1 den addr=0x40h
Addr |=col; //为列添加偏移量
lcd_cmd(0x80|addr); //设置用于显示的DDRAM地址
}
void clean_lcd()
{
LCD_CMD (0x01); //清除显示
//_delay_cycles (1000);
LCD_cmd(0x02); //返回主页
//_delay_cycles (10万);
}
我正在附加控制台文本文件,正如您所说。
哈里什
此处的问题是编程错误,与工具集或设备无关。
查看构建日志后,我看到main.c正在编译,但lcd.c没有编译。 通常,作为项目一部分的所有C源文件都应进行编译,然后生成的目标文件应作为生成过程的一部分进行链接。 在您的项目中,C源文件是main.c和lcd.c,但只编译main.c。 我查看了源文件lcd.c并看到了以下内容:
#ifdef驱动器LIBRARY_LCD_H_
#include"lcd.h"
...
...
#endif
由于 在源代码中的该点未定义DRIVERLIBRARY_LCD_H_,因此假定文件中的整个代码无效,因此未编译。 如果将#include "LCD.h"移到#ifdef行上方,则符号定义(以及代码的其余部分)将有效,并且将生成LCD.c文件。
请告诉我们这是否有助于解决问题。