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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.