查看: 2273|回复: 1

有人研究过ST官方I2C中断代码吗 [复制链接]

hsia (离线)
积分
704
帖子
1
发表于 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这几天一直上不去,非常之郁闷!
一朝成名 (离线)
积分
36914
帖子
1865
发表于 2009-6-12 21:31:37 |显示全部楼层
有时候官方的东西也不能信
害人的东西存在于各个世界角落
网名招摇了点,人不招摇,大家都知道:)
您需要登录后才可以发表评论 登录 | 立即注册

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