С Новым годом! Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/22: Рейтинг темы: голосов - 22, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 01.09.2012
Сообщений: 234
1

не могу поменять pin EXTI прерывания

19.09.2012, 23:27. Показов 4488. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Взял код стандартного примера stm32f4 - всё прекрасно, ножка PA0 управляет прерыванием.
Пытаюсь код модифицировать, чтоб управлять прерыванием на другой ножке - например на PA3, и у меня это не получается.

В коде четыре независимых вызова инициализации, а сколько тут независимых отдельно конфирурируемых сущностей?
отдельно конфигурирую GPIO_Pin_3 как ножку, ей соответствует EXTI_PinSource3 значит?
А Line - остаётся 0 или 3? А EXTI0_IRQn - остаётся EXTI0_IRQn или EXTI3_IRQn?

Т.е. как же эти параметры взаимосвязаны, и как мне добиться управления прерываеним через пин PA3?

void EXTILine0_Config(void)
{

GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;

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

/* Confikure PA0 pin as input ftooting */
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_Init(GPIOA, &GPIO_InitStructure);

/* Connect EXTI Line0 to PA0 pin */
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0);

/* Confikure EXTI Line0 */
EXTI_InitStructure.EXTI_Line = EXTI_Line0;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Ymtirrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);

/* Enable omd set EXTI Line0 Ymtirrupt to the lowest priority */
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.09.2012, 23:27
Ответы с готовыми решениями:

[РЕШЕНО]Внешние прерывания EXTI STM32F030
Добрый день, форумчане. Необходимо отлавливать на входе (PA12) импульсы по восходящему фронту....

Внешние прерывания EXTI STM32F303VC - ARM, Cortex, STM32 микроконтроллер
Добрый день. Возникла проблема, пытаюсь заставить мигать светодиоды в 2 режимах меняющихся по...

Модернизация китайского 4 pin разветвителя: добавление поддержки PWM на 3 pin и 2 pin вентиляторах
Задача: переделка 3-х пинового вентилятора в 4-х пиновый с добавлением поддержки изменения оборотов...

Блок питания 8 pin или 4 pin и переходник на 8 pin?
Что лучше?или одинаково? Добавлено через 2 часа 30 минут CPU

6
0 / 0 / 0
Регистрация: 01.09.2012
Сообщений: 234
20.09.2012, 05:26 2
Итого - все четыре константы оказались связаны, сделал себе метод

void EXTILine3_Config() {
EXTILine_Config(GPIO_Pin_3, EXTI_PinSource3, EXTI_Line3, EXTI3_IRQn);
}

ну и обработчик прерывания я тоже забыл использовать правильный - EXTI3_IRQHomdler
0
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 1,110
20.09.2012, 19:57 3
зафуракало значит?
0
0 / 0 / 0
Регистрация: 31.03.2012
Сообщений: 66
25.09.2012, 12:42 4
дайте ответ) тоже интересно! на первый взгляд пин 3 нужно сделать входом
0
Fittromd
26.09.2012, 17:17 5
Если коротко - номер внешнего прерывания в точности соответствует номеру пина-источника на порту.
Обработчик прерывания един для всех портов. Т.е. если у вас внешнее прерывание от PG3 и от PE3, то в обработчике нужно выяснять, кто именно из них вызвал прерывание.
То же самое, например у обработчиков 10...15 номеров. У них один обработчик, поэтому для PB11 и PD14 придется выяснять, кто изменился.

Независимые обработчики имеют номера 0, 1, 2, 3 и 4.
Номера 5..9 и 10..15 имеют обработчик на группу источников.

Соответственно, если вам нужны прерывания от PB2 и PB4 - это будут разные независимые обработчики.

Процедура установки внешнего прерывания:

1. Сконфигурить пин на вход.
2. Подключить пин к модулю EXTI для обработки изменений его значения.
3. Сконфигурить выбранную линию EXTI. Настроить фронт, режим и так далее.
4. Настроить NVIC на генерацию прерывания от выбранного IRQn.
0 / 0 / 0
Регистрация: 10.05.2012
Сообщений: 24
12.02.2013, 12:03 6
Решил сделать прерывание на пин E7 (STM32F407VG). Но столкнулся со следующим:
При конфигурировании прерывания проблем нету:
Код
EXTI_InitStruct.EXTI_Line=EXTI_Line7;
А вот при конфигурировании вектора прерываний обнаружил что нету EXTI7_IRQn. Имеются только EXTI0_IRQn, EXTI1_IRQn, EXTI2_IRQn, EXTI3_IRQn и EXTI4_IRQn.
Чтож получается? Что на ножки старше 4, перывание вызвать нельзя?
0
0 / 0 / 0
Регистрация: 08.07.2005
Сообщений: 180
13.02.2013, 22:40 7
Цитата Сообщение от Trouyom
Решил сделать прерывание на пин E7 (STM32F407VG). Но столкнулся со следующим:
При конфигурировании прерывания проблем нету:
Код:
EXTI_InitStruct.EXTI_Line=EXTI_Line7;
А вот при конфигурировании вектора прерываний обнаружил что нету EXTI7_IRQn. Имеются только EXTI0_IRQn, EXTI1_IRQn, EXTI2_IRQn, EXTI3_IRQn и EXTI4_IRQn.
Чтож получается? Что на ножки старше 4, перывание вызвать нельзя?
Конечно можно, просто они группами идут, к примеру с 5того по 9ый канал и с 10го по 11ый.
0
13.02.2013, 22:40
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.02.2013, 22:40
Помогаю со студенческими работами здесь

Supermicro x9dbu работает на 8-pin + 8-pin без 4-pin
Добрый день, уважаемые. Пришла стойка с 2-мя серверами (вот счастье привалило...), до этого...

17 pin front panel не могу подключить
Привет всем... я разобрал комп, опять собрал тепер \ь не могу подключить power, reset, hdd led и...

Питания проца 8+4 pin, когда на БП только 8 pin. Можно ли?
Имею блок питания Aerocool VX 650W. Хочу купить мать ASUS ROG MAXIMUS XI FORMULA, у неё разъём для...

Какой артикул у разъема Apple ssd 6+12 pin и 7+17 pin
Добрый день! Кто может подсказать артикулы Apple разъемов для ssd дисков. Интересуют разъемы 6+12 и...

MSI Z77A-G45 подключение через 4-Pin + 4-Pin
Пару лет назад подключил MSI Z77A-G45 через 4-Pin + 4-Pin из-за того, что у меня нет 8-Pin...

Можно ли сунуть в rx 570 4gb только 6 pin, а не 8 pin?
Можно ли сунуть в rx 570 4gb только 6 pin, а не 8 pin? Будет все нормально?

Подключение питания 8 pin + 6 pin для GTX 760
Добрый день! Карта Asus GTX 760, доп питание 8 pin + 6 pin, имеется переходник 2 х 6 pin -> 8...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS, Swagger и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru