请教技术人员: 我的系统是CH375+STC90C58AD, 当我的程序只实现主机模式的功能是,能顺利的完成U盘的读写。但是当我地程序是同时实现主机和设备模式功能是,当读U盘的时候,运行到打开文件后,就返回错误代码:1F; 请问,这是什么原因?是不是和两种模式一起实现的时候,单片机的RAM不够大有关系的,在主机程序中,我把 #define DISK_BASE_BUF_LEN 4096 改成了 #define DISK_BASE_BUF_LEN 8192 ,这样会产生影响么?在我没改这个量的时候,主机模式运行到 “检查磁盘数据缓冲区是否足够大” 就执行不下去了,我改了之后就可以执行下去。但是,就变成了出现现在的情况,返回错误代码:1F; 请指导!
ram定义这么大肯定是不行的。 这个单片机一共多少RAM?你编译出来,看看RAM占用多少,如果超过了MCU的RAM,肯定会出现问题的。 #define DISK_BASE_BUF_LEN 512 就可以了。 出现检查缓冲区是否足够大是其他错误造成的,一般不要去修改这个变量。
哦,我 MCU 的 RAM 是 4K+256 字节啊,看编译出来是多少 RAM 的话是不是看编译器下面信息栏那里的 xdata 的?现在编译出来的 xdata是 67613 ,code=11059, data=125.5 。那现在我的情况是不是超过了MCU 的RAM呢?
然后,另外一个是,我的外部RAM是32K的,在定义两种模式的起始地址时,是不是也要有所注意的?这个怎样去判断地址是否给得合适呢? 然后这个情况的话和 #define DISK_BASE_BUF_LEN  8192 的定义有关系么?是怎样的关系呢?
1、做主从模式切换时,连接U盘或PC,都必须断开另一方 2、DISK_BASE_BUF_LEN只要和U盘的扇区大小一致就可以了,不需要定义那么大,监控一下CH375vSectorSize是多少?现在外部RAM已经溢出了,程序可能跑飞 至于地址,由编译器自动分配,不需要你去关心