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

 
 
> прерывания STM32F4, должно работать, но не хочет...
Метценгерштейн
сообщение Aug 23 2014, 16:06
Сообщение #1


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

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



Вроде все настроил, платка F4Discovery, а работать по нажатию на кнопку не хочет.
Может кто подскажет что не так ему?
Код
void EXTI0_IRQHandler(void)
{
  on (LED_Blue);
  EXTI->PR |= EXTI_PR_PR0;//сбросили бит прерывания
}

Код
void main()
{
  InitPeriph(); // тут лампочка описана и дефайн кнопки
  
// настройка ноги на прерывание PA0
    GPIOA->MODER &= ~GPIO_MODER_MODER0;  //input
    GPIOA->OTYPER &= ~GPIO_OTYPER_OT_0;  //Output push-pull
    GPIOA->OSPEEDR |=GPIO_OSPEEDER_OSPEEDR0;  //40 MHz
    GPIOA->PUPDR &=~GPIO_PUPDR_PUPDR0;  //No pull-up, pull-down
    
    // настройка внешнего прерывания на PA0
      RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN;
      SYSCFG->EXTICR[0] |= SYSCFG_EXTICR1_EXTI0_PA;
      EXTI->IMR |= EXTI_IMR_MR0;
      EXTI->RTSR |= EXTI_FTSR_TR0;
      NVIC_EnableIRQ(EXTI0_IRQn);  
      NVIC_SetPriority(EXTI0_IRQn, 1);
  
  
  while(1)
  {
    
  }      
  
}
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Genadi Zawidowsk...
сообщение Aug 24 2014, 20:43
Сообщение #2


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

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата
так мы накладываем маску 0x00000001 и стираем т.о. только нулевой бит

EXTI->PR |= EXTI_PR_PR0;
стирает всё.
EXTI->PR = EXTI_PR_PR0;
Стирает только нулевой бит.

Я такой немного "извращённый" способ использую (с маскированием интересующих и записью обратно) как шаблон для случая нескольких разных обработчиков на одной функции прерывания.
Цитата
нигде же не сказано, чтобы беречь другие биты.

Если не хотите обрабатывать в других функциях - можно не беречь. Предположим у Вас ещё 4_9 биты установлены - для другого случая. Если вы их здесь сбросите, обработчик 4_9 уже не вызовется.

Сообщение отредактировал Genadi Zawidowski - Aug 24 2014, 20:47
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Метценгерштейн   прерывания STM32F4   Aug 23 2014, 16:06
- - Genadi Zawidowski   Почему не работает не скажу, но при таком способе ...   Aug 23 2014, 17:17
|- - Метценгерштейн   Цитата(Genadi Zawidowski @ Aug 23 2014, 21...   Aug 23 2014, 17:23
- - Genadi Zawidowski   Я напимсал, что увиденная ошибка не влияет. Но пот...   Aug 23 2014, 17:29
- - Метценгерштейн   да, увидел отличия- глаз замылился. кнопка- она ...   Aug 23 2014, 17:35
- - Genadi Zawidowski   Если в первом посте, я не вижу КодRCC->AHB1EN...   Aug 23 2014, 17:38
- - Метценгерштейн   вот InitPeriph(); здесь Код#ifndef HARDWARE_H__ #d...   Aug 23 2014, 17:41
- - Genadi Zawidowski   Проверьте видимость кнопки чтением регистра GPIOA-...   Aug 23 2014, 17:45
- - Метценгерштейн   так нет реакции Код{ if ((GPIOA->IDR ...   Aug 23 2014, 17:57
- - Genadi Zawidowski   На нажатия должна реагировать. Пока видно, что все...   Aug 23 2014, 17:58
- - Метценгерштейн   инициализация прерывания верная же? просто кнопка ...   Aug 23 2014, 18:00
- - Genadi Zawidowski   Цитатапросто кнопка работает- опрашивал ее по круг...   Aug 23 2014, 18:03
- - Метценгерштейн   Кодif ( is_bit_active(KEY) ) { o...   Aug 23 2014, 18:11
- - Genadi Zawidowski   Сорри, посмотрел схему... На PA0 кнопка подает ...   Aug 23 2014, 18:21
- - Метценгерштейн   провел эксперимент: в цикле зеленый LED мигает, пр...   Aug 23 2014, 18:35
- - Genadi Zawidowski   Я бы попросил проект целиком, а не только избранны...   Aug 23 2014, 18:37
- - Метценгерштейн   https://cloud.mail.ru/public/19d1f1936da5/STM32%20...   Aug 23 2014, 19:41
- - Genadi Zawidowski   Пока всё как у вас... Уточню: ввод состояния PA0 р...   Aug 23 2014, 19:58
- - Метценгерштейн   я правильно понимаю, что у вас такая же плата? EX...   Aug 23 2014, 20:01
- - Genadi Zawidowski   Плата идентичная. Лампочки работают. Посмотрел дам...   Aug 23 2014, 20:07
- - Метценгерштейн   да, спасибо, что-то с этим стартапом- с ним в прер...   Aug 23 2014, 20:18
- - Genadi Zawidowski   Ловите работающий вариант. Изменённые файлы.   Aug 23 2014, 20:25
- - Метценгерштейн   уже лучше на сон ) в чем причина была? можете вес...   Aug 23 2014, 20:35
- - Genadi Zawidowski   Ловите подкаталог пользовательской программы - в н...   Aug 23 2014, 21:03
- - Метценгерштейн   вы все пути препроцессора удалили. А зачем? http:/...   Aug 23 2014, 21:11
- - Genadi Zawidowski   Я ничего не удалял. Поместите в Ваш проект main.c ...   Aug 23 2014, 21:16
- - Метценгерштейн   ИАР какая версия? да, заработало в ИАР 7.20 ! ...   Aug 23 2014, 21:21
- - Genadi Zawidowski   Смотрите... А что мешает самому добавить один файл...   Aug 23 2014, 21:23
- - Метценгерштейн   похоже, что на 7.2 работает, а на моей нет... разб...   Aug 23 2014, 21:30
- - Genadi Zawidowski   Цитатаеще раз- что изменили, чтобы заработало? 1 -...   Aug 23 2014, 21:37
- - Метценгерштейн   да, я видел, что 6.7 ваш код обработчика работает...   Aug 23 2014, 21:43
- - Genadi Zawidowski   Что-то намудрили с использованием системных тиков....   Aug 23 2014, 22:06
- - Метценгерштейн   а если мне точно надо время мерять? на другом проц...   Aug 23 2014, 22:09
- - Genadi Zawidowski   Спокойной ночи.   Aug 23 2014, 22:10
- - Метценгерштейн   Вот что странно: обработчик Кодvoid EXTI0_IRQHandl...   Aug 24 2014, 14:01
|- - adnega   Цитата(Метценгерштейн @ Aug 24 2014, 18:0...   Aug 24 2014, 15:07
- - Genadi Zawidowski   ЦитатаВот что странно: обработчик КодEXTI->PR ...   Aug 24 2014, 15:11
|- - Метценгерштейн   Цитата(Genadi Zawidowski @ Aug 24 2014, 19...   Aug 24 2014, 15:57
- - adnega   По второму кругу обсуждаем. Найдите десять отличий...   Aug 24 2014, 15:23
- - Genadi Zawidowski   Цитатапочему все? Потому, что ЗАПИСЬ единицы в соо...   Aug 24 2014, 19:30
- - Метценгерштейн   я просто понять хочу и разобраться. Я не игнорирую...   Aug 24 2014, 19:47
- - Genadi Zawidowski   Цитатая хочу сбросить прерывание EXTI_PR_PR0, т.е....   Aug 24 2014, 19:55
- - Метценгерштейн   другими словами, можно просто писать EXTI->PR =...   Aug 24 2014, 20:35
- - Метценгерштейн   давайте по шагам. у меня сработали прерывания EXTI...   Aug 24 2014, 20:55
- - Genadi Zawidowski   ЦитатаPR= 0x00000001 Так не потеряете. А как Вы пи...   Aug 24 2014, 20:58
- - Метценгерштейн   увидел свою ошибку- при | я в регистр запишу полно...   Aug 24 2014, 21:12
- - Genadi Zawidowski   Ну да! А ведь уже говорили, что разницу увидел...   Aug 24 2014, 21:15


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

 


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


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