请教:i2c 调试--- while((I2C_SR1&0x01)==0);//等待条件发送完成,这一步不行

2019-07-19 20:24发布

#include"iostm8s105k4.h"
void I2C_Init(void)//初始化IIC
{
 
  CLK_PCKENR1 |= 0x01;            // 打开f(MASTER)与外设I2C的连接
 I2C_CR1_PE = 0;
  I2C_FREQR = 8;                 // input clock to I2C - 16MHz
  I2C_CCRH = 0x00;                // standard mode, duty 1/1 bus speed 100kHz
  I2C_CCRL = 0xA0;                // CCR= 40 - (SCLhi must be at least 4000+1000=5000ns!)
  I2C_TRISER = 5;                // 1000ns/(125ns) + 1  (maximum 1000ns)
  I2C_OARH |= 0x40;
  I2C_OARL = 0xA0;               // own address A0;
  I2C_ITR = 7;                 // enable Event & error interrupts
  I2C_CR2 |= 0x04;               // ACK=1, Ack enable
  I2C_CR1 &= ~0x80;              // Stretch enable
 
  I2C_CR1_PE = 1;              
  }
int main(void)
{
  PE_DDR_DDR5=1;
  PE_CR1_C15=1;
  PE_CR2_C25=0;
  PE_ODR_ODR5=1;
 
  CLK_CKDIVR = 0x00;   /*I2C初始化*/
  I2C_Init();
  /*起始条件*/   I2C_CR2 &=~ 0x04; //不返回应答
  while((I2C_SR3&0x02)==1);//I2C准备就绪?
 
  I2C_CR2|=0x01;//起始位产生   while((I2C_SR1&0x01)==0);//等待条件发送完成,这一步不行

  PE_ODR_ODR5  = 0;  // 表示起始条件已经发送
  while(1);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。