Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 24.03.2014, 17:45  
bass1981
Гражданин KAZUS.RU
 
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию Внешние прерывания Stm32f4

Доброго дня выручайте горя программиста.
Теперь не могу разобраться с внешними прерываниями.
Разобрался что означают регистры по даташиту.... И как они группируются по группам.
Как это в коде написать...

Код:
//AFIO-›EXTI [4››0x02] |= AFIO_EXTICR1_EXTI4_PC; // Прерывание INT4 на PORTС.
//AFIO-›EXTICR [5››0x02] |= AFIO_EXTICR2_EXTI5_PC; // Прерывание INT5 на PORTC.	
NVIC-›EXTI4 =1;
Есть пример, заранее спасибо.
Реклама:
bass1981 вне форума  
Непрочитано 24.03.2014, 19:25  
bass1981
Гражданин KAZUS.RU
 
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию Re: Внешние прерывания Stm32f4

Все разобрался...
EXTI-›IMR |= SYSCFG_EXTICR2_EXTI4_PA |
SYSCFG_EXTICR2_EXTI5_PA ;
EXTI-›RTSR |= (1‹‹4);//возрастание
EXTI-›FTSR |= (1‹‹5);//падение
NVIC_EnableIRQ (EXTI9_5_IRQn);
NVIC_EnableIRQ (EXTI4_IRQn);

Все таки сложноватый микроконтроллер.
Но по приятние АВРКИ.....
bass1981 вне форума  
Непрочитано 10.04.2014, 12:57  
AlexP74
Временная регистрация
 
Регистрация: 18.01.2010
Сообщений: 89
Сказал спасибо: 7
Сказали Спасибо 22 раз(а) в 14 сообщении(ях)
AlexP74 на пути к лучшему
По умолчанию Re: Внешние прерывания Stm32f4

А у меня что то никак...

Код:
    SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOI, EXTI_PinSource10);
    
    EXTI_InitTypeDef   EXTI_InitStructure;
    EXTI_InitStructure.EXTI_Line = EXTI_Line10;
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;  
    EXTI_InitStructure.EXTI_LineCmd = ENABLE;
    EXTI_Init(&EXTI_InitStructure);
IDR10 порта I скачет, а в регистре EXTI_PR 10-й бит не устанавливается. 10-й бит в IMR и RTSR установлены. Тактирование порт и SYSCFG включено.
Причем тот же код на F1 работает, а начал переносить на F4 и стопорнулся...
AlexP74 вне форума  
Непрочитано 10.04.2014, 14:18  
AlexP74
Временная регистрация
 
Регистрация: 18.01.2010
Сообщений: 89
Сказал спасибо: 7
Сказали Спасибо 22 раз(а) в 14 сообщении(ях)
AlexP74 на пути к лучшему
По умолчанию Re: Внешние прерывания Stm32f4

Чудес не бывает, что подтвердило изучение errata DM00037591 по stm32f407
AlexP74 вне форума  
Непрочитано 11.04.2014, 16:41  
bass1981
Гражданин KAZUS.RU
 
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию Re: Внешние прерывания Stm32f4

Продолжил оказалось не сильно рабочий код...

Код:
в IMR надо бит выставлять порта.
EXTI-›IMR |= EXTI_IMR_MR4;
Но прерывание срабатывает на порту А ........ Буду разбираться .... Если кто поможет буду рад.
bass1981 вне форума  
Непрочитано 11.04.2014, 18:34  
bass1981
Гражданин KAZUS.RU
 
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию Re: Внешние прерывания Stm32f4

Двинулся дальше надо тактирование выставить..... Все заработало.
Код:
RCC-›APB2ENR |= RCC_APB2ENR_SYSCFGEN;
SYSCFG-›EXTICR[1] = SYSCFG_EXTICR2_EXTI4_PC;
EXTI-›IMR |= EXTI_IMR_MR4;
EXTI-›RTSR |= (1‹‹4);//возрастание
EXTI-›FTSR &= ~ (1‹‹4);
NVIC_SetPriority(EXTI4_IRQn, 10);
NVIC_EnableIRQ (EXTI4_IRQn);

RCC-›APB2ENR |= RCC_APB2ENR_SYSCFGEN;
SYSCFG-›EXTICR[1] = SYSCFG_EXTICR2_EXTI5_PC;
EXTI-›IMR |= EXTI_IMR_MR5;//SYSCFG_EXTICR2_EXTI4_PC ;
EXTI-›FTSR |= (1‹‹5);//падение
EXTI-›RTSR &= ~ (1‹‹5);
NVIC_SetPriority(EXTI9_5_IRQn, 10);
NVIC_EnableIRQ (EXTI9_5_IRQn);

Последний раз редактировалось bass1981; 11.04.2014 в 18:41.
bass1981 вне форума  
Сказали "Спасибо" bass1981
CAIG (15.03.2016)
Непрочитано 23.05.2014, 18:30  
vovanxp
Частый гость
 
Регистрация: 26.02.2011
Сообщений: 19
Сказал спасибо: 3
Сказали Спасибо 1 раз в 1 сообщении
vovanxp на пути к лучшему
По умолчанию Re: Внешние прерывания Stm32f4

Никак не могу найти причину почему не работает прерывание на ноге PA3
Милион раз все пересмотрел, должно работать, а не работает

stm32f4

void EXTILine3_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;

/* Enable GPIOA clock */
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
/* Enable SYSCFG clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);

/* Configure PA3 pin as input floating */
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_Init(GPIOA, &GPIO_InitStructure);
EXTI_DeInit();

/* Connect EXTI Line3 to PA3 pin */
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource3);

/* Configure EXTI Line3 */
EXTI_InitStructure.EXTI_Line = EXTI_Line3;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);

/* Enable and set EXTI Line3 Interrupt to the lowest priority */
NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriori ty = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

NVIC_EnableIRQ (EXTI3_IRQn);
}


int main(void) {

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);

EXTILine3_Config();

}


void EXTI3_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line3) != RESET)
{

EXTI_ClearITPendingBit(EXTI_Line3);
}
}

Последний раз редактировалось vovanxp; 24.05.2014 в 11:19.
vovanxp вне форума  
Непрочитано 28.05.2014, 11:13  
vovanxp
Частый гость
 
Регистрация: 26.02.2011
Сообщений: 19
Сказал спасибо: 3
Сказали Спасибо 1 раз в 1 сообщении
vovanxp на пути к лучшему
По умолчанию Re: Внешние прерывания Stm32f4

Бредовня, сижу неделю над дурными прерываниями.

При возникновении прерывания в регистре EXTI-PR0 возникает единица, но в обработчик прерывания не попадает. Что за хрень, помогите плз.

void EXTI0_IRQHandler(void)
{
EXTI_ClearITPendingBit(EXTI_Line0);
}


int main(void) {
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);


SYSCFG_DeInit();

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);

SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource0);

EXTI_InitStructure.EXTI_Line = EXTI_Line0;
EXTI_ClearITPendingBit(EXTI_Line0);
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);

NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriori ty = 0x00;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
vovanxp вне форума  
Непрочитано 28.05.2014, 11:50  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Внешние прерывания Stm32f4

Выкинуть на SPL и забыть как страшный сон .
Здесь для PA2 ...

Код:
     EXTI-›IMR |= EXTI_IMR_MR2;   
     EXTI-›FTSR |=EXTI_FTSR_TR2;
     NVIC_SetPriority(EXTI2_IRQn ,15);
     NVIC_EnableIRQ(EXTI2_IRQn );
Для других портов надо конфигурить SYSCFG_EXTICRx
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 28.05.2014 в 11:52.
dosikus вне форума  
Непрочитано 28.05.2014, 16:31  
bass1981
Гражданин KAZUS.RU
 
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию Re: Внешние прерывания Stm32f4

Вот на четвертое прерывание с регистрацией колбек функции.
Код:
typedef void (*ISR_FUNC_PTR)(void);
static ISR_FUNC_PTR fptrGpio1=0;


void EXTI4_IRQHandler ()
{
      if (EXTI-›PR & (1‹‹4)) // Прерывание от EXTI4?
      { EXTI-›PR |= (1‹‹4); // Сбросить флаг EXTI4.
						if (fptrGpio1 != 0)
						{
							(*fptrGpio1)();
						}
      }	
}

void IRQGpioInit(ISR_FUNC_PTR isr)
{
fptrGpio1 = isr;
RCC-›APB2ENR |= RCC_APB2ENR_SYSCFGEN;
SYSCFG-›EXTICR[1] = SYSCFG_EXTICR2_EXTI4_PC;
EXTI-›IMR |= EXTI_IMR_MR4;
EXTI-›RTSR |= (1‹‹4);//выставляем на возрастание
EXTI-›FTSR &= ~ (1‹‹4);//сбрасываем на падение
NVIC_SetPriority(EXTI4_IRQn, 15);
NVIC_EnableIRQ (EXTI4_IRQn);
}
Переделайте на второе.
bass1981 вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Внешние прерывания kurilka AVR 13 23.11.2013 23:55
Внешние прерывания Atmega32u4 bass1981 AVR 5 08.10.2013 21:52
Внешние прерывания STM32F4 ARM 1 07.12.2012 10:40
AT89C5131 прием и передача данных по USB rihkov AVR 14 15.11.2012 08:16
[Решено] Proteus внешние прерывания ethers Proteus 7 21.09.2009 20:15


Часовой пояс GMT +4, время: 17:36.


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