STM8L进入低功耗再退出低功耗

2019-07-19 20:24发布

最近做一个低功耗产品,用到的是STM8L152单片机,其中用到了单片机的内部的硬件IIC,程序进入低功耗halt()模式后再退出halt()模式时,有时候会卡在while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));这句话这里,然后就一直死在这里了,下面我会截图和上一部分代码,不知道坛友们有遇到过这种情况吗?调了几天了, 很蛋痛

[mw_shl_code=applescript,true]void IIC_Rest()
{
          unsigned char i;
        while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY)); //等待空闲
        I2C_GenerateSTART(I2C1, ENABLE);//开启I2C1
        while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));/*EV5,主模式*/

        I2C_Send7bitAddress(I2C1, I2C1_WRITE_ADDRESS7, I2C_Direction_Transmitter);//器件地址 -- 默认0x90
        while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));
        I2C_SendData(I2C1, REST_Value);
        while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
        I2C_AcknowledgeConfig(I2C1,ENABLE);
        I2C_GenerateSTOP(I2C1, ENABLE);//关闭I2C1总线
          for(i=0;i<255;i++);        
        for(i=0;i<255;i++);
}[/mw_shl_code]

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
ChaserMCU
2019-07-21 01:32
Jundodo 发表于 2018-8-23 11:44
可以看看你的硬件IIC初始化代码吗?我现在在发送完地址后就卡死在等待
/*!< Send gsensor address for wr ...

[mw_shl_code=applescript,true]void IIC_Write(unsigned char addr,unsigned char data)
{
        while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY)); //等待空闲

        I2C_GenerateSTART(I2C1, ENABLE);//开启I2C1
        while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));/*EV5,主模式*/

        I2C_Send7bitAddress(I2C1, I2C1_WRITE_ADDRESS7, I2C_Direction_Transmitter);//器件地址 -- 默认0x90
        while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));

        I2C_SendData(I2C1, addr);//寄存器地址
        while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));

        I2C_SendData(I2C1, data);//发送数据
        while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
        I2C_AcknowledgeConfig(I2C1,ENABLE);

        I2C_GenerateSTOP(I2C1, ENABLE);//关闭I2C1总线
}[/mw_shl_code]

一周热门 更多>