如題,我用stm32異步串口方式按照例程編寫的程序,寫如數(shù)據(jù)沒錯,但是讀數(shù)據(jù)總是不對。請問
UINT8xReadCH376Data( void )?
{
????return?USART_ReceiveData(USART1);
}
這么寫對么?
不對該如何更改?
求賜教?。?!
如題,我用stm32異步串口方式按照例程編寫的程序,寫如數(shù)據(jù)沒錯,但是讀數(shù)據(jù)總是不對。請問
UINT8xReadCH376Data( void )?
{
????return?USART_ReceiveData(USART1);
}
這么寫對么?
不對該如何更改?
求賜教?。?!
“寫沒錯,讀不對”指的是測試命令不正確嗎?
你用串口助手發(fā)57 AB 06 55,看能否返回AA?
返回AA了
"但是讀數(shù)據(jù)總是不對"?什么意思?哪兒讀的不對,讀到什么?
以枚舉程序?yàn)槔?/p>
U盤根目錄內(nèi)有KTC001.TXT,KTC002.TXT,KTC003.TXT 3個文件。u8 buf[64]={0};
U盤連接成功(因?yàn)閷懭霐?shù)據(jù)成功)
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處單步執(zhí)行,buf所有成員為0;-2處單步執(zhí)行,只有buf[0]=0x01;其余為0;因?yàn)橛?個成員,程序在斷點(diǎn)處執(zhí)行3次,且每次執(zhí)行結(jié)果與上述結(jié)果一樣。
然后程序改為
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;
}
單步執(zhí)行后,buf所有0-10成員為0x1D,也就是USB_INT_DISK_READ的值,因?yàn)?個文件符合條件,也是執(zhí)行3次
設(shè)置文件名有返回嗎??這個中斷值是在發(fā)打開之后的。再者,你有等中斷函數(shù)嗎?