OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 14550|回复: 17

stm32 硬件I2C问题.

[复制链接]

2

主题

15

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2014-2-9
在线时间
1 小时
发表于 2014-3-11 15:33:45 | 显示全部楼层 |阅读模式
大家好,我使用的是STM32F373CC这款芯片做主控器,访问SHT21温湿度传感器,读温度与湿度.目前用模拟I2C已经OK(说明硬件电路没有问题).
但是使用STM32的硬件I2C却出现卡在while(I2C_GetFlagStatus(I2C1, I2C_FLAG_TXIS) == RESET)无法执行下去了(TXIS位不置1).我的I2C配置与程序如下:
请各位大神帮忙看下是哪里出了问题,万分感谢!!

I2C配置
void I2C_Config()
{
I2C_InitTypeDef I2C_InitStructure;
GPIO_InitTypeDef  GPIO_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE); 
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
RCC_I2CCLKConfig(RCC_I2C1CLK_SYSCLK);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource6|GPIO_PinSource7, GPIO_AF_4); 
//I2C GPIO Config
GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOB, &GPIO_InitStructure);


  I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
  I2C_InitStructure.I2C_AnalogFilter = I2C_AnalogFilter_Enable;
  I2C_InitStructure.I2C_DigitalFilter = 0x00;
  I2C_InitStructure.I2C_OwnAddress1 = 0x00;
  I2C_InitStructure.I2C_Ack = I2C_Ack_Disable;
  I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
  I2C_InitStructure.I2C_Timing = 0xC0100F14;
 
I2C_Cmd(I2C1,ENABLE);
I2C_Init(I2C1, &I2C_InitStructure);
}

主程序里面调用

  SHT_Timeout = SHT_LONG_TIMEOUT;
  while(I2C_GetFlagStatus(I2C1, I2C_ISR_BUSY) != RESET)
  {
    if((SHT_Timeout--) == 0) return SHT_TIMEOUT_UserCallback();
  }
  I2C_TransferHandling(I2C1, 0x80, 1, I2C_Reload_Mode, I2C_Generate_Start_Write);

 SHT_Timeout = SHT_LONG_TIMEOUT;
  while(I2C_GetFlagStatus(I2C1, I2C_FLAG_TXIS) == RESET)       //一直卡在这里,TXIS不置位.
  {
    if((SHT_Timeout--) == 0) return SHT_TIMEOUT_UserCallback();
  }
I2C_SendData (I2C1,0xe7);
  while((I2C_GetFlagStatus(I2C1, I2C_FLAG_TC)) == RESET)
  {
    if((SHT_Timeout--) == 0) return SHT_TIMEOUT_UserCallback();
  }

I2C_SendData (I2C1,0xe7);

 if (I2C_GetFlagStatus(I2C1,I2C_FLAG_TC))
{
temp=I2C_ReceiveData (I2C1);
  }
I2C_GenerateSTOP(I2C1,ENABLE);

寄存器的值如下:



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

15

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2014-2-9
在线时间
1 小时
 楼主| 发表于 2014-6-9 15:19:16 | 显示全部楼层
问题终于找到了,是因为配置不当的原因,现在把配置更新出来.如果有同类问题的,可以供大家参考,红色部分是我之前配置时有问题的地方.
void I2C_Config()
{
I2C_InitTypeDef I2C_InitStructure;
GPIO_InitTypeDef  GPIO_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE); 
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
RCC_I2CCLKConfig(RCC_I2C1CLK_SYSCLK);

//I2C GPIO Config
GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_8|GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOB, &GPIO_InitStructure);

GPIO_PinAFConfig(GPIOB, GPIO_PinSource8, GPIO_AF_4); 
GPIO_PinAFConfig(GPIOB, GPIO_PinSource9, GPIO_AF_4); 

  I2C_InitStructure.I2C_Mode = I2C_Mode_SMBusHost;   配置为主机模式
  I2C_InitStructure.I2C_AnalogFilter = I2C_AnalogFilter_Enable;
  I2C_InitStructure.I2C_DigitalFilter = 0x00;
  I2C_InitStructure.I2C_OwnAddress1 = 0x0;
  I2C_InitStructure.I2C_Ack = I2C_Ack_Disable;
  I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
  I2C_InitStructure.I2C_Timing = 0x10806190;  由ST官网提供的EXCEL计算出来的值,主机模式,普通模式,100K.
I2C_Cmd(I2C1,ENABLE);
I2C_Init(I2C1, &I2C_InitStructure);
}
回复 支持 1 反对 0

使用道具 举报

1

主题

25

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2014-2-25
在线时间
0 小时
发表于 2014-3-11 16:19:10 | 显示全部楼层
回复【楼主位】wenwubie:
---------------------------------
试试
while((volatile)I2C_GetFlagStatus(I2C1, I2C_FLAG_TXIS) == RESET)
回复 支持 反对

使用道具 举报

2

主题

15

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2014-2-9
在线时间
1 小时
 楼主| 发表于 2014-3-11 16:23:43 | 显示全部楼层
回复【2楼】LWM1368:
---------------------------------
你好,还是一样的停在这个位置,ISR的值还是0x00008001.没有效果.请问还有其它的办法找到问题么?
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-3-12 12:39:59 | 显示全部楼层
回复【3楼】wenwubie:
---------------------------------
你确定你的从设备地址是这个0x00??? IIC初始化函数里面结构体这句I2C_InitStructure.I2C_OwnAddress1 = 0x00;
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

2

主题

15

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2014-2-9
在线时间
1 小时
 楼主| 发表于 2014-3-26 15:06:44 | 显示全部楼层
回复【4楼】Badu_Space:

回复【3楼】wenwubie:
---------------------------------
你确定你的从设备地址是这个0x00??? IIC初始化函数里面结构体这句I2C_InitStructure.I2C_OwnAddress1 = 0x00;

---------------------------------
这个地方定义的地址是主机(STM32F373)的地址吧? 因为传感器的地址是在传感器内部已经定义好的.
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2014-4-16
在线时间
0 小时
发表于 2014-4-16 12:31:25 | 显示全部楼层
请问楼主,这个问题你解决了吗,我也出现了这个问题了,该如何解决!
回复 支持 反对

使用道具 举报

2

主题

15

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2014-2-9
在线时间
1 小时
 楼主| 发表于 2014-6-5 15:51:54 | 显示全部楼层
回复【6楼】netsh78:
---------------------------------
没有解决哦,一直搞不定,不知道是什么原因.困死在这个问题了.目前先用模拟I2C顶着.
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-6-9 22:31:59 | 显示全部楼层
回复【8楼】wenwubie:
---------------------------------
谢谢分享
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

11

主题

96

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
341
金钱
341
注册时间
2014-6-16
在线时间
43 小时
发表于 2014-6-16 17:59:00 | 显示全部楼层
谢谢分享,最近自己也在想用STM32硬件I2C
回复 支持 反对

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-5-22
在线时间
0 小时
发表于 2014-6-17 23:16:29 | 显示全部楼层
硬件I2C不是不稳定吗?
回复 支持 反对

使用道具 举报

11

主题

96

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
341
金钱
341
注册时间
2014-6-16
在线时间
43 小时
发表于 2014-7-6 03:04:24 | 显示全部楼层
有 硬件i2c吗??
回复 支持 反对

使用道具 举报

16

主题

89

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
316
金钱
316
注册时间
2012-10-6
在线时间
9 小时
发表于 2014-11-6 11:32:17 | 显示全部楼层
求模拟I2C的SHT21驱动
回复 支持 反对

使用道具 举报

2

主题

15

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2014-2-9
在线时间
1 小时
 楼主| 发表于 2014-11-7 13:18:26 | 显示全部楼层
回复【13楼】weiwei:
---------------------------------
#include "stm32f37x.h"
#include "I2C.h"
#include "delay.h"


/*******************************************************************************
?????? : I2C_Config
?è?? : ??????????????I2C SCL????(PB6)
???? : None
???? : None
·????? : None
*******************************************************************************/
void I2C_Config()
{
GPIO_InitTypeDef  GPIO_InitStructure;
RCC_AHBPeriphClockCmd(I2C_SCL_CLK, ENABLE);

//SCL????
GPIO_InitStructure.GPIO_Pin   = I2C_SCL_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;
GPIO_Init(I2C_SCL_GPIO, &GPIO_InitStructure);

}

/*******************************************************************************
?????? : GPIOSET
?è?? : ??????????????I2C SDA????(PB7)
???? : mode ?????ò????????,??????:IN/OUT
???? : None
·????? : None
*******************************************************************************/
void GPIOSET(u32 mode)
{
GPIO_InitTypeDef  GPIO_InitStructure;
RCC_AHBPeriphClockCmd(I2C_SDA_CLK, ENABLE);
if(mode==IN)
{
//SDA ????
GPIO_InitStructure.GPIO_Pin   = I2C_SDA_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;
GPIO_Init(I2C_SDA_GPIO, &GPIO_InitStructure);
}
else
{
//SDA????
GPIO_InitStructure.GPIO_Pin   = I2C_SDA_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;
GPIO_Init(I2C_SDA_GPIO, &GPIO_InitStructure);
  }
}


/*******************************************************************************
?????? : I2C_Start
?è?? : ???????????ú?úI2C START????
???? : None
???? : None
·????? : None
*******************************************************************************/
void I2C_Start(void)
 {
GPIOSET(OUT);
GPIO_SetBits(I2C_SDA_GPIO, I2C_SDA_PIN);//SDA=1;
delay_us(10);
GPIO_SetBits(I2C_SCL_GPIO, I2C_SCL_PIN);//SCL=1;
delay_us(10);
GPIO_ResetBits(I2C_SDA_GPIO, I2C_SDA_PIN);//SDA=0;
delay_us(10);
GPIO_ResetBits(I2C_SCL_GPIO, I2C_SCL_PIN);//SCL=0;
delay_us(10);
}
 
 
/*******************************************************************************
?????? : I2C_Stop
?è?? : ???????????ú?úI2C STOP????
???? : None
???? : None
·????? : None
*******************************************************************************/
void I2C_Stop(void)

 GPIOSET(OUT);
 GPIO_ResetBits(I2C_SDA_GPIO, I2C_SDA_PIN);//SDA=0;
 delay_us(10);
 GPIO_SetBits(I2C_SCL_GPIO, I2C_SCL_PIN);//SCL=1;
 delay_us(10);
 GPIO_SetBits(I2C_SDA_GPIO, I2C_SDA_PIN);//SDA=1;
 delay_us(10);
 GPIO_ResetBits(I2C_SCL_GPIO, I2C_SCL_PIN);//SCL=0; 
 delay_us(10);
 }

/*******************************************************************************
?????? : I2C_Slave_ACK
?è?? : ?????????????????úACK????
???? : None
???? : None
·????? : TRUE,???????? FLASE,?????§°?
*******************************************************************************/
u8 I2C_Slave_ACK(void)   

u8 ACK;
u8  s1;
 GPIOSET(IN);
GPIO_ResetBits(I2C_SCL_GPIO, I2C_SCL_PIN);//SCL=0;
GPIO_SetBits(I2C_SCL_GPIO, I2C_SCL_PIN);//SCL=1;
s1=GPIO_ReadInputDataBit(I2C_SDA_GPIO, I2C_SDA_PIN);
if (s1==0)
{ACK = TRUE;}
else
{ACK = FALSE;}
GPIO_ResetBits(I2C_SCL_GPIO, I2C_SCL_PIN);//SCL=0;
return(ACK);
}

/*******************************************************************************
?????? : I2C_SendByte
?è?? : ??????????·???8??×????????ú
???? : data 8??×?????
???? : None
·????? : None
*******************************************************************************/
void I2C_SendByte(u8 data)   
{
u8 bitcount=8;          
GPIOSET(OUT);
do
{ if((data&0x80)==0x80)   
{GPIO_SetBits(I2C_SDA_GPIO, I2C_SDA_PIN);}        
else  
{GPIO_ResetBits(I2C_SDA_GPIO, I2C_SDA_PIN);}
data=data<<1;
delay_us(10); 
GPIO_ResetBits(I2C_SCL_GPIO, I2C_SCL_PIN);
delay_us(10);             
GPIO_SetBits(I2C_SCL_GPIO, I2C_SCL_PIN);  
delay_us(10);                     
GPIO_ResetBits(I2C_SCL_GPIO, I2C_SCL_PIN);  
bitcount--;
} while(bitcount);     
 }   

/*******************************************************************************
?????? : I2C_ReciveByte
?è?? : ?????????????????ú??????(8??)
???? : None
???? : None
·????? : 8??????
*******************************************************************************/
u8 I2C_ReciveByte(void) 
{
u8 s1=0,temp1=0;
u8 bitcount1=8;
GPIOSET(IN);
GPIO_ResetBits(I2C_SCL_GPIO, I2C_SCL_PIN);//SCL=0;
do
 {
delay_us(10);      
GPIO_SetBits(I2C_SCL_GPIO, I2C_SCL_PIN);  //SCL=1;
 
s1=GPIO_ReadInputDataBit(I2C_SDA_GPIO, I2C_SDA_PIN);
if(s1)                
{temp1=temp1|0x01;}
else                     
{temp1=temp1&0xfe;}
delay_us(10);
GPIO_ResetBits(I2C_SCL_GPIO, I2C_SCL_PIN);//SCL=0;
if(bitcount1-1)
{temp1=temp1<<1;}
bitcount1--;  
 }while(bitcount1);
return(temp1);
}
 
 /*******************************************************************************
?????? : I2C_ack
?è?? : ???????????ò???ú·???ACK????
???? : None
???? : None
·????? : None
*******************************************************************************/
void I2C_ack(void)         
{  
   GPIOSET(OUT);
GPIO_ResetBits(I2C_SCL_GPIO, I2C_SCL_PIN);//SCL=0;
delay_us(5);
    GPIO_ResetBits(I2C_SDA_GPIO, I2C_SDA_PIN);//SDA=0;
delay_us(5);
    GPIO_SetBits(I2C_SCL_GPIO, I2C_SCL_PIN);  //SCL=1;
delay_us(5);
    GPIO_ResetBits(I2C_SCL_GPIO, I2C_SCL_PIN);//SCL=0;
}

 /*******************************************************************************
?????? : I2C_nack
?è?? : ???????????ò???ú·???NACK?????
???? : None
???? : None
·????? : None
*******************************************************************************/
void I2C_nack(void)          
{  
  GPIOSET(OUT);
GPIO_ResetBits(I2C_SCL_GPIO, I2C_SCL_PIN);//SCL=0;
delay_us(5);
    GPIO_SetBits(I2C_SDA_GPIO, I2C_SDA_PIN);//SDA=1;
delay_us(5);
    GPIO_SetBits(I2C_SCL_GPIO, I2C_SCL_PIN);  //SCL=1;
delay_us(5);
    GPIO_ResetBits(I2C_SCL_GPIO, I2C_SCL_PIN);//SCL=0;
}

 /*******************************************************************************
?????? : ReadTempRh
?è?? : ????????????SHT21?????????ò??????
???? : temprh,?????ò????,??????:TEMP/RH
???? : None
·????? : ·???float???????ò??????.
*******************************************************************************/
vs16 ReadTempRh(u32 temprh)
{
u8 temp[2]={0};
u8 crcdata=0;
u16 tempvalue=0,Rhvalue=0;
float temperature=0,rh=0;
vs16 Uptemperature=0,UpRh=0;
USART_ITConfig(USART1, USART_IT_RXNE, DISABLE);
if(temprh==TEMP)
{
I2C_Start();
I2C_SendByte(0x80);
if(TRUE==I2C_Slave_ACK()){I2C_SendByte(0xe3);}
if(TRUE==I2C_Slave_ACK())
{ I2C_Start();I2C_SendByte(0x81);}
if(TRUE==I2C_Slave_ACK()){delay_ms(15);}
temp[0]=I2C_ReciveByte();
I2C_ack();
temp[1]=I2C_ReciveByte();
I2C_ack();
crcdata=I2C_ReciveByte();
I2C_nack();
I2C_Stop();
//crccheck
if(ERROR!=(SHT21_CheckCrc(temp,2,crcdata)))
{
tempvalue=(temp[0]<<8|temp[1]);
tempvalue&=~0x0003;
temperature=-46.85 + 175.72/65536*(float)tempvalue;
Uptemperature=temperature*10;
}
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
return Uptemperature;
}
else if(temprh==RH)
{
I2C_Start();
I2C_SendByte(0x80);
if(TRUE==I2C_Slave_ACK()){I2C_SendByte(0xe5);}
if(TRUE==I2C_Slave_ACK())
{ I2C_Start();I2C_SendByte(0x81);}
if(TRUE==I2C_Slave_ACK()){delay_ms(18);}
temp[0]=I2C_ReciveByte();
I2C_ack();
temp[1]=I2C_ReciveByte();
I2C_ack();
crcdata=I2C_ReciveByte();
I2C_nack();
I2C_Stop();
//crccheck
if(ERROR!=(SHT21_CheckCrc(temp,2,crcdata)))
{
Rhvalue=((temp[0]<<8)|temp[1]);
Rhvalue&=~0x0003;
rh=-6+125.00/65536*(float)Rhvalue;
UpRh=rh*10;
}
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
return UpRh;
}
else
{
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
return 1;
}

}

 /*******************************************************************************
?????? : ReadRes
?è?? : ??????????????SHT21???§?????÷??
???? : None
???? : None
·????? : ·???8????SHT21???§?????÷??
*******************************************************************************/
u8 ReadRes(void)
{
u8 temp=0;
  I2C_Start();
I2C_SendByte(0x80);
if(TRUE==I2C_Slave_ACK()){I2C_SendByte(0xe7);}
 
if(TRUE==I2C_Slave_ACK())
{ I2C_Start();I2C_SendByte(0x81);}
if(TRUE==I2C_Slave_ACK()){temp=I2C_ReciveByte();}
  I2C_nack();
I2C_Stop();
return temp;

}

 /*******************************************************************************
?????? : WriteRes
?è?? : ????????????SHT21???§?????÷??
???? : data,????SHT21?????÷??????
???? : None
·????? : None
*******************************************************************************/
void WriteRes(u8 data)
{
USART_ITConfig(USART1, USART_IT_RXNE, DISABLE);
I2C_Start();
I2C_SendByte(0x80);
if(TRUE==I2C_Slave_ACK()){I2C_SendByte(0xe6);}
  if(TRUE==I2C_Slave_ACK()){I2C_SendByte(data);}
if(TRUE==I2C_Slave_ACK()){I2C_Stop();}
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
}

 /*******************************************************************************
?????? : SoftReset
?è?? : ???????????í????SHT21
???? : None
???? : None
·????? : None
*******************************************************************************/
void SoftReset(void)
{
USART_ITConfig(USART1, USART_IT_RXNE, DISABLE);

I2C_Start();
I2C_SendByte(0x80);
if(TRUE==I2C_Slave_ACK()){I2C_SendByte(0xfe);}
if(TRUE==I2C_Slave_ACK()){I2C_Stop();}
delay_ms(30);

USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
}



u8 SHT21_CheckCrc(u8 data[], u8 nbrOfBytes, u8 checksum)
{
u8 crc = 0,byteCtr,bit;
for (byteCtr = 0; byteCtr < nbrOfBytes; ++byteCtr)
{ crc ^= (data[byteCtr]);
for (bit = 8; bit > 0; --bit)

if (crc & 0x80) crc = (crc << 1) ^ 0x131;
else crc = (crc << 1);
}
}
if (crc != checksum) return ERROR;
else return 0;
}
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2015-5-11
在线时间
0 小时
发表于 2015-5-11 15:28:24 | 显示全部楼层
回复【14楼】wenwubie:
---------------------------------
能不能把I2C.H 和delay.h 也贴出来啊。没头文件,没法编译,谢谢了。
交流技术,认识朋友。
回复 支持 反对

使用道具 举报

13

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
193
金钱
193
注册时间
2014-9-11
在线时间
15 小时
发表于 2015-5-12 12:35:56 | 显示全部楼层
按照楼主修改的方法修改的,完美解决了问题。谢谢了
回复 支持 反对

使用道具 举报

11

主题

52

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2015-7-6
在线时间
5 小时
发表于 2015-8-1 10:12:39 | 显示全部楼层
感谢分享!!
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2015-8-21
在线时间
3 小时
发表于 2016-3-1 17:37:05 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-20 18:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表