Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Вопросы начинающих

Вопросы начинающих Прежде чем задать вопрос, стоит воспользоваться поиском

Ответ
 
Опции темы Опции просмотра
Старый 20.11.2016, 15:54   #1
Kopranych
Junior Member
 
Регистрация: 17.07.2016
Возраст: 28
Сообщений: 5
Вес репутации: 100/0
Kopranych will become famous soon enoughKopranych will become famous soon enough
По умолчанию STM32F4 discovery не срабатывают прерывания по I2C

Работая по шине i2c в режиме ожидания флагов контроллер получает данные. Решил сделать работу на прерываниях но после генерации условия START прерывания не происходит программа выполняется дальше. Может неправильная инициализация? Подскажите кто знает.
Код:
Код:
void I2C_init(void)
{
   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//тактируем пины для i2c
   RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE);//тактируем сам i2c
   //--------------------------------------------
   GPIO_InitTypeDef busi2c;//создаем структуры 
   I2C_InitTypeDef i2c;//для инициализации
   //------------------------------------
   i2c.I2C_ClockSpeed = 100000;//100kHz
   i2c.I2C_Mode = I2C_Mode_I2C;
  i2c.I2C_DutyCycle = I2C_DutyCycle_2;
  i2c.I2C_OwnAddress1 = OWNADRESS;
  i2c.I2C_Ack = I2C_Ack_Enable;
  i2c.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
  I2C_Init(I2C1, &i2c);
   //---------------------------------------
   busi2c.GPIO_Pin = BUS_SCL|BUS_SDA;
   busi2c.GPIO_Mode = GPIO_Mode_AF;
   busi2c.GPIO_Speed = GPIO_Speed_2MHz;
   busi2c.GPIO_OType = GPIO_OType_OD;
   busi2c.GPIO_PuPd = GPIO_PuPd_UP;
   GPIO_Init(GPIOB, &busi2c);
   //---------------------------------------------
   GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_I2C1);//включаем альтернативные 
   GPIO_PinAFConfig(GPIOB, GPIO_PinSource7, GPIO_AF_I2C1);//функции ножек
   //----------------------------------------------
   I2C_Cmd(I2C1, ENABLE);//включаем модуль i2c
   
}

void init_IT_i2c(void)
{

   NVIC_InitTypeDef IT_i2c;
   
   IT_i2c.NVIC_IRQChannel = I2C1_EV_IRQn;//прерывания по событию
   IT_i2c.NVIC_IRQChannelPreemptionPriority = 0;//приоритет прерывания чем ниже значение тем выше приоритет
   IT_i2c.NVIC_IRQChannelSubPriority = 0;//Sub приоритет прерывания чем ниже значение тем выше приоритет
   IT_i2c.NVIC_IRQChannelCmd = ENABLE;//включение параметра канала прерывания
   NVIC_Init(&IT_i2c);//инициализируем прерывание

   IT_i2c.NVIC_IRQChannel = I2C1_ER_IRQn;//прерывания по ошибке
   IT_i2c.NVIC_IRQChannelPreemptionPriority = 0;//приоритет прерывания чем ниже значение тем выше приоритет
   IT_i2c.NVIC_IRQChannelSubPriority = 0;//Sub приоритет прерывания чем ниже значение тем выше приоритет
   IT_i2c.NVIC_IRQChannelCmd = ENABLE;//включение параметра канала прерывания
   NVIC_Init(&IT_i2c);

   
   I2C_ITConfig(I2C1, I2C_IT_EVT, ENABLE);//включили прерывания по событию
   I2C_ITConfig(I2C1, I2C_IT_ERR, ENABLE);//включили прерывания по ошибке

}

void I2C_start_IT(void)
{
   // ждем освобождения шины
  while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY));
   I2C_ITConfig(I2C1, I2C_IT_BUF, ENABLE);//включаем прерывания для буфера приема и передачи
   I2C_GenerateSTART(I2C1, ENABLE);//генерируем старт
}
После генерации START зажигается флаг SB но прерывания не срабатывают
Kopranych вне форума   Ответить с цитированием
Ответ

Метки
i2c, stm32f4


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление ds1307 по i2c микроконтроллером pic16f877 ATAMAN Вопросы начинающих 21 04.09.2014 11:12
PIC18F4520 проблемы с UART-ом AlHakim Продукция MICROCHIP 4 30.10.2007 07:31
Программная симуляция pic16F876 в MPLAB Timik Продукция MICROCHIP 2 12.10.2007 15:12
CCP2 в PIC18F4520 не поддается укращению :) AlHakim Продукция MICROCHIP 19 26.09.2007 08:08


Часовой пояс GMT +3, время: 18:30.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot