伯德 发表于 2013-4-23 15:46:19

UNO 编译带USB host库文件错

本帖最后由 伯德 于 2013-7-10 13:00 编辑

本人搭建了一个UNO+USB host的模块。
Google官方下载了USB host的库代码。
目前出现如下错误:
C:\Users\wangteng\Documents\Arduino\libraries\USB_Host_Shield\Max3421e.cpp: In static member function 'static void MAX3421E::setRST(uint8_t)':
C:\Users\wangteng\Documents\Arduino\libraries\USB_Host_Shield\Max3421e.cpp:58: error: 'PORTJ' was not declared in this scope
C:\Users\wangteng\Documents\Arduino\libraries\USB_Host_Shield\Max3421e.cpp:58: error: 'PJ2' was not declared in this scope
C:\Users\wangteng\Documents\Arduino\libraries\USB_Host_Shield\Max3421e.cpp:60: error: 'PORTJ' was not declared in this scope
C:\Users\wangteng\Documents\Arduino\libraries\USB_Host_Shield\Max3421e.cpp:60: error: 'PJ2' was not declared in this scope
....

但是把board设置成Mega2560,编译顺利通过。

完整代码下载地址:https://github.com/awong1900/Test
大家帮我看看。

解决方案:
Max3421e.cpp文件修改,见三楼。

弘毅 发表于 2013-4-23 17:37:59

应该得用第三方修改后的host库,官方的本身做的是2560上。。。应该是不支持uno的,因为寄存器还是有很大差距的。

伯德 发表于 2013-4-23 19:28:38

修改了board,像PORTJ的宏定义就可以通过。
知道不同的board调用的代码在哪吗?

伯德 发表于 2013-4-23 22:09:13

搜索了一下,发现有这样的改法。是在Google代码的基础上修改。//#define INT                PB1
#define INT                        PORTB1
#define INT_PORT        PORTB
#define INT_DDR                DDRB
#define INT_PIN                PINB

//#define RST                PD7
#define RST                PORTD7
#define RST_PORT        PORTD
#define RST_DDR                DDRD
#define RST_PIN                PIND-----------
不懂为什么这么改。这里的宏定义是针对那些的硬件口的?有没有相关资料可以查到。

伯德 发表于 2013-7-10 12:58:45

伯德 发表于 2013-4-23 22:09 static/image/common/back.gif
搜索了一下,发现有这样的改法。是在Google代码的基础上修改。-----------
不懂为什么这么改。这里的宏定 ...

自己搞过一次都忘了。 上面的修改是在Max3421e.cpp 文件。
页: [1]
查看完整版本: UNO 编译带USB host库文件错