[求助]调试程序出现以下错误

我用CH375作USB主机方式,以串口方式读取U盘数据。参考贵公司提供的CH375LIB\AVR\FILELIBB\EXAM1 CH375HFT.C程序,添加的头文件是CH375HFB.H。但为什么编译出现这种错误呢?我用的是ICC编译器。 CH375HFT.C程序的头文件也就只有CH375HFB.H这一个!

E:\iccv7avr\bin\imakew -f CH375TEST8.mak iccavr -o CH375TEST8 -g -e:0x4000 -ucrtatmega.o -bfunc_lit:0x54.0x4000 -dram_end:0x45f -bdata:0x60.0x45f -dhwstk_size:16 -beeprom:0.512 -fihx_coff -S2 @CH375TEST8.lk -lcatmega !ERROR file 'ch375test8.o': undefined symbol '_pDISK_BASE_BUF' !ERROR file 'ch375test8.o': undefined symbol '_CH375LibConfig' !ERROR file 'ch375test8.o': undefined symbol '_CH375DiskReady' !ERROR file 'ch375test8.o': undefined symbol '_CH375Init' !ERROR file 'ch375test8.o': undefined symbol '_CH375IntStatus' !ERROR file 'ch375test8.o': undefined symbol '_delay1us' !ERROR file 'ch375test8.o': undefined symbol '_CH375DiskStatus' !ERROR file 'ch375test8.o': undefined symbol '_LCD_write_char' !ERROR file 'ch375test8.o': undefined symbol '_CH375GetVer' !ERROR file 'ch375test8.o': undefined symbol '_CH375DiskConnect' E:\iccv7avr\bin\imakew.exe: Error code 1 Done: there are error(s). Exit code: 1. Mon Apr 27 15:41:48 2009

还需要添加CH375HFA.A文件进去才能编译


是CH375HFA.A还是CH375HFB.A?


把CH375HFB.A添加进去后,编译,却出现下面的这些错误!是什么意思?我从来没创建过CH375MAI这样的工程或C文件。

E:\iccv7avr\bin\imakew -f CH375TEST8.mak iccavr -o CH375TEST8 -g -e:0x4000 -ucrtatmega.o -bfunc_lit:0x54.0x4000 -dram_end:0x45f -bdata:0x60.0x45f -dhwstk_size:16 -beeprom:0.512 -fihx_coff -S2 @CH375TEST8.lk L:\最新毕设\AVR程序\CH375HFB.A -lcatmega !ERROR file 'CH375MAI.o': undefined symbol 'push_gset1' !ERROR file 'CH375MAI.o': undefined symbol 'push_gset2' !ERROR file 'CH375MAI.o': undefined symbol 'push_gset3' !ERROR file 'CH375MAI.o': undefined symbol 'push_gset4' !ERROR file 'CH375MAI.o': undefined symbol 'push_gset5' !ERROR file 'CH375MAI.o': undefined symbol '_xFileNameEnumer' !ERROR file 'ch375test8.o': undefined symbol '_delay1us' !ERROR file 'CH375MAI.o': undefined symbol 'pop_gset1' !ERROR file 'CH375MAI.o': undefined symbol 'pop_gset2' !ERROR file 'CH375MAI.o': undefined symbol 'pop_gset3' !ERROR file 'CH375MAI.o': undefined symbol 'pop_gset4' !ERROR file 'CH375MAI.o': undefined symbol 'pop_gset5' !ERROR file 'ch375test8.o': undefined symbol '_LCD_write_char' E:\iccv7avr\bin\imakew.exe: Error code 1 Done: there are error(s). Exit code: 1. Mon Apr 27 19:22:55 2009


你在你的工程里面需要添加一个CH375HFT.C还有一个就是CH375HFB.A文件,然后把CH375HFB.H文件拷贝到工程目录下面去,选择MEGA32以上的单片机就可以进行编译了.


我这回直接把贵公司提供的CH375LIB\AVR\FILELIBB\EXAM1 CH375HFT.C程序拿来编译,都没修改到任何地方。像4楼所说的,设置工程文件如 /bbs/View.asp?S=101&I=1511 所说,可是还是出现以下错误。

!W C:\DOCUME~1\Administrator\桌面\新建文件夹\CH375HFB.H(302): unknown preprocessor directive "#endifCH375LibConfig" !E C:\DOCUME~1\Administrator\桌面\新建文件夹\CH375HFB.H(879): "#endif" missed for if-group started at line 14 E:\iccv7avr\bin\imakew -f XX.mak iccavr -c -e -D__ICC_VERSION="7.13" -DATMEGA -DATMega128 -l -g -Mavr_enhanced -Wf-use_elpm C:\DOCUME~1\Administrator\桌面\新建文件夹\CH375HFT.C !W C:\DOCUME~1\Administrator\桌面\新建文件夹\CH375HFB.H(302): unknown preprocessor directive "#endifCH375LibConfig" !E C:\DOCUME~1\Administrator\桌面\新建文件夹\CH375HFB.H(879): "#endif" missed for if-group started at line 14 E:\iccv7avr\bin\imakew.exe: Error code 1 Done: there are error(s). Exit code: 1. Tue Apr 28 14:56:25 2009


你发个E-MAIL到我们技术支持信箱,我们给你发一个完整的工程:tech@wch.cn


邮件已发送,麻烦注意查收。


程序已经给你发送,你那过去进行编译就可以了


我用ICC AVR 6.31A编译了,可是出现以下错误:

!E C:\DOCUME~1\Administrator\桌面\avr\avr\CH375HFT.C(23): Could not find include file !E C:\DOCUME~1\Administrator\桌面\avr\avr\CH375HFT.C(24): Could not find include file !E C:\DOCUME~1\Administrator\桌面\avr\avr\CH375HFT.C(25): Could not find include file


 这几个头文件在ICC编译器的安装目录下,在编译器中设置一下路径就可以了.建议你去看一下ICC编译器的使用说明


10楼说对了,可是我自己做了个测试CH375识别U盘程序,它却识别不了,一直停留在“Wait Upan”等待U盘这句话,这是怎么回事? 我插入U盘也没跳过。 我采用CH375串口方式,单片机(M16) 《====》CH375《====》USB 串口 U盘

以下是我的测试程序: #include #include #include #include "CH375HFB.H" #include "1602.h"

#define CH375_INT_WIRE ( PINB & 0x10 ) /* PINB.4, CH375的中断线INT#引脚,连接CH375的INT#引脚,用于查询中断状态 */

void xWriteCH375Cmd( UINT8 mCmd ) { UCSRA|=0x41;//TXCIE=1;TXB8=1; //TXCIE = 1,发送时使能中断TXB8 = 1, 1表示地址,0 表示数据 UCSRB|=0x40;//TXC=1; 发送数据开始 UDR = mCmd; //发送缓冲器 while (UCSRB==0x40); delay2us( ); delay2us( ); }

void xWriteCH375Data( UINT8 mData ) { UCSRA|=0x40;//TXCIE = 1,发送时使能中断TXB8 = 0, 1表示地址,0 表示数据 TXB8=0; UCSRB|=0x40; //TXC=1 发送数据开始 UDR = mData; while (UCSRB==0x40); delay2us( ); }

UINT8 xReadCH375Data( void ) { delay2us(); UCSRA|=0x80;//RXCIE = 1,发送时使能中断RXB8=0, 1表示地址,0 表示数据RXB8=0; UCSRB|=0x80;//接收数据开始 RXC=1 while (UCSRB==0x80); return(UDR); }

/* 延时2微秒,不精确 */ void delay2us( ) { unsigned char i; for ( i = 2; i != 0; i -- ); }

/* 延时指定毫秒时间,根据单片机主频调整,不精确 */ void mDelaymS( UINT8 ms ) { UINT16 i; while ( ms -- ) for ( i = 2600; i != 0; i -- ); }

/* 检查操作状态,如果错误则显示错误代码并停机 */ void mStopIfError( UINT8 iError ) { if ( iError == ERR_SUCCESS ) return; /* 操作成功 */ LCD_write_string(0,0,"Error"); /* 显示错误 */ }

void mInitSTDIO( ) { UBRRH = 0; UBRRL = 47; /* 9600bps@7.3728MHz */ UCSRB = 0x1C; /* BIT(RXEN) | BIT(TXEN);|BIT(UCSZ2) */ UCSRC = 0x06; /* BIT(UCSZ1) | BIT(UCSZ0); 9个数据位*/

} /* 设置CH375为USB主机方式 */ unsigned char mCH375Init( ) { unsigned char c, i; xWriteCH375Cmd( CMD_SET_USB_MODE ); /* 设置USB工作模式 */ xWriteCH375Data( 6 ); /* 模式代码,自动检测USB设备连接 */ for ( i = 0xff; i != 0; i -- ) { /* 等待操作成功,通常需要等待10uS-20uS */ c =UDR; if ( c == CMD_RET_SUCCESS ) break; /* 操作成功 */ } if ( i != 0 ) return( USB_INT_SUCCESS ); /* 操作成功 */ else return( 0xff ); /* CH375出错,例如芯片型号错或者处于串口方式或者不支持 */ }

void main( ) { UINT8 i; //UINT16 NewSize, count; /* 因为RAM容量有限,所以NewSize限制为16位,实际上如果文件较大,应该分几次读写并且将NewSize改为UINT32以便累计 */ //UINT8 *pCodeStr; PORTA = 0x00;//端口初始化 DDRA = 0xFF; PORTC = 0xFF;//端口初始化 DDRC = 0xFF; init_lcd(); init_lcd(); mInitSTDIO( ); LCD_write_string(0,0,"Start" ); i = mCH375Init( ); /* 初始化CH375 */ mStopIfError( i ); mDelaymS( 100 ); mDelaymS( 100 ); mDelaymS( 100 ); mDelaymS( 100 ); i = CH375LibInit( ); /* 初始化CH375程序库和CH375芯片,操作成功返回0 */ mStopIfError( i ); /* 其它电路初始化 */

while ( 1 ) { LCD_write_string(0,0,"Wait Udisk" ); mDelaymS( 100 ); mDelaymS( 100 ); mDelaymS( 100 ); while ( CH375DiskStatus < DISK_CONNECT ) { /* 查询CH375中断并更新中断状态,等待U盘插入 */ if ( CH375DiskConnect( ) == ERR_SUCCESS ) break; /* 有设备连接则返回成功,CH375DiskConnect同时会更新全局变量CH375DiskStatus */ mDelaymS( 100 ); } } /* 检查U盘是否准备好,有些U盘不需要这一步,但是某些U盘必须要执行这一步才能工作 */ for ( i = 0; i < 5; i ++ ) { /* 有的U盘总是返回未准备好,不过可以被忽略 */ mDelaymS( 100 ); LCD_write_string(0,0,"Ready" ); mDelaymS( 100 ); mDelaymS( 100 ); mDelaymS( 100 ); if ( CH375DiskReady( ) == ERR_SUCCESS ) break; /* 查询磁盘是否准备好 */ } LCD_write_string(0,0,"Open"); mDelaymS( 100 ); mDelaymS( 100 ); mDelaymS( 100 ); }


建议你先看一下操作步骤再去操作.给你发的文件里面应该有参考程序,不需要mCH375Init,在CH375LIBInit里面已经做了,现在你先做测试命令,(参考CH375DS1),测试命令通过了在去操作其他的,否则没有任何意义.


我要做串口方式,不是只有CH375做USB主机情况下才能用串口方式吗?所以我用到 /* 设置CH375为USB主机方式 */ unsigned char mCH375Init( ) 这个函数,而CH375LIBInit这个函数只是初始化CH375程序库和CH375芯片而已,不是这样吗?


是的,但首先你要保证硬件连接无误,以及三个读写函数都正确,所以建议你先做测试命令


操作U盘,CH375必须设置为主机方式才可以.在初始化时,自然会将CH375设置为主机模式.


只有登录才能回复,可以选择微信账号登录