реклама на сайте
подробности

 
 
> STM32L152 внешние прерывания, не разобраться
Метценгерштейн
сообщение Jan 10 2013, 22:09
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



именно под проц L

хочу настроить ногу РА0 на срабатывание.

мне порт РА0 конфигурить как альтернативную функцию или просто как порт на вход?

где указать для этого проца, что EXTI0 будет именно на порт А?


чего еще не хвататет, чтобы заработало?
Код
  EXTI->IMR |= EXTI_IMR_MR0; // конфига the mask bits
  EXTI->RTSR |= EXTI_RTSR_TR0; //настройка фронта-среза
  EXTI->FTSR |= EXTI_FTSR_TR0; //настройка фронта-среза
  NVIC_EnableIRQ(EXTI0_IRQn);
  NVIC_SetPriority(EXTI0_IRQn, 15);

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Метценгерштейн
сообщение Jan 11 2013, 15:30
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



обработчик
Код
void EXTI0_IRQHandler(void) {
  on (LED_Blue);
  EXTI->PR |= EXTI_PR_PR0;//сбросили бит прерывания
}

инициализация
Код
void InitPeriph(void)
  {
...
тут инициализация портов на ногах и разрешение тактирования GPIOA GPIOB
кнопка PA0- как вход
...
  //настройка внешнего прерывания на int0
  __enable_irq ();
    RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN;
    
    SYSCFG->EXTICR[0] |= SYSCFG_EXTICR1_EXTI0_PA;
  
    EXTI->IMR |= EXTI_IMR_MR0; // какую линию выбираем из 23-х (у нас 0-я)
  
    EXTI->RTSR |= EXTI_RTSR_TR0; //настройка фронта-среза
    EXTI->FTSR |= EXTI_FTSR_TR0;
  
    NVIC_EnableIRQ(EXTI0_IRQn);
    NVIC_SetPriority(EXTI0_IRQn, 1);

  }

и при этом всем работать не хочет! Чего не так?
Уже в инете посмотрел- все так и инициализируют. Почему не работает?

Сообщение отредактировал Метценгерштейн - Jan 12 2013, 12:39
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Jan 12 2013, 13:41
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Функция обработчик у Вас так называется ?

Код
void EXTI0_IRQHandler(void)
{
     EXTI->PR|=(1<<0);     //сбрасываем флаг прерывания
}


У Вас есть внутрисхемный отладчик ? Можете посмотреть регистры ?


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Метценгерштейн   STM32L152 внешние прерывания   Jan 10 2013, 22:09
- - demiurg_spb   Цитата(Метценгерштейн @ Jan 11 2013, 02:0...   Jan 11 2013, 05:37
- - Метценгерштейн   т.е. нога у Вас просто как вход. Не как альтернати...   Jan 11 2013, 08:34
|- - demiurg_spb   Цитата(Метценгерштейн @ Jan 11 2013, 12:3...   Jan 11 2013, 10:23
- - ek74   Цитата(Метценгерштейн @ Jan 11 2013, 02:0...   Jan 11 2013, 10:12
- - Метценгерштейн   добавил в проект файл stm32l1xx_syscfg.c и подклю...   Jan 11 2013, 11:08
|- - demiurg_spb   Вот мой обработчик:Кодvoid __irq EXTI15_10_IRQHand...   Jan 11 2013, 13:24
- - Метценгерштейн   да, обработчик такой- выше сообщение- там он как р...   Jan 12 2013, 13:56
- - Метценгерштейн   разобрался- заработало. Причина- был выбран в прое...   Jan 12 2013, 15:56
|- - _Артём_   Цитата(Метценгерштейн @ Jan 12 2013, 17:5...   Jan 12 2013, 16:37
- - Метценгерштейн   да, заработало. Вспомнил, что уже наступал на эти...   Jan 12 2013, 18:58


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th August 2025 - 18:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.01388 секунд с 7
ELECTRONIX ©2004-2016