expression has no effect:IIC_Init
时间: 2024-02-07 11:02:53 浏览: 32
这个问题看起来像是一个错误信息,它表示在代码中使用了一个表达式,但是这个表达式没有任何作用。通常这种错误发生在函数或方法的调用上,可能是因为函数的返回值没有被使用,或者函数没有正确地处理参数。在这个具体的错误信息中,似乎是在调用名为IIC_Init的函数时出现了这个问题。可能需要检查一下IIC_Init函数的定义和使用情况,看看是否有地方调用了这个函数但是没有正确处理返回值或参数。
相关问题
函 数 名 : iic_write_byte * 函数功能 : IIC发送一个字节 * 输 入 : dat:发送一个字节 * 输 出 : 无补充完整具体实现
以下是一个可能的iic_write_byte函数的补充完整具体实现,供参考:
```c
void iic_write_byte(unsigned char dat)
{
unsigned char i;
SDA_OUT(); // SDA设置为输出模式
IIC_SCL = 0; // 保证时钟线为低电平
for (i = 0; i < 8; i++)
{
if (dat & 0x80) // 判断发送位为0还是1
IIC_SDA = 1;
else
IIC_SDA = 0;
IIC_SCL = 1; // 拉高时钟线,使接收器读取数据
IIC_SCL = 0; // 拉低时钟线,准备发送下一位数据
dat <<= 1; // 移位,准备发送下一位数据
}
IIC_SDA = 1; // 发送完毕后,SDA设置为高电平
}
```
该函数的功能是向IIC总线上发送一个字节数据。函数的输入参数是要发送的字节数据,函数的输出是无。
函数的具体实现过程如下:
1. 把SDA线设置为输出模式。
2. 拉低时钟线,保证时钟线为低电平。
3. 用循环发送字节数据的每一位,从高位到低位,每发送一位就拉高时钟线,使接收器读取数据,发送完一位后再拉低时钟线,准备发送下一位数据。
4. 发送完所有位后,把SDA线设置为高电平,表示数据发送完毕。
需要注意的是,该函数中的IIC_SCL和IIC_SDA变量分别代表IIC总线上的时钟线和数据线,需要根据实际情况进行定义。另外,函数中的SDA_OUT()表示将SDA线设置为输出模式的宏定义,也需要根据实际情况进行定义。
函 数 名 : iic_stop * 函数功能 : 产生IIC停止信号 * 输 入 : 无 * 输 出 : 无补充完整
函数代码如下:
```c
void iic_stop(void)
{
SDA_OUT(); // SDA线输出模式
IIC_SCL = 0; // 先将SCL线拉低
IIC_SDA = 0; // 再拉低SDA线,形成停止信号
delay_us(4); // 延时一段时间
IIC_SCL = 1; // 最后将SCL线拉高,结束停止信号的产生
delay_us(4); // 延时一段时间
IIC_SDA = 1; // SDA线恢复高电平
}
```
该函数的功能是产生IIC总线的停止信号,用于结束一次IIC通信。具体实现的步骤如下:
1. 将SDA线设置为输出模式;
2. 将SCL线拉低;
3. 将SDA线拉低,形成停止信号;
4. 延时一段时间,等待总线稳定;
5. 将SCL线拉高,结束停止信号的产生;
6. 延时一段时间,等待总线稳定;
7. 将SDA线恢复为高电平。