请问有没有stm32 通过异步串口方式用CH376实现U盘读写的例程啊

如题,我用stm32异步串口方式按照例程编写的程序,写如数据没错,但是读数据总是不对。请问

UINT8xReadCH376Data( void ) 

{

    return USART_ReceiveData(USART1);

}

这么写对么?
不对该如何更改?

求赐教!!!

“写没错,读不对”指的是测试命令不正确吗?

你用串口助手发57 AB 06 55,看能否返回AA?


返回AA了


"但是读数据总是不对" 什么意思?哪儿读的不对,读到什么?


以枚举程序为例

U盘根目录内有KTC001.TXT,KTC002.TXT,KTC003.TXT 3个文件。u8 buf[64]={0};

U盘连接成功(因为写入数据成功)

u8 s;

s=CH376SetFileName( "KTC*" );

xWriteCH376Cmd( CMD0H_FILE_OPEN );

while(1)

{

    if(s==USB_INT_DISK_READ)

    {

        CH376ReadBlock( buf );                    -1

        xWriteCH376Cmd( CMD0H_FILE_ENUM_GO );     -2

    }

    else

        break;

}

在-1处单步执行,buf所有成员为0;-2处单步执行,只有buf[0]=0x01;其余为0;因为有3个成员,程序在断点处执行3次,且每次执行结果与上述结果一样。

然后程序改为

u8 s;

s=CH376SetFileName( "KTC*" );

xWriteCH376Cmd( CMD0H_FILE_OPEN );

while(1)

{

    if(s==USB_INT_DISK_READ)

    {

        buf[0]=xReadCH376Data( );                 -1

        buf[0]=xReadCH376Data( );                 -1

        buf[0]=xReadCH376Data( );                 -1

        buf[0]=xReadCH376Data( );                 -1

        buf[0]=xReadCH376Data( );                 -1

        buf[0]=xReadCH376Data( );                 -1

        buf[0]=xReadCH376Data( );                 -1

        buf[0]=xReadCH376Data( );                 -1

        buf[0]=xReadCH376Data( );                 -1

        buf[0]=xReadCH376Data( );                 -1

        buf[0]=xReadCH376Data( );                 -1

        xWriteCH376Cmd( CMD0H_FILE_ENUM_GO );     -2

    }

    else

        break;

}



上边写错了,程序改为了

u8 s;

s=CH376SetFileName( "KTC*" );

xWriteCH376Cmd( CMD0H_FILE_OPEN );

while(1)

{

    if(s==USB_INT_DISK_READ)

    {

        buf[0]=xReadCH376Data( );             //-1

        buf[1]=xReadCH376Data( );             //-2

        buf[2]=xReadCH376Data( );             //-3

        buf[3]=xReadCH376Data( );             //-4

        buf[4]=xReadCH376Data( );             //-5

        buf[5]=xReadCH376Data( );             //-6

                    .

                    .

                    .

        buf[10]=xReadCH376Data( );             //-10

        xWriteCH376Cmd( CMD0H_FILE_ENUM_GO );  //-11

    }

    else

        break;

}

单步执行后,buf所有0-10成员为0x1D,也就是USB_INT_DISK_READ的值,因为3个文件符合条件,也是执行3次


无标题.png设置文件名有返回吗??这个中断值是在发打开之后的。再者,你有等中断函数吗?


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