查看: 5583|回复: 1

有人研究过ST官方I2C中断代码吗

[复制链接]
发表于 2009-6-12 12:35:10 | 显示全部楼层 |阅读模式
关键词: 代码 , 官方 , 研究
连续发送两个字节数据:
  Tx1_Idx = 0;
  I2cNumbOfBytes2Tansmit = 2;
  I2C1_Buffer_Tx[0] = 0x64;
  I2C1_Buffer_Tx[1] = 0x00;
  Direction = Transmitter;
  I2C_GenerateSTART(I2C1, ENABLE);

我的中断代码:
void I2C1_EV_IRQHandler(void)
{
  switch (I2C_GetLastEvent(I2C1))
  {
    case I2C_EVENT_MASTER_MODE_SELECT:                 /* EV5 */
      /* Master Transmitter ----------------------------------------------*/
      /* Send slave Address for write */
      if(Direction == Transmitter)
      {
        /* Master Transmitter ----------------------------------------------*/
        /* Send slave Address for write */
        I2C_Send7bitAddress(I2C1, 0x64, I2C_Direction_Transmitter);
      }
      else
      {
        /* Master Receiver -------------------------------------------------*/
        /* Send slave Address for read */
        I2C_Send7bitAddress(I2C1, 0x65, I2C_Direction_Receiver);      
      }
      break;
        
    /* Master Transmitter --------------------------------------------------*/
    /* Test on I2C1 EV6 and first EV8 and clear them */
    case I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED:  
      
      /* Send the first data */
      I2C_SendData(I2C1, I2C1_Buffer_Tx[Tx1_Idx++]);
      I2cNumbOfBytes2Tansmit--;
      if (I2cNumbOfBytes2Tansmit == 0)
      {
        /* In order to not have a TxE event Interrupt */
        I2C_ITConfig(I2C1, I2C_IT_BUF, DISABLE);
      }
      break;

    /* Test on I2C1 EV8 and clear it */
    case I2C_EVENT_MASTER_BYTE_TRANSMITTING:  /* Without BTF, EV8 */     
      I2C_SendData(I2C1, I2C1_Buffer_Tx[Tx1_Idx++]);
      I2cNumbOfBytes2Tansmit--;
      if (I2cNumbOfBytes2Tansmit == 0)
      {
        I2C_ITConfig(I2C1, I2C_IT_BUF, DISABLE);
      }         
      break;

    case I2C_EVENT_MASTER_BYTE_TRANSMITTED: /* With BTF EV8-2 */
      I2C_ITConfig(I2C1, I2C_IT_BUF, ENABLE);
      I2C_GenerateSTOP(I2C1, ENABLE);
      Direction = Receiver;
      break;
    default:
      break;
  }
}

现在发现进不了EV8-2中断,如果改成发送一个字节数据可以进入该中断。
仔细研究了datasheet,找不出任何问题。
PS:外挂的器件是rx8025实时时钟芯片。
香水城到不到这里的?21icbbs这几天一直上不去,非常之郁闷!
发表于 2009-6-12 21:31:37 | 显示全部楼层
有时候官方的东西也不能信
害人的东西存在于各个世界角落
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表