如题,我用stm32异步串口方式按照例程编写的程序,写如数据没错,但是读数据总是不对。请问
UINT8xReadCH376Data( void )
{
return USART_ReceiveData(USART1);
}
这么写对么?
不对该如何更改?
求赐教!!!
如题,我用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次
设置文件名有返回吗??这个中断值是在发打开之后的。再者,你有等中断函数吗?