基于STM32 串口操作CH375讀寫U盤問題

讀寫函數(shù)

-----------------------------------------------------

void xWriteCH375Cmd( u16 mCmd )//1

{

? ? UsartSendData(USART1, mCmd | 0x100);

}


void xWriteCH375Data( u16 mData ) //0

{

??

? ? ?UsartSendData(USART1,mData &0x0ff) ; ?

}


u8 xReadCH375Data( void )

{

? ? u8 rdata;

? ? rdata=UsartReceiveData(USART1);?

? ? return rdata;

}



工作步驟。。。

---------------------------------------------------------------------

void ch375main( void)?

{

u8i;

u16len,act;

? ??

? ? ?mDelay100mS( ); ? ? ?

i = CH375LibInit( ); ?/* 初始化CH375程序庫和CH375芯片,操作成功返回0 */

mStopIfError( i );

printf( "CH375 Start\n" ); ? ? ?

mDelay100mS( ); ?

? ??

? ? xWriteCH375Cmd(CMD_SET_USB_MODE);/**/

? ? xWriteCH375Data(6);

? ? mDelay100mS( );?

? ? mDelay100mS( );?

? ? xWriteCH375Cmd( CMD_GET_STATUS ); ?

? ? if(xReadCH375Data( )==CMD_RET_SUCCESS) ? ? ? ? ??

? ? {

? ? ? ? printf( "CH375 SET USB MODE host\n" );

? ? }

? ??

while ( 1 )?

{

printf( "Wait Udisk\n" );

? ? ? ? ??/* 查詢CH375中斷并更新中斷狀態(tài),等待U盤插入 */

while ( CH375DiskStatus != DISK_CONNECT ) xQueryInterrupt( ); ?

mDelay100mS( ); ?/* 延時,可選操作,有的USB存儲器需要幾十毫秒的延時 */

? ? ? ? ? ?mDelay100mS( );


for ( i = 0; i < 5; i ++ )?

? ? ? ? ? { ? /* 檢查U盤是否準備好,有些U盤不需要這一步,但是某些U盤必須要執(zhí)行這一步才能工作 */

? ? ? ? ? ? // 有的U盤總是返回未準備好,不過可以被忽略?

? ? ? ? ? ? mDelay100mS( );

? ? ? ? ? ? mDelay100mS( ); ? ? ? ? ? ?

printf( "Ready ?\n" );

? ? ? ? ? ? act=CH375DiskReady();

? ? ? ? ? ? printf( "Error: %02X\n", act ); ?

if (act == ERR_SUCCESS ) break; ?// 查詢磁盤是否準備好 /

}

? ? ? ? ? ? ? ??

? ? ? ? /* 查詢磁盤物理容量 */

printf( "DiskSize\n" );

i = CH375DiskSize( ); ?

mStopIfError( i );

printf( "TotalSize = %d MB \n", (unsigned int)( mCmdParam.DiskSize.mDiskSizeSec >> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 11 ) ); /// 顯示為以MB為單位的容量


? ? ? ? mDelay100mS( );


? ? ? ? /* 如果MY_ADC.TXT文件已經(jīng)存在則添加數(shù)據(jù)到尾部,如果不存在則新建文件 */

printf( "Open\n" );

mCopyCodeStringToIRAM( mCmdParam.Open.mPathName, "/MY_ADC.TXT" ); ?/* 文件名,該文

i = CH375FileOpen( ); ?/* 打開文件 */

? ? ? ? ? mDelay100mS( );

if ( i == ERR_SUCCESS )?

? ? ? ? ? { ?

? ? ? ? ? ? /* 文件存在并且已經(jīng)被打開,移動文件指針到尾部以便添加數(shù)據(jù) */

printf( "File size = %ld\n", CH375vFileSize ); ?

printf( "Locate tail\n" );

mCmdParam.ByteLocate.mByteOffset = 0xffffffff; ?/* 移到文件的尾部 */

i = CH375ByteLocate( );

mStopIfError( i );

}

else if ( i == ERR_MISS_FILE )?

? ? ? ? ? { ?

? ? ? ? ? ? /* 沒有找到文件,必須新建文件 */

printf( "Create\n" );

mCopyCodeStringToIRAM( mCmdParam.Create.mPathName, "/MY_ADC.TXT" );?

i = CH375FileCreate( ); ?

mStopIfError( i );

}

else?

? ? ? ? ? {

? ? ? ? ? ? mStopIfError( i ); ?/* 打開文件時出錯 */

? ? ?}

? ? ? ? ? mDelay100mS( );

printf( "Write begin\n" );

i = sprintf( mCmdParam.ByteWrite.mByteBuffer, "此前文件長度= %ld 字節(jié)\xd\xa", ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? CH375vFileSize );

mCmdParam.ByteWrite.mByteCount = i; ?

i = CH375ByteWrite( ); ?

mStopIfError( i );


? ? ? ? ? ? mDelay100mS( );


printf( "Write end\n" );

i = mCopyCodeStringToIRAM( mCmdParam.ByteWrite.mByteBuffer, "今天的ADC數(shù)據(jù)到此結(jié)束 ? ? ? ? ? ? ? ? ? ? ? ? ? ?\xd\xa" );

mCmdParam.ByteWrite.mByteCount = i; ?

i = CH375ByteWrite( ); ?

mStopIfError( i );

? ? ? ??


? ? ? ? ? ?mDelay100mS( );

printf( "Close\n" );

mCmdParam.Close.mUpdateLen = 1; ?/* 自動計算文件長度,以字節(jié)為單位寫文件

i = CH375FileClose( ); ?/* 關(guān)閉文件 */

mStopIfError( i );

? ? ? ? ? ?mDelay100mS( );

printf( "Take out\n" );

while ( CH375DiskStatus != DISK_DISCONNECT ) xQueryInterrupt( );?

}

}



QQ圖片20160106131223.png


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频