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.