关于CH376与51移植到STM32上的问题,望大侠解答感激不敬

关于CH376与51移植到STM32上的问题,望大侠解答感激不敬,第1张

模拟IO口方式直观好理解,效率不是很高。STM32可以用硬件SPI、USART *** 作。并口的话用STM32F103VCT6以上的具有FSMC的型号可以像51一样定义外部存储器地址。话说这片子的范例程序也只能做个参考,各种while阻塞式延时,程序跑起来卡得一塌糊涂。要想做好,还是得用状态机和定时器代替死等。

while ( CH376DiskConnect( ) != USB_INT_SUCCESS )

{

mDelaymS( 100 )

}

mDelaymS( 200 )

for ( i = 0i <100i ++ )

{

mDelaymS( 50 )

s = CH376DiskMount( )

if ( s == USB_INT_SUCCESS )

break

else if ( s == ERR_DISK_DISCON )

break

if ( CH376GetDiskStatus( ) >= DEF_DISK_MOUNTED &&i >= 5 )

break

}

if ( s == ERR_DISK_DISCON )

{

while(1)

//continue

}

if ( CH376GetDiskStatus( ) <DEF_DISK_MOUNTED )

{

while(1)

}

i = CH376ReadBlock( buf )

if ( i == sizeof( INQUIRY_DATA ) )

{

buf[ i ] = 0

sprintf(str, "%s", ((P_INQUIRY_DATA)buf) ->VendorIdStr )

}

s = CH376FileOpen( "/TEST.TXT" )

if ( s == USB_INT_SUCCESS )

{

NewSize = CH376GetFileSize( )

s = CH376SecLocate( 0xFFFFFFFF )

total = NewSize &( DEF_SECTOR_SIZE - 1 )

if ( total )

{

s = CH376SecRead( FileDataBuf, 1, NULL )

s = CH376SecLocate( 0xFFFFFFFF )

}

}

else if ( s == ERR_MISS_FILE )

{

s = CH376FileCreate( NULL )

//mStopIfError( s )

total = 0

NewSize = 0

}

total += sprintf((char *)FileDataBuf + total, "在本次添加数据之前,该文件已有数据的长度是%ld字节\xd\xa", NewSize )

mFlushBufferToDisk( 0 )

for(aa=0aa<100aa++)

{

FileDataBuf[aa]=0XAA

total += sprintf((char *)FileDataBuf+ total, "FileDataBuf[aa]=%X\xd\xa", FileDataBuf[aa])

}

mFlushBufferToDisk( 0 )

total += sprintf( (char *)FileDataBuf + total, " ********************************* " )

total += sprintf( (char *)FileDataBuf + total, "这次的数据到此结束,程序即将退出\xd\xa" )

mFlushBufferToDisk( 1 )

s = SetFileCreateTime( "/TEST.TXT", MAKE_FILE_DATE( 2016, 3, 3 ), MAKE_FILE_TIME( 11, 48, 20 ) )

s = CH376FileClose( FALSE )

mDelaymS( 200 )


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7828456.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-10
下一篇2023-04-10

发表评论

登录后才能评论

评论列表(0条)

    保存