大家看我的程序有問題嗎?

CH375ByteWrite( ); 這個函數(shù)應(yīng)用一次得花多長時間???


經(jīng)過修改,現(xiàn)將程序貼出,看這樣能實現(xiàn)嗎?

SIGNAL(SIG_INTERRUPT2) {WriteToReg_ADC(0X38); pstr=Read_ADC16BitValue(); usart_transmit(pstr); b=pstr&0x0FF; usart_transmit(b); a=pstr>>8; usart_transmit(a); data[h]=a; data[h+1]=b; h+=2; } int main(void) { UINT8 i; CH375_PORT_INIT( );//ch375端口初始化 mDelaymS( 100 ); // 延時100毫秒 i = CH375LibInit( ); // 初始化CH375程序庫和CH375芯片,操作成功返回0 mStopIfError( i ); //delay50us(100); //延時等待外圍器件穩(wěn)定 spi_init(); //spi初始化 ADC_Init(); //ad7705初始化 Usart_init(); //串口初始化 //while(1) while ( CH375DiskStatus < DISK_CONNECT ) { // 查詢CH375中斷并更新中斷狀態(tài),等待U盤插入 if ( CH375DiskConnect( ) == ERR_SUCCESS ) break; // 有設(shè)備連接則返回成功,CH375DiskConnect同時會更新全局變量CH375DiskStatus mDelaymS( 100 ); } mDelaymS( 200 ); // 延時,可選操作 for ( i = 0; i < 10; i ++ ) { // 有的U盤總是返回未準(zhǔn)備好,不過可以被忽略 mDelaymS( 100 ); if ( CH375DiskReady( ) == ERR_SUCCESS ) break; // 查詢磁盤是否準(zhǔn)備好 } //UINT8 i; //mCopyCodeStringToIRAM( mCmdParam.Open.mPathName, "/MY_ADC.TXT" ); strcpy( (char *)mCmdParam.Open.mPathName, "/FFFF.TXT" ); i =CH375FileOpen( ); if ( i == ERR_SUCCESS ) { mCmdParam.ByteLocate.mByteOffset = 0xffffffff; // 移到文件的尾部 i = CH375ByteLocate( ); mStopIfError( i ); } else if ( i == ERR_MISS_FILE ) { // mCopyCodeStringToIRAM( mCmdParam.Create.mPathName, "/MY_ADC.TXT" ); strcpy( (char *)mCmdParam.Create.mPathName, "/FFFF.TXT" ); i = CH375FileCreate( ); // 新建文件并打開,如果文件已經(jīng)存在則先刪除后再新建 mStopIfError( i ); }

MCUCSR&=~(1< GIFR=(1< GICR=(1< sei(); //總中斷允許 while(1) { if(h==28) { mCmdParam.ByteWrite.mByteBuffer[28]=data[28]; h=0; mCmdParam.ByteWrite.mByteCount = 28; /* 寫入數(shù)據(jù)的字符數(shù),單次讀寫的長度不能超過MAX_BYTE_IO,第二次調(diào)用時接著剛才的向后寫 */ CH375ByteWrite( ); /* 向文件寫入數(shù)據(jù) */ mStopIfError( i ); mCmdParam.ByteWrite.mByteCount = 0; /* 寫入數(shù)據(jù)的字符數(shù),單次讀寫的長度不能超過MAX_BYTE_IO,第二次調(diào)用時接著剛才的向后寫 */ CH375ByteWrite( ); /* 向文件寫入數(shù)據(jù) */ mStopIfError( i ); } } return 1; }

其中h為全局變量,怎樣一次將28字節(jié)的數(shù)據(jù)賦值給mCmdParam.ByteWrite.mByteBuffer[],這是個什么樣的函數(shù)啊?


mCmdParam.ByteWrite.mByteBuffer[]這個是在頭文件中定義的一個結(jié)構(gòu)體.你將28字節(jié)的數(shù)都賦給這個緩沖區(qū), 例如: for(h=0;h!=28;h++) { mCmdParam.ByteWrite.mByteBuffer [ h ] =a; mCmdParam.ByteWrite.mByteBuffer [ h+1 ] =b; } 再將mCmdParam.ByteWrite.mByteCount=28.


大家看看我的程序,我上面的程序好像不執(zhí)行寫盤操作啊,我想問一下執(zhí)行一次CH375ByteWrite( ); 要花多長時間???


上面的程序你只寫了一個字節(jié)到緩沖區(qū)啊.按下面改下試試. while(1) { for(h=0;h!=28;h++) { mCmdParam.ByteWrite.mByteBuffer[h]=data[h]; } mCmdParam.ByteWrite.mByteCount = 28; /* 寫入數(shù)據(jù)的字符數(shù),單次讀寫的長度不能超過MAX_BYTE_IO,第二次調(diào)用時接著剛才的向后寫 */ if(h==28) h=0; CH375ByteWrite( ); /* 向文件寫入數(shù)據(jù) */ mStopIfError( i ); mCmdParam.ByteWrite.mByteCount = 0; /* 寫入數(shù)據(jù)的字符數(shù),單次讀寫的長度不能超過MAX_BYTE_IO,第二次調(diào)用時接著剛才的向后寫 */ CH375ByteWrite( ); /* 向文件寫入數(shù)據(jù) */ mStopIfError( i ); } } return 1;

還有你是中斷一次向mCmdParam.ByteWrite.mByteBuffer 緩沖區(qū)賦一個字節(jié)數(shù),等賦滿28字節(jié),一次寫進去.這樣不好知道是哪里花的時間長.使速度慢了.你可以先直接賦值,不使用中斷看下執(zhí)行一次CH375ByteWrite( ),時間多少.


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

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