CH32F103的I2C如何連續(xù)讀數(shù)據(jù)?

請問CH32F103的I2C如何連續(xù)讀數(shù)據(jù)?有沒有相關(guān)的參考例程?


現(xiàn)在讀一個字節(jié)是沒有問題,但是連續(xù)讀就不正常。


熱門產(chǎn)品 : USB3.0 HUB控制器:CH634

問題已解決,是因為在for循環(huán)中使用了printf


如下代碼僅供參考

void?I2C_WriteData(I2C_TypeDef*?I2Cx,?u16?DeviceAddress,?u8?*pBuf,?u16?len)
{
	u16?i;

	while(I2C_GetFlagStatus(I2Cx,?I2C_FLAG_BUSY)?!=?RESET);	
	I2C_GenerateSTART(I2Cx,?ENABLE);

	while(!I2C_CheckEvent(I2Cx,?I2C_EVENT_MASTER_MODE_SELECT));
	I2C_Send7bitAddress(I2Cx,?(DeviceAddress?<<?1),?I2C_Direction_Transmitter);
		
	while(!I2C_CheckEvent(I2Cx,?I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
	
	for?(i?=?0;?i?<?len;?i++)
	{
		I2C_SendData(I2Cx,?*pBuf++);	
		while(!I2C_CheckEvent(I2Cx,?I2C_EVENT_MASTER_BYTE_TRANSMITTED));
	}

	I2C_GenerateSTOP(I2Cx,?ENABLE);
}

void?I2C_ReadData(I2C_TypeDef*?I2Cx,?u16?DeviceAddress,?u8?*pBuf,?u16?len)
{
	u16?i?=?0;

	while(I2C_GetFlagStatus(I2Cx,?I2C_FLAG_BUSY)?!=?RESET);

	I2C_GenerateSTART(I2Cx,?ENABLE);

	while(!I2C_CheckEvent(I2Cx,?I2C_EVENT_MASTER_MODE_SELECT));

	I2C_Send7bitAddress(I2Cx,?(DeviceAddress?<<?1),?I2C_Direction_Receiver);

	while(!I2C_CheckEvent(I2Cx,?I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));


	for?(i?=?0;?i?<?len;?i++)
	{
		if?(i?==?len?-?1)
		{
			I2C_AcknowledgeConfig(I2Cx,?DISABLE);
		}
		
		while(I2C_GetFlagStatus(?I2Cx,?I2C_FLAG_RXNE?)?==?RESET);
		*pBuf++?=?I2C_ReceiveData(I2Cx);
	}

	I2C_GenerateSTOP(I2Cx,?ENABLE);
}



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

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