I2C

I2C

知道为什么大部分人喜欢用IO口模拟IIC吗?知道怎么去模拟吗?这里有你要的答案

经验分享molly 回复了问题 • 18 人关注 • 7 个回复 • 5865 次浏览 • 2019-09-29 15:00 • 来自相关话题

求助stm32cubemx 生成工程后编译出错

问题困惑shaojunxian 回复了问题 • 4 人关注 • 4 个回复 • 561 次浏览 • 2019-09-27 15:31 • 来自相关话题

关于HAL_I2C_Mem_Read_DMA()一个奇怪的问题?

问题困惑规矩 回复了问题 • 3 人关注 • 2 个回复 • 3390 次浏览 • 2018-06-24 11:24 • 来自相关话题

同时使用USB和I2C时,STM32Cube自动配置时钟导致I2C不可用?

回复

问题困惑NULL 发起了问题 • 1 人关注 • 0 个回复 • 1834 次浏览 • 2016-03-07 22:35 • 来自相关话题

关于i2c板间通信的实验和理解

回复

软件教程admin 回复了问题 • 3 人关注 • 5 个回复 • 5753 次浏览 • 2015-01-20 11:48 • 来自相关话题

记录stm32cubemx中I2C的DMA板卡之间的传输设置

软件教程admin 发表了文章 • 3 个评论 • 5495 次浏览 • 2014-11-07 09:23 • 来自相关话题

I2c板卡之间连接示意图





先上图,后面解释..




















2楼注释 查看全部
I2c板卡之间连接示意图

5.png

先上图,后面解释..

1.png


2.png


3.png


4.png

2楼注释

stm32cube中文教程:操作24c02程序,调用I2C可直接写数据,完整代码

软件教程admin 发表了文章 • 32 个评论 • 7101 次浏览 • 2014-10-14 00:10 • 来自相关话题

以前用stm32cubemx生成的代码写I2C的24c02很麻烦,因为自动生成的代码时对分页操作的
分页操作又没有弄对数据地址自动分页的代码,于是,手动分页写数据,安排数据地址。
坑死了。
研究了下,自己写了几个函数省去以上的麻烦。
方法很简单,前面的帖子里面我也提到了代码。
将要写的数据按照一个字节一个字节的方法写入就绝对不存在分页问题,而且读取操作页不存在分页问题,好了,完整代码如下:
文件:24C02.C内容


/[i] Includes ------------------------------------------------------------------[/i]/
#include "24C02.h"
#include "stdio.h"
__IO uint32_t I2CTimeout = I2C_Open_LONG_TIMEOUT;

static void I2C_delay(uint16_t cnt);

/*******************************************************************************
* Function Name : I2C_delay
* Description :
* Input : None
* Output : None
* Return : None
* Attention : None
*******************************************************************************/
static void I2C_delay(uint16_t cnt)
{
while(cnt--);
}
/*******************************************************************************
* Function Name : I2C_Read
* Description :
* Input :
* Output :
* Return :
* Attention : None
*******************************************************************************/
uint8_t I2C_Read(I2C_HandleTypeDef [i]I2Cx,uint8_t I2C_Addr,uint8_t addr,uint8_t [/i]buf,uint16_t num)
{
uint8_t err=0;
while(HAL_I2C_Mem_Read (I2Cx ,I2C_Addr,addr,I2C_MEMADD_SIZE_8BIT,buf,num,I2CTimeout) != HAL_OK ){};

//err = HAL_I2C_Mem_Read(I2Cx, I2C_Addr, addr, I2C_MEMADD_SIZE_8BIT, buf, num, I2CTimeout);
if(err)
return err;
else
return 0;
}

/*******************************************************************************
* Function Name : I2C_WriteOneByte
* Description :
* Input :
* Output : None
* Return :
* Attention : None
*******************************************************************************/
uint8_t I2C_WriteOneByte(I2C_HandleTypeDef *I2Cx,uint8_t I2C_Addr,uint8_t addr,uint8_t value)
{
// uint8_t err=0;

while( HAL_I2C_Mem_Write(I2Cx, I2C_Addr, addr, I2C_MEMADD_SIZE_8BIT, &value, 0x01, I2CTimeout) != HAL_OK ){};
//I2C_delay(50000);
// if(err)
// return 1;
// else
// return 0;
}

学习 stm32cubemx软件编程,来STM32CUBE.COM ,随时更新!
/*******************************************************************************
* Function Name : I2C_Write
* Description :
* Input :
* Output : None
* Return :
* Attention : None
*******************************************************************************/
uint8_t I2C_Write(I2C_HandleTypeDef [i]I2Cx,uint8_t I2C_Addr,uint8_t addr,uint8_t [/i]buf,uint16_t num)
{
uint8_t err=0;

while(num--)
{
I2C_WriteOneByte(I2Cx, I2C_Addr,addr++,*buf++);
// if(I2C_WriteOneByte(I2Cx, I2C_Addr,addr++,*buf++))
// {
// err++;
// }
}
// if(err)
// return 1;
// else
// return 0;
}

/*********************************************************************************************************
END FILE
*********************************************************************************************************/

文件24C02.H内容:


#ifndef __24C02_H
#define __24C02_H

/[i] Includes ------------------------------------------------------------------[/i]/
#include "stm32f4xx_hal.h"

/[i] Private define ------------------------------------------------------------[/i]/
#define AT24C01A
//#define AT24C01

#define ADDR_24LC02 0xA0
#define I2C_PAGESIZE 4


/* Maximum Timeout values for flags and events waiting loops. These timeouts are
not based on accurate values, they just guarantee that the application will
not remain stuck if the I2C communication is corrupted.
You may modify these timeout values depending on CPU frequency and application
conditions (interrupts routines ...). */
#define I2C_Open_FLAG_TIMEOUT ((uint32_t)0x1000)
#define I2C_Open_LONG_TIMEOUT ((uint32_t)0xffff)

/[i] Private function prototypes -----------------------------------------------[/i]/
uint8_t I2C_Read(I2C_HandleTypeDef [i]I2Cx,uint8_t I2C_Addr,uint8_t addr,uint8_t [/i]buf,uint16_t num);
uint8_t I2C_Write(I2C_HandleTypeDef [i]I2Cx,uint8_t I2C_Addr,uint8_t addr,uint8_t [/i]buf,uint16_t num);

#endif

/*********************************************************************************************************
END FILE
*********************************************************************************************************/


代码就那么多。
下面介绍下用法:
首先main文件肯定要调用


#include "24c02.h"
#include "stdio.h"
#include "string.h"


到了该写数据的地方,直接调用上面的函数,如下:


I2C_Write(&hi2c2,ADDR_24LC02,0x05,(uint8_t *)WriteBuffer,sizeof(WriteBuffer) );


我用的是stm32cube中的I2C2口,而ADDR_24LC02前面的函数H文件中已经有了,从地质0x05
开始写入,写入的是WriteBuffer这个结构表数据,里面包含了sizeof(WriteBuffer) 这么多个数据,读取的时候用


I2C_Read(&hi2c2,ADDR_24LC02,0x05,(uint8_t *)ReadBuffer,sizeof(WriteBuffer) )


同上,读取数据到ReadBuffer这个结构表中。嗯,以上结束。
有问题可以留言。
原创转载请注明。
所有本站实验过的程序都可以到【资源下载】网盘里找到........... 查看全部
以前用stm32cubemx生成的代码写I2C的24c02很麻烦,因为自动生成的代码时对分页操作的
分页操作又没有弄对数据地址自动分页的代码,于是,手动分页写数据,安排数据地址。
坑死了。
研究了下,自己写了几个函数省去以上的麻烦。
方法很简单,前面的帖子里面我也提到了代码。
将要写的数据按照一个字节一个字节的方法写入就绝对不存在分页问题,而且读取操作页不存在分页问题,好了,完整代码如下:
文件:24C02.C内容


/[i] Includes ------------------------------------------------------------------[/i]/
#include "24C02.h"
#include "stdio.h"
__IO uint32_t I2CTimeout = I2C_Open_LONG_TIMEOUT;

static void I2C_delay(uint16_t cnt);

/*******************************************************************************
* Function Name : I2C_delay
* Description :
* Input : None
* Output : None
* Return : None
* Attention : None
*******************************************************************************/
static void I2C_delay(uint16_t cnt)
{
while(cnt--);
}
/*******************************************************************************
* Function Name : I2C_Read
* Description :
* Input :
* Output :
* Return :
* Attention : None
*******************************************************************************/
uint8_t I2C_Read(I2C_HandleTypeDef [i]I2Cx,uint8_t I2C_Addr,uint8_t addr,uint8_t [/i]buf,uint16_t num)
{
uint8_t err=0;
while(HAL_I2C_Mem_Read (I2Cx ,I2C_Addr,addr,I2C_MEMADD_SIZE_8BIT,buf,num,I2CTimeout) != HAL_OK ){};

//err = HAL_I2C_Mem_Read(I2Cx, I2C_Addr, addr, I2C_MEMADD_SIZE_8BIT, buf, num, I2CTimeout);
if(err)
return err;
else
return 0;
}

/*******************************************************************************
* Function Name : I2C_WriteOneByte
* Description :
* Input :
* Output : None
* Return :
* Attention : None
*******************************************************************************/
uint8_t I2C_WriteOneByte(I2C_HandleTypeDef *I2Cx,uint8_t I2C_Addr,uint8_t addr,uint8_t value)
{
// uint8_t err=0;

while( HAL_I2C_Mem_Write(I2Cx, I2C_Addr, addr, I2C_MEMADD_SIZE_8BIT, &value, 0x01, I2CTimeout) != HAL_OK ){};
//I2C_delay(50000);
// if(err)
// return 1;
// else
// return 0;
}

学习 stm32cubemx软件编程,来STM32CUBE.COM ,随时更新!
/*******************************************************************************
* Function Name : I2C_Write
* Description :
* Input :
* Output : None
* Return :
* Attention : None
*******************************************************************************/
uint8_t I2C_Write(I2C_HandleTypeDef [i]I2Cx,uint8_t I2C_Addr,uint8_t addr,uint8_t [/i]buf,uint16_t num)
{
uint8_t err=0;

while(num--)
{
I2C_WriteOneByte(I2Cx, I2C_Addr,addr++,*buf++);
// if(I2C_WriteOneByte(I2Cx, I2C_Addr,addr++,*buf++))
// {
// err++;
// }
}
// if(err)
// return 1;
// else
// return 0;
}

/*********************************************************************************************************
END FILE
*********************************************************************************************************/

文件24C02.H内容:


#ifndef __24C02_H
#define __24C02_H

/[i] Includes ------------------------------------------------------------------[/i]/
#include "stm32f4xx_hal.h"

/[i] Private define ------------------------------------------------------------[/i]/
#define AT24C01A
//#define AT24C01

#define ADDR_24LC02 0xA0
#define I2C_PAGESIZE 4


/* Maximum Timeout values for flags and events waiting loops. These timeouts are
not based on accurate values, they just guarantee that the application will
not remain stuck if the I2C communication is corrupted.
You may modify these timeout values depending on CPU frequency and application
conditions (interrupts routines ...). */
#define I2C_Open_FLAG_TIMEOUT ((uint32_t)0x1000)
#define I2C_Open_LONG_TIMEOUT ((uint32_t)0xffff)

/[i] Private function prototypes -----------------------------------------------[/i]/
uint8_t I2C_Read(I2C_HandleTypeDef [i]I2Cx,uint8_t I2C_Addr,uint8_t addr,uint8_t [/i]buf,uint16_t num);
uint8_t I2C_Write(I2C_HandleTypeDef [i]I2Cx,uint8_t I2C_Addr,uint8_t addr,uint8_t [/i]buf,uint16_t num);

#endif

/*********************************************************************************************************
END FILE
*********************************************************************************************************/


代码就那么多。
下面介绍下用法:
首先main文件肯定要调用


#include "24c02.h"
#include "stdio.h"
#include "string.h"


到了该写数据的地方,直接调用上面的函数,如下:


I2C_Write(&hi2c2,ADDR_24LC02,0x05,(uint8_t *)WriteBuffer,sizeof(WriteBuffer) );


我用的是stm32cube中的I2C2口,而ADDR_24LC02前面的函数H文件中已经有了,从地质0x05
开始写入,写入的是WriteBuffer这个结构表数据,里面包含了sizeof(WriteBuffer) 这么多个数据,读取的时候用


I2C_Read(&hi2c2,ADDR_24LC02,0x05,(uint8_t *)ReadBuffer,sizeof(WriteBuffer) )


同上,读取数据到ReadBuffer这个结构表中。嗯,以上结束。
有问题可以留言。
原创转载请注明。
所有本站实验过的程序都可以到【资源下载】网盘里找到...........

知道为什么大部分人喜欢用IO口模拟IIC吗?知道怎么去模拟吗?这里有你要的答案

回复

经验分享molly 回复了问题 • 18 人关注 • 7 个回复 • 5865 次浏览 • 2019-09-29 15:00 • 来自相关话题

求助stm32cubemx 生成工程后编译出错

回复

问题困惑shaojunxian 回复了问题 • 4 人关注 • 4 个回复 • 561 次浏览 • 2019-09-27 15:31 • 来自相关话题

关于HAL_I2C_Mem_Read_DMA()一个奇怪的问题?

回复

问题困惑规矩 回复了问题 • 3 人关注 • 2 个回复 • 3390 次浏览 • 2018-06-24 11:24 • 来自相关话题

同时使用USB和I2C时,STM32Cube自动配置时钟导致I2C不可用?

回复

问题困惑NULL 发起了问题 • 1 人关注 • 0 个回复 • 1834 次浏览 • 2016-03-07 22:35 • 来自相关话题

关于i2c板间通信的实验和理解

回复

软件教程admin 回复了问题 • 3 人关注 • 5 个回复 • 5753 次浏览 • 2015-01-20 11:48 • 来自相关话题

记录stm32cubemx中I2C的DMA板卡之间的传输设置

软件教程admin 发表了文章 • 3 个评论 • 5495 次浏览 • 2014-11-07 09:23 • 来自相关话题

I2c板卡之间连接示意图





先上图,后面解释..




















2楼注释 查看全部
I2c板卡之间连接示意图

5.png

先上图,后面解释..

1.png


2.png


3.png


4.png

2楼注释

stm32cube中文教程:操作24c02程序,调用I2C可直接写数据,完整代码

软件教程admin 发表了文章 • 32 个评论 • 7101 次浏览 • 2014-10-14 00:10 • 来自相关话题

以前用stm32cubemx生成的代码写I2C的24c02很麻烦,因为自动生成的代码时对分页操作的
分页操作又没有弄对数据地址自动分页的代码,于是,手动分页写数据,安排数据地址。
坑死了。
研究了下,自己写了几个函数省去以上的麻烦。
方法很简单,前面的帖子里面我也提到了代码。
将要写的数据按照一个字节一个字节的方法写入就绝对不存在分页问题,而且读取操作页不存在分页问题,好了,完整代码如下:
文件:24C02.C内容


/[i] Includes ------------------------------------------------------------------[/i]/
#include "24C02.h"
#include "stdio.h"
__IO uint32_t I2CTimeout = I2C_Open_LONG_TIMEOUT;

static void I2C_delay(uint16_t cnt);

/*******************************************************************************
* Function Name : I2C_delay
* Description :
* Input : None
* Output : None
* Return : None
* Attention : None
*******************************************************************************/
static void I2C_delay(uint16_t cnt)
{
while(cnt--);
}
/*******************************************************************************
* Function Name : I2C_Read
* Description :
* Input :
* Output :
* Return :
* Attention : None
*******************************************************************************/
uint8_t I2C_Read(I2C_HandleTypeDef [i]I2Cx,uint8_t I2C_Addr,uint8_t addr,uint8_t [/i]buf,uint16_t num)
{
uint8_t err=0;
while(HAL_I2C_Mem_Read (I2Cx ,I2C_Addr,addr,I2C_MEMADD_SIZE_8BIT,buf,num,I2CTimeout) != HAL_OK ){};

//err = HAL_I2C_Mem_Read(I2Cx, I2C_Addr, addr, I2C_MEMADD_SIZE_8BIT, buf, num, I2CTimeout);
if(err)
return err;
else
return 0;
}

/*******************************************************************************
* Function Name : I2C_WriteOneByte
* Description :
* Input :
* Output : None
* Return :
* Attention : None
*******************************************************************************/
uint8_t I2C_WriteOneByte(I2C_HandleTypeDef *I2Cx,uint8_t I2C_Addr,uint8_t addr,uint8_t value)
{
// uint8_t err=0;

while( HAL_I2C_Mem_Write(I2Cx, I2C_Addr, addr, I2C_MEMADD_SIZE_8BIT, &value, 0x01, I2CTimeout) != HAL_OK ){};
//I2C_delay(50000);
// if(err)
// return 1;
// else
// return 0;
}

学习 stm32cubemx软件编程,来STM32CUBE.COM ,随时更新!
/*******************************************************************************
* Function Name : I2C_Write
* Description :
* Input :
* Output : None
* Return :
* Attention : None
*******************************************************************************/
uint8_t I2C_Write(I2C_HandleTypeDef [i]I2Cx,uint8_t I2C_Addr,uint8_t addr,uint8_t [/i]buf,uint16_t num)
{
uint8_t err=0;

while(num--)
{
I2C_WriteOneByte(I2Cx, I2C_Addr,addr++,*buf++);
// if(I2C_WriteOneByte(I2Cx, I2C_Addr,addr++,*buf++))
// {
// err++;
// }
}
// if(err)
// return 1;
// else
// return 0;
}

/*********************************************************************************************************
END FILE
*********************************************************************************************************/

文件24C02.H内容:


#ifndef __24C02_H
#define __24C02_H

/[i] Includes ------------------------------------------------------------------[/i]/
#include "stm32f4xx_hal.h"

/[i] Private define ------------------------------------------------------------[/i]/
#define AT24C01A
//#define AT24C01

#define ADDR_24LC02 0xA0
#define I2C_PAGESIZE 4


/* Maximum Timeout values for flags and events waiting loops. These timeouts are
not based on accurate values, they just guarantee that the application will
not remain stuck if the I2C communication is corrupted.
You may modify these timeout values depending on CPU frequency and application
conditions (interrupts routines ...). */
#define I2C_Open_FLAG_TIMEOUT ((uint32_t)0x1000)
#define I2C_Open_LONG_TIMEOUT ((uint32_t)0xffff)

/[i] Private function prototypes -----------------------------------------------[/i]/
uint8_t I2C_Read(I2C_HandleTypeDef [i]I2Cx,uint8_t I2C_Addr,uint8_t addr,uint8_t [/i]buf,uint16_t num);
uint8_t I2C_Write(I2C_HandleTypeDef [i]I2Cx,uint8_t I2C_Addr,uint8_t addr,uint8_t [/i]buf,uint16_t num);

#endif

/*********************************************************************************************************
END FILE
*********************************************************************************************************/


代码就那么多。
下面介绍下用法:
首先main文件肯定要调用


#include "24c02.h"
#include "stdio.h"
#include "string.h"


到了该写数据的地方,直接调用上面的函数,如下:


I2C_Write(&hi2c2,ADDR_24LC02,0x05,(uint8_t *)WriteBuffer,sizeof(WriteBuffer) );


我用的是stm32cube中的I2C2口,而ADDR_24LC02前面的函数H文件中已经有了,从地质0x05
开始写入,写入的是WriteBuffer这个结构表数据,里面包含了sizeof(WriteBuffer) 这么多个数据,读取的时候用


I2C_Read(&hi2c2,ADDR_24LC02,0x05,(uint8_t *)ReadBuffer,sizeof(WriteBuffer) )


同上,读取数据到ReadBuffer这个结构表中。嗯,以上结束。
有问题可以留言。
原创转载请注明。
所有本站实验过的程序都可以到【资源下载】网盘里找到........... 查看全部
以前用stm32cubemx生成的代码写I2C的24c02很麻烦,因为自动生成的代码时对分页操作的
分页操作又没有弄对数据地址自动分页的代码,于是,手动分页写数据,安排数据地址。
坑死了。
研究了下,自己写了几个函数省去以上的麻烦。
方法很简单,前面的帖子里面我也提到了代码。
将要写的数据按照一个字节一个字节的方法写入就绝对不存在分页问题,而且读取操作页不存在分页问题,好了,完整代码如下:
文件:24C02.C内容


/[i] Includes ------------------------------------------------------------------[/i]/
#include "24C02.h"
#include "stdio.h"
__IO uint32_t I2CTimeout = I2C_Open_LONG_TIMEOUT;

static void I2C_delay(uint16_t cnt);

/*******************************************************************************
* Function Name : I2C_delay
* Description :
* Input : None
* Output : None
* Return : None
* Attention : None
*******************************************************************************/
static void I2C_delay(uint16_t cnt)
{
while(cnt--);
}
/*******************************************************************************
* Function Name : I2C_Read
* Description :
* Input :
* Output :
* Return :
* Attention : None
*******************************************************************************/
uint8_t I2C_Read(I2C_HandleTypeDef [i]I2Cx,uint8_t I2C_Addr,uint8_t addr,uint8_t [/i]buf,uint16_t num)
{
uint8_t err=0;
while(HAL_I2C_Mem_Read (I2Cx ,I2C_Addr,addr,I2C_MEMADD_SIZE_8BIT,buf,num,I2CTimeout) != HAL_OK ){};

//err = HAL_I2C_Mem_Read(I2Cx, I2C_Addr, addr, I2C_MEMADD_SIZE_8BIT, buf, num, I2CTimeout);
if(err)
return err;
else
return 0;
}

/*******************************************************************************
* Function Name : I2C_WriteOneByte
* Description :
* Input :
* Output : None
* Return :
* Attention : None
*******************************************************************************/
uint8_t I2C_WriteOneByte(I2C_HandleTypeDef *I2Cx,uint8_t I2C_Addr,uint8_t addr,uint8_t value)
{
// uint8_t err=0;

while( HAL_I2C_Mem_Write(I2Cx, I2C_Addr, addr, I2C_MEMADD_SIZE_8BIT, &value, 0x01, I2CTimeout) != HAL_OK ){};
//I2C_delay(50000);
// if(err)
// return 1;
// else
// return 0;
}

学习 stm32cubemx软件编程,来STM32CUBE.COM ,随时更新!
/*******************************************************************************
* Function Name : I2C_Write
* Description :
* Input :
* Output : None
* Return :
* Attention : None
*******************************************************************************/
uint8_t I2C_Write(I2C_HandleTypeDef [i]I2Cx,uint8_t I2C_Addr,uint8_t addr,uint8_t [/i]buf,uint16_t num)
{
uint8_t err=0;

while(num--)
{
I2C_WriteOneByte(I2Cx, I2C_Addr,addr++,*buf++);
// if(I2C_WriteOneByte(I2Cx, I2C_Addr,addr++,*buf++))
// {
// err++;
// }
}
// if(err)
// return 1;
// else
// return 0;
}

/*********************************************************************************************************
END FILE
*********************************************************************************************************/

文件24C02.H内容:


#ifndef __24C02_H
#define __24C02_H

/[i] Includes ------------------------------------------------------------------[/i]/
#include "stm32f4xx_hal.h"

/[i] Private define ------------------------------------------------------------[/i]/
#define AT24C01A
//#define AT24C01

#define ADDR_24LC02 0xA0
#define I2C_PAGESIZE 4


/* Maximum Timeout values for flags and events waiting loops. These timeouts are
not based on accurate values, they just guarantee that the application will
not remain stuck if the I2C communication is corrupted.
You may modify these timeout values depending on CPU frequency and application
conditions (interrupts routines ...). */
#define I2C_Open_FLAG_TIMEOUT ((uint32_t)0x1000)
#define I2C_Open_LONG_TIMEOUT ((uint32_t)0xffff)

/[i] Private function prototypes -----------------------------------------------[/i]/
uint8_t I2C_Read(I2C_HandleTypeDef [i]I2Cx,uint8_t I2C_Addr,uint8_t addr,uint8_t [/i]buf,uint16_t num);
uint8_t I2C_Write(I2C_HandleTypeDef [i]I2Cx,uint8_t I2C_Addr,uint8_t addr,uint8_t [/i]buf,uint16_t num);

#endif

/*********************************************************************************************************
END FILE
*********************************************************************************************************/


代码就那么多。
下面介绍下用法:
首先main文件肯定要调用


#include "24c02.h"
#include "stdio.h"
#include "string.h"


到了该写数据的地方,直接调用上面的函数,如下:


I2C_Write(&hi2c2,ADDR_24LC02,0x05,(uint8_t *)WriteBuffer,sizeof(WriteBuffer) );


我用的是stm32cube中的I2C2口,而ADDR_24LC02前面的函数H文件中已经有了,从地质0x05
开始写入,写入的是WriteBuffer这个结构表数据,里面包含了sizeof(WriteBuffer) 这么多个数据,读取的时候用


I2C_Read(&hi2c2,ADDR_24LC02,0x05,(uint8_t *)ReadBuffer,sizeof(WriteBuffer) )


同上,读取数据到ReadBuffer这个结构表中。嗯,以上结束。
有问题可以留言。
原创转载请注明。
所有本站实验过的程序都可以到【资源下载】网盘里找到...........