STM32F4 + прерывания

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
osievskiy
Открыл глаза
Сообщения: 79
Зарегистрирован: Вт июн 18, 2013 11:23:25

Re: STM32F4 + прерывания

Сообщение osievskiy »

Поставил Keil ... с горем по полам запустил дебагер... толку 0... ничего не понятно)) Понятно одно что оно доходит до бесконечного цикла и больше ничего не делает. Прерывание как не работало так и не работает... ребята если кто то делал уже у себя такое на stm32f4 и у него получилось скиньте пример пожалуйста. Уже неделю долбаюсь
Реклама
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32F4 + прерывания

Сообщение dosikus »

osievskiy писал(а):Поставил Keil ... с горем по полам запустил дебагер... толку 0... ничего не понятно))
Во первых запустили вы симулятор. И толку естественно будет 0 , ибо в симуляторе Keil поддерживает полноценно только 103 камни .
Во вторых - если есть F4 и скорей всего дисковери - какой смысл тыркаться в симуляторе ?
Реклама
Galizin
Мучитель микросхем
Сообщения: 477
Зарегистрирован: Ср окт 15, 2008 09:33:03
Откуда: Воронеж

Re: STM32F4 + прерывания

Сообщение Galizin »

osievskiy писал(а):если кто то делал уже у себя такое на stm32f4 и у него получилось скиньте пример пожалуйста
Наверное Вы первый.
1. нужно включить тактирование Вашего порта . Настроить порт на ввод. Проверить например в основном цикле что все правильно настроено и Вы видите изменение битиков при нажатии кнопки.
2. SYSCFG->EXTICR настроить что бы прерывания считывались с Вашего порта. В 1 серии другие регистры но по документации именно так. Если этого не сделать, то будут считываться прерывания с порта A только. Возможно это Ваш случай. Посмотреть в документации нужно ли включать тактирование SYSCFG и EXTI. Если нужно - включить тактирование в первом пункте.
Здесь можно сконфигурировать порт A и попробовать дернуть его ногу. Может в библиотеке глюк.
3. Сконфигуриоровать EXTI как написано в RM 10.2.4
Hardware interrupt selection
EXTI->IMR, EXTI_RTSR and EXTI_FTSR, NVIC IRQ channel
Каждый из этих пунктов надо проверить хотя бы на то что нужные битики установились. Если конечно там нет регисторов только на запись. Если биты не установились - смотрите тактирование или код библиотеки.

Должен быть пример в библиотеке от st на EXTI. Он должен быть рабочий. Заработал ли он у Вас? Там нужно проверять, что именно та нога что там описана вызывает прерывание - моргание светодиодом. Потом нужно изменить ногу в RCC, EXTI->IMR, EXTI_RTSR and EXTI_FTSR, NVIC IRQ SYSCFG->EXTICR на ту что Вам нужна;

И еще напишите что у Вас за бесконечный цикл. В каком он месте расположен. Приведите Весь код Вашей программы.
Аватара пользователя
osievskiy
Открыл глаза
Сообщения: 79
Зарегистрирован: Вт июн 18, 2013 11:23:25

Re: STM32F4 + прерывания

Сообщение osievskiy »

Galizin писал(а): Должен быть пример в библиотеке от st на EXTI. Он должен быть рабочий. Заработал ли он у Вас?
Невероятно. Первый раз я взял из оригинала (примера) код и немного изменил незначительные вещи и он у меня не работал.
Скомпилировал прямо из папки примеров... оно взяло и заработало. Ничего не понимаю.
Может у меня файлы stm32f4xx как то не правильно настроены...


На счет дебагера. Думаю что у меня не эмулятор ... собственно зачем тогда дебагеру подключаться к камню?
Кстати в интернете очень мало написано про настройку keil + stm32f4 ... точнее написано но не полностью, приходилось самому додумываться почему оно не подключалось и как с этим справится. Если у кого будут проблемы с этим то пишите помогу разобраться.
Реклама
Эиком - электронные компоненты и радиодетали
ut1wpr
Вымогатель припоя
Сообщения: 581
Зарегистрирован: Ср янв 05, 2011 10:03:18

Re: STM32F4 + прерывания

Сообщение ut1wpr »

osievskiy писал(а): Невероятно. Первый раз я взял из оригинала (примера) код и немного изменил незначительные вещи и он у меня не работал.
Скомпилировал прямо из папки примеров... оно взяло и заработало. Ничего не понимаю.
Может у меня файлы stm32f4xx как то не правильно настроены...


На счет дебагера. Думаю что у меня не эмулятор ... собственно зачем тогда дебагеру подключаться к камню?
Кстати в интернете очень мало написано про настройку keil + stm32f4 ... точнее написано но не полностью, приходилось самому додумываться почему оно не подключалось и как с этим справится. Если у кого будут проблемы с этим то пишите помогу разобраться.
Внимание! Мы все присутствуем при рождении НОВОГО ГУРУ! Все бегом на мастер-класс, количество мест ограничено! :)
С уважением,
Виктор.
Реклама
Аватара пользователя
osievskiy
Открыл глаза
Сообщения: 79
Зарегистрирован: Вт июн 18, 2013 11:23:25

Re: STM32F4 + прерывания

Сообщение osievskiy »

:))) 8)
Реклама
Аватара пользователя
osievskiy
Открыл глаза
Сообщения: 79
Зарегистрирован: Вт июн 18, 2013 11:23:25

Re: STM32F4 + прерывания

Сообщение osievskiy »

Вроде бы разобрался! Прерывания работают и TFT тоже. На сколько я понял то прерывания можно принимать только с порта A и в этом заключается прикол! Так как у меня TFT был на порте A я пытался принять прерывания с порта H

Переставил TFT на порт D и вуаля... все работает! Хотя странно что когда я тестировал пример с сайта то оно не работало, хотя там TFT небыло.

Всем спасибо за помощь!!
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32F4 + прерывания

Сообщение dosikus »

osievskiy писал(а): точнее написано но не полностью, приходилось самому додумываться почему оно не подключалось и как с этим справится. Если у кого будут проблемы с этим то пишите помогу разобраться.
А какие скажите там могут быть грабли ?
Что Кейл что IAR , что 103,100,051,050,F4,F3, что на STLink что на JLink , что JTAG что SWD все единообразно - подключается и работает.
Вот на ГНУ c GDB , там да- без знаний придется танцевать ритуальные танцы . С знанием - все так же уныло однообразно - подключил и работает...
Galizin
Мучитель микросхем
Сообщения: 477
Зарегистрирован: Ср окт 15, 2008 09:33:03
Откуда: Воронеж

Re: STM32F4 + прерывания

Сообщение Galizin »

osievskiy писал(а):На сколько я понял то прерывания можно принимать только с порта A
Скорее всего Вы ошибаетесь. Маловероятно что в кристалле есть такой глюк. В 1 версии для этого нужно было предпринять дополнительные телодвижения что бы генерировать с других портов. Здесь тоже за это отвечает SYSCFG->EXTICR. Попробуйте присвоить явно SYSCFG->EXTICR без библиотеки;
Аватара пользователя
osievskiy
Открыл глаза
Сообщения: 79
Зарегистрирован: Вт июн 18, 2013 11:23:25

Re: STM32F4 + прерывания

Сообщение osievskiy »

dosikus писал(а):А какие скажите там могут быть грабли ?
Ну допустим везде где я не читал о настройке не было написано что при настройке Debug нужно ставить в поле Connect: unde Reset
и во вкладке Flash Download нужно отмечать галку Reset and Run

По крайне мере у меня без это не прошивалось и дебагер не подключался! Можно конечно и без этого обойтись, но придется постоянно дергать Reset в ручную.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32F4 + прерывания

Сообщение dosikus »

osievskiy писал(а): Ну допустим везде где я не читал о настройке не было написано что при настройке Debug нужно ставить в поле Connect: unde Reset
Ну допустим у меня RESET вообще не подключен , та опция стоит в Normal и стоит галка на Reset after connect .
Что для STLink что для JLink .
osievskiy писал(а): и во вкладке Flash Download нужно отмечать галку Reset and Run
Это чисто для прошивки к дебагу никакого отношения не имеет ....
Аватара пользователя
osievskiy
Открыл глаза
Сообщения: 79
Зарегистрирован: Вт июн 18, 2013 11:23:25

Re: STM32F4 + прерывания

Сообщение osievskiy »

Ну вот у меня не хотело работать пока я не поставил Connect: unde Reset
Аватара пользователя
balmer
Это не хвост, это антенна
Сообщения: 1433
Зарегистрирован: Вс дек 02, 2012 03:13:48
Откуда: Калининград

Re: STM32F4 + прерывания

Сообщение balmer »

dosikus писал(а): Вот на ГНУ c GDB , там да- без знаний придется танцевать ритуальные танцы . С знанием - все так же уныло однообразно - подключил и работает...
Хех, я как раз использую arm gcc + OpenOcd + gdb, да еще и под MacOs :)))
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32F4 + прерывания

Сообщение dosikus »

balmer писал(а):
Хех, я как раз использую arm gcc + OpenOcd + gdb, да еще и под MacOs :)))
Сочувствую . Не, с писаниной и компиляцией может все ок и удобно, а вот отладка никакая .
С Keil да еще под 103 , не сравнишь...
Аватара пользователя
balmer
Это не хвост, это антенна
Сообщения: 1433
Зарегистрирован: Вс дек 02, 2012 03:13:48
Откуда: Калининград

Re: STM32F4 + прерывания

Сообщение balmer »

dosikus писал(а): Сочувствую . Не, с писаниной и компиляцией может все ок и удобно, а вот отладка никакая .
Да, с отладкой проблеммы. Конечно gdb под eclipse работает, но запускать его надо с большим бубном. Впрочем давно уже привык на других проектах отлаживаться через логи.
bishop-strip
Открыл глаза
Сообщения: 71
Зарегистрирован: Чт окт 28, 2010 11:20:39

Re: STM32F4 + прерывания

Сообщение bishop-strip »

Прочитал я немного и решил выложить свой код по считывании прерывания с порта A0 (кнопка на плате STM32F4DICOVERY)
Спойлерvoid initPushButtonInterrupt()
{
/* Включаем порт А */
RCC_APB2PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_Init(GPIOA, &GPIO_InitStructure);

SYSCFG_EXTILineConfig(GPIOA, EXTI_PinSource0);
EXTI_InitTypeDef EXTI_InitStucture;
EXTI_InitStucture.EXTI_Line = EXTI_Line0;
EXTI_InitStucture.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStucture.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStucture.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStucture);

NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
EXTI_ClearITPendingBit(EXTI_Line0);
NVIC_EnableIRQ(EXTI0_IRQn);
}

//Функция обработки прерывания...
void EXTI0_IRQHandler(pETHERNET_DATA Eth)
{
//...ваш код...
EXTI_ClearITPendingBit(EXTI_Line0);
}
kryvoruk
Родился
Сообщения: 10
Зарегистрирован: Пт июл 17, 2015 17:58:34

Re: STM32F4 + прерывания

Сообщение kryvoruk »

всем доброго дня.
вопрос по прерыванию на ноге РА0 в плате 32F3... так понимаю что аналогично Ф4
насколько разобрался в документации (наверное неправильно) - для прерывания надо вывод А0 выставить как альтернативная ф-ия, те MODER0=10 и для него-же альтернативная ф-ия 15, т.е AFR0=f. Но так прерывания не генерируются.
Если MODER0=00 (линия на вход) или AFR0=0 (нулевая альтернативная ф-ия) - то все нормально. что я не понял, в чем подвох??
Аватара пользователя
amv2000
Опытный кот
Сообщения: 719
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

Re: STM32F4 + прерывания

Сообщение amv2000 »

kryvoruk писал(а):вопрос по прерыванию на ноге РА0 в плате 32F3
http://microtechnics.ru/stm32f3-ispolzo ... reryvanij/
kryvoruk
Родился
Сообщения: 10
Зарегистрирован: Пт июл 17, 2015 17:58:34

Re: STM32F4 + прерывания

Сообщение kryvoruk »

amv2000 писал(а):
kryvoruk писал(а):вопрос по прерыванию на ноге РА0 в плате 32F3
http://microtechnics.ru/stm32f3-ispolzo ... reryvanij/
спасибо. это я смотрел. но вопросы остаются. вроде сделал так как в документации написано. ошибки там вряд-ли.
просьба всем рассмотреть мой вопрос. если я не так понимаю, то дальше будет только хуже........
Аватара пользователя
amv2000
Опытный кот
Сообщения: 719
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

Re: STM32F4 + прерывания

Сообщение amv2000 »

kryvoruk писал(а):просьба всем рассмотреть мой вопрос.
Ну да, сейчас консилиум только соберется :)) Если что не понятно может почитать еще раз.
PS. Это не в обиду.
Ответить

Вернуться в «ARM»