初级会员

- 积分
- 67
- 金钱
- 67
- 注册时间
- 2013-1-22
- 在线时间
- 1 小时
|
5金钱
问下之前遇到的一个问题,位带操作 如
前提是:
#define PBout(n) BIT_ADDR(GPIOB_ODR_Addr,n) //输出
#define IIC_SDA   Bout(11) //SDA
则 IIC_SDA = 1; 和 GPIO_SetBits( GPIOB, GPIO_Pin_11 );是否完全等效
当做输入的时候:
#define PBin(n) BIT_ADDR(GPIOB_IDR_Addr,n) //输入
#define IIC_SDA   Bin(11) //SDA
则读 IIC_SDA 和 GPIO_ReadInputDataBit( GPIOB, GPIO_Pin_11 ) 又是否完全等效。
还有原子哥在IIC试验中SDA_IN(); 已经设置为输入模式了,IIC_SDA=1;还能够起作用么,可以输出高电平么?求教下各位,谢谢!
//等待应答信号到来
//返回值:1,接收应答失败
// 0,接收应答成功
u8 IIC_Wait_Ack(void)
{
u8 ucErrTime=0;
SDA_IN(); //SDA设置为输入
IIC_SDA=1;delay_us(1);
IIC_SCL=1;delay_us(1);
while(READ_SDA)
{
ucErrTime++;
if(ucErrTime>250)
{
IIC_Stop();
return 1;
}
}
IIC_SCL=0;//时钟输出0
return 0;
}
|
|