STM32+CH376并口模式,總返回錯誤值,有整過的朋友幫忙看看!感謝!下面是程序部分:

引腳配置:
const GPIO_INIT CH376_Init[CH376_NBR ]=
{
? ? {GPIOE , GPIO_Pin_0},? ?? ?? ?? ?//SD_D0?
? ?{GPIOE , GPIO_Pin_1},? ?? ?? ?? ?//SD_D1?
? ?{GPIOE , GPIO_Pin_2},? ?? ?? ?? ?//SD_D2?
? ?{GPIOE , GPIO_Pin_3},? ?? ?? ?? ?//SD_D3?
? ?{GPIOE , GPIO_Pin_4},? ?? ?? ?? ?//SD_D4?
? ?{GPIOE , GPIO_Pin_5},? ?? ?? ?? ?//SD_D5
? ?{GPIOE , GPIO_Pin_6},? ?? ?? ?? ?//SD_D6?
? ?{GPIOE , GPIO_Pin_7},? ?? ?? ?? ?//SD_D7?
? ?{GPIOB , GPIO_Pin_9},? ?? ?? ?? ?//SD_RST1
? ?{GPIOB , GPIO_Pin_12},? ?? ?? ???//SD_A0
? ?{GPIOB , GPIO_Pin_13},? ?? ?? ???//SD_RD
? ?{GPIOB , GPIO_Pin_14},? ?? ?? ???//SD_WR
? ?{GPIOB , GPIO_Pin_15},? ?? ?? ???//SD_PCS
};

void GPIO_init(void)
{
int i,j,k,m,n;

/*初始化CH376各個輸入引腳:SD_D0,SD_D1,SD_D2,SD_D3,SD_D4,SD_D5,SD_D6,SD_D7,
? ?? ?? ?? ?? ?? ?? ?? ?? ?SD_RST1,SD_A0,SD_RD,SD_WR,SD_PCS*/
for(m=0;m{
??GPIO_InitStructure.GPIO_Pin=CH376_Init[m].Pin;
??GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
??GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
??GPIO_Init(CH376_Init[m].Port,&GPIO_InitStructure);
}?


/*初始化CH376的:SD_INT*/
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOB,&GPIO_InitStructure);
}

CH376.c部分:
#include "Ch376.h"
#include "Delay_ms.h“


void xWriteCH376Cmd(u8 u8Cmd)
{
? ? u8 i;
? ? CH376_CMD_PORT = (u16)u8Cmd;
? ? for (i=100; i!=0; --i)
? ? {
? ?? ?? ???delay_us(2);

? ?? ???if ((xReadCH376Status() & PARA_STATE_BUSY ) == 0 )
? ?? ???{
? ?? ?? ?? ?break;
? ?? ???}
? ? }
}

void xWriteCH376Data(u8 u8Data)
{
? ? CH376_DAT_PORT = (u16)u8Data;
? ?? ? delay_us(2);

}

u8 xReadCH376Data(void)
{
? ? u16 u16Temp = CH376_DAT_PORT;
? ? //DelayMs(2);
? ? delay_us(2);

? ? return (u8)u16Temp;
}

u8 Query376Interrupt(void)
{
? ? return (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_8) ? FALSE : TRUE);
}

u8 mInitCH376Host(void)
{
? ? u8 u8Result;
xWriteCH376Cmd(CMD11_CHECK_EXIST);??
??xWriteCH376Data(0x65);
delay_ms(10);
u8Result = xReadCH376Data();
if (u8Result != 0x9A )
? ? {
? ?? ???return ERR_USB_UNKNOWN;?
? ? }?
? ??
xWriteCH376Cmd(CMD11_SET_USB_MODE);?
xWriteCH376Data(0x06);
//mDelayuS(20);
? ?delay_ms(10);
u8Result = xReadCH376Data();
if (u8Result == CMD_RET_SUCCESS)
? ? {
? ?? ???return USB_INT_SUCCESS;
? ? }
? ???
else?
? ? {
? ?? ???return(ERR_USB_UNKNOWN);?
? ? }
}


然后再主函數(shù)寫了測試程序(只列取其中一部分):
s=mInitCH376Host();
printf("s=%02x \n",s);
??printf( "Wait Disk\n" );

發(fā)現(xiàn)返回值不是9A,而是錯位值:FA,,,不知道咋回事,各位幫忙看看程序部分有沒有問題,感謝!