STM32F4- I2C Eventinterrupt

Gast #2901045
Lesenswert?

Hallo liebe community,

ich versuche derzeit mit STM32f407VG eine I2C Kommunikation aufzubauen.
Mein Problem ist gerade das der Eventinterrupt nicht erkannt wird. Dazu 
habe ich im folgenden Codesegment die Ports/Peripherie/Interrupt 
eingestellt.

int main(void)
{
  GPIO_InitTypeDef GPIO_InitStruct_I2C1;
  NVIC_InitTypeDef NVIC_InitStruct_I2C1;
  I2C_InitTypeDef I2C_InitStruct;

  SystemInit();

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE);

        // I2C Ausgänge initialisieren
  GPIO_InitStruct_I2C1.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
  GPIO_InitStruct_I2C1.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStruct_I2C1.GPIO_Speed = GPIO_Speed_2MHz;
  GPIO_InitStruct_I2C1.GPIO_OType = GPIO_OType_OD;
  GPIO_InitStruct_I2C1.GPIO_PuPd  = GPIO_PuPd_NOPULL;
  GPIO_Init(GPIOB, &GPIO_InitStruct_I2C1);

  GPIO_PinAFConfig(GPIOB,GPIO_PinSource6 | GPIO_PinSource7, 
GPIO_AF_I2C1);


        // Interrupt initialisieren
  NVIC_InitStruct_I2C1.NVIC_IRQChannel = I2C1_EV_IRQn;
  NVIC_InitStruct_I2C1.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStruct_I2C1.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStruct_I2C1.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStruct_I2C1);

  I2C_DeInit(I2C1);

  //I2C initialisieren
  I2C_InitStruct.I2C_Ack = I2C_Ack_Enable;
  I2C_InitStruct.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
  I2C_InitStruct.I2C_ClockSpeed = 100000;
  I2C_InitStruct.I2C_DutyCycle = I2C_DutyCycle_2;
  I2C_InitStruct.I2C_Mode = I2C_Mode_I2C;
  I2C_InitStruct.I2C_OwnAddress1 = 0;
  I2C_Init(I2C1, &I2C_InitStruct);

        // I2c Interrupts aktivieren
  I2C_ITConfig(I2C1, I2C_IT_EVT, ENABLE);

   //I2C modul aktivieren
        I2C_Cmd(I2C1, ENABLE);

  I2C_GenerateSTART(I2C1, ENABLE); //start bit senden (Interrupt 
auslösen)


//in stm32f4xx_it.c definiert

void I2C1_EV_IRQHandler(void)
{
}


Er müsste doch demnach sobald I2C_GenerateSTART(I2C1, ENABLE); 
ausgeführt wird in die Interruptroutine (I2C1_EV_IRQHandler) springen 
oder nicht?

Muss ich noch weitere Einstellungen bezüglich der Interruptvektoradresse 
durchführen oder reicht es eine Funktion mit dem Namen 
I2C1_EV_IRQHandler zu erstellen, so wie ich das gemacht habe?

Schon mal vielen Dank für jede Hilfe.

Gruß
Jonny

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren