Страница 6 из 9
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 26 май 2013, 01:12
michael-yurov
UAVpilot писал(а):Попробуй эти функции заменить на:
Подключил
Заменил строчки на предложенные,
Исправил их на такие:
Код: Выделить всё
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0);
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource1);
И проект скомпилировался.
Прошивать не пробовал, т.к. нужно еще с номерами ножек кнопок и светодиодов разобраться.
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 26 май 2013, 01:25
michael-yurov
А еще вопрос...
Есть ли варианты обработки прерываний? Например, без учета приоритетов прерываний.
Мне в прерывании нужно просто увеличить или уменьшить переменную счетчика.
Вот как сделать так, чтобы это действие занимало минимум тактов процессора.
В любом случае через NVIC?
Т.е. даже в простейшем варианте вызывается функция прерывания с учетом приоритетов, я в этой функции выполняю нужное действие и сбрасываю флаг,.. так?
Знаю, что можно сделать аппаратный счетчик из таймера, но в этом подходе много подводных камней.
И еще... я запутался с привязкой прерываний к портам.
Можно ли сделать так, что прерывание будет возникать при изменении состояния ножки PA0,
но не будет возникать при изменении состояния ножек PB0, PC0 и т.п?
Например, если у меня таймер генерирует сигнал на ножки PD0, PD1, PD2, PD3,
а я хочу, чтобы возникало прерывание при внешнем изменении состояния ножки PA0, но при этом, чтобы на прерывание не влиял таймер выводящий сигнал на PD0?
Для этого придется в процедуре обработки прерывания проверять флаг порта, вызвавшего прерывание?
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 26 май 2013, 01:46
Serg
michael-yurov писал(а):Есть ли варианты обработки прерываний? Например, без учета приоритетов прерываний.
По умолчанию все прерывания имеют одинаковый приоритет. Вот тут
NVIC_SetPriority(EXTI1_IRQn, 2);
я меняю приоритет прерывания для второй кнопки.
michael-yurov писал(а):Т.е. даже в простейшем варианте вызывается функция прерывания с учетом приоритетов, я в этой функции выполняю нужное действие и сбрасываю флаг,.. так?
Не совсем. Функция обработчика вызовется, но вот когда - зависит от приоритета прерывания и от наличия других активных прерываний.
Да, после сброса флага можно будет "словить" другое такое прерывания.
michael-yurov писал(а):Знаю, что можно сделать аппаратный счетчик из таймера, но в этом подходе много подводных камней.
пока ничего не понял. Какой счётчик? Что считать?
michael-yurov писал(а):Можно ли сделать так, что прерывание будет возникать при изменении состояния ножки PA0,
но не будет возникать при изменении состояния ножек PB0, PC0 и т.п?
В процессоре есть специальный мультиплексор. Вот этими командами
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0);
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource1);
я как раз с его помощью и подключаю ногу PA0 к линии прерывания EXTI0 и PA1 к EXTI1.
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 26 май 2013, 01:55
michael-yurov
UAVpilot писал(а):По умолчанию все прерывания имеют одинаковый приоритет.
А если мне наплевать на приоритеты, но важно, чтобы обработка прерывания заняла минимальное время, можно ли чем то пожертвовать, ради экономии хотя бы одного такта?
UAVpilot писал(а):пока ничего не понял. Какой счётчик? Что считать?
Ой, это отдельная проблемная история, с которой я пока не хочу связываться.
UAVpilot писал(а):я как раз с его помощью и подключаю ногу PA0 к линии прерывания EXTI0 и PA1 к EXTI1.
Так все таки, после этого действия, прерывание будет возникать только при изменении состояния первой или нулевой ноги на порту "A"
и нулевые и первые ноги на других портах не вызовут это прерывание?
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 26 май 2013, 02:01
michael-yurov
Да, еще! Выяснил, почему у меня не работал прошиватель прямо из CoIDE,
оказалось, я установил CoFlash не в ту же папку, что CoIDE (C:\CooCox) , а в C:\Program Files (x86)\CoFlash\
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 26 май 2013, 02:12
michael-yurov
Прошил этой программой STM32F4DISCOVERY
Исправлял по мелочи. РАБОТАЕТ, мигает, прерывания срабатывают!
Буду дальше разбираться. Завтра.
СПАСИБО!
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 26 май 2013, 02:40
Serg
michael-yurov писал(а):А если мне наплевать на приоритеты, но важно, чтобы обработка прерывания заняла минимальное время, можно ли чем то пожертвовать, ради экономии хотя бы одного такта?
Произошло прерывание - вызвали твой обработчик. Чем тут можно пожертвовать.

Если наплевать на приоритеты, то обработка прерывания будет занимать минимальное время, но если не случится других прерываний. Т.е. ты либо гарантируешь отсутствие других прерываний, либо используешь приоритеты.
Так все таки, после этого действия, прерывание будет возникать только при изменении состояния первой или нулевой ноги на порту "A"
и нулевые и первые ноги на других портах не вызовут это прерывание?
Нет, подключается конкретная нога конкретного порта. Неподключенные к контроллеру прерываний ноги прерываний не вызывают.
Ещё нужно учитывать, что например к линии EXTI0 можно подключать только PA0, PB0, PC0, ... и нельзя подключить другие ноги. Т.е. нельзя например PA2 подключить к EXTI5.
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 26 май 2013, 09:29
michael-yurov
UAVpilot писал(а):Если наплевать на приоритеты, то обработка прерывания будет занимать минимальное время, но если не случится других прерываний. Т.е. ты либо гарантируешь отсутствие других прерываний, либо используешь приоритеты.
А как в CoIDE можно посмотреть, сколько тактов выполняется то или иное действие?
UAVpilot писал(а):Нет, подключается конкретная нога конкретного порта. Неподключенные к контроллеру прерываний ноги прерываний не вызывают.
Круто! Мне нравится STM32!
UAVpilot писал(а):Ещё нужно учитывать, что например к линии EXTI0 можно подключать только PA0, PB0, PC0, ... и нельзя подключить другие ноги. Т.е. нельзя например PA2 подключить к EXTI5.
Это я понял.
Также понял, что ноги начиная с 5 уже объединяются с соседними, и в процедуре обработки уже будет нужно разбираться, какая именно нога его вызвала. И понял, что на одной линии прерывания обычно висит несколько разных устройств, и нужно либо исключать одновременное использование, либо разбираться, кто именно вызвал прерывание.
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 26 май 2013, 09:49
Serg
michael-yurov писал(а):А как в CoIDE можно посмотреть, сколько тактов выполняется то или иное действие?
Скорее всего никак. Просто сдением документации - там можно раскопать сколько тактов занимает каждая команда.

Да и такты, а циклы синхронизации - это несколько иное.
Конкретно по прерываниям: первая инструкция обработчика выполняется спустя 12 циклов (сохранение регистров, доставание адреза обработчика и т.п.), возврат - аналогично.
michael-yurov писал(а):и нужно либо исключать одновременное использование, либо разбираться, кто именно вызвал прерывание.
Просто обработчик первым делом опрашивает состояние перефирийных блоков подключённых к одной линии прерывания и выясняет какои именно вызвал прерывание.
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 27 май 2013, 02:05
michael-yurov
UAVpilot, А чем отличается EXTI_ClearITPendingBit(EXTI_Line0); от EXTI_ClearFlag(EXTI_Line0);
Описание у практически одинаковое
* @brief Clears the EXTI's line pending bits.
* @param EXTI_Line: specifies the EXTI lines to clear.
* This parameter can be any combination of EXTI_Linex where x can be (0..22)
* @retval None
* @brief Clears the EXTI's line pending flags.
* @param EXTI_Line: specifies the EXTI lines flags to clear.
* This parameter can be any combination of EXTI_Linex where x can be (0..22)
* @retval None
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 27 май 2013, 07:16
Serg
Ничем. У них и внутренности одинаковые.
Просто некоторым нравится биты сбрасывать, а некоторым флаги очищать - почему-бы не уважить и тех и других?

Тем более, что по ресурсам это всего лишь несколько лишних байт на диске PC.
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 12 июн 2013, 14:47
michael-yurov
UAVpilot, А нет ли у тебя какой-нибудь простейшей платки для Cortex-M3 на 48 ножек?
Мне для STM32F100C8T6B или STM32F100C4T6B
Или ссылки на что-то подобное. (я встречал, но найти не могу снова)
Или просто, скажи, какие ножки как нужно развести, чтобы правильно подать питание, подключить кварц, и вывести линии на разъем для программирования.
Я ни разу не делал этого и боюсь, что что-то забуду.
В основном волнует - какие линии нужно вывести для программатора.
Могу картинку нарисовать, как я это представляю, чтобы можно было проверить и поправить меня.
Я так понимаю, что нужно смотреть вот на эти выделенные цветом ножки:
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 12 июн 2013, 23:28
Serg
Ну да, этого в принципе достаточно. Вообще вся информация есть в даташите:
http://www.st.com/web/catalog/mmc/FM141 ... 5/PF216839
на стр. 12/88 есть общая блоксхема, на ней обозначены всевозможные выводы разных блоков МК, сюта можно смотреть, чтоб ничего не забыть.
на стр. 24/88 начинается таблица соответствия сигналов МК номерам ног.
на стр. 31/88 и чуть ниже описано как надо подавать питание (блокировочных конденсаторов много не бывает

)
со страницы 44/88 начинается описание как подключать кварцы и т.п.
Ну и там ниже про ресет и всё остальное.
С JTAG/SWD тоже просто - находишь распиновку своего программатора или нагугливаешь общепринятую, там есть названия сигналов, которые ты найдёшь в таблице на 24/88.
Рисуй схему, глянем. Только давай в pdf или картинкой.
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 12 июн 2013, 23:44
michael-yurov
UAVpilot писал(а):Ну и там ниже про ресет и всё остальное.
А зачем он нужен?
Т.е. он нужен для программирования?, или для чего-то еще?
Что мне с ним делать то на плате в плане подключения?
UAVpilot писал(а):С JTAG/SWD тоже просто
А нужен ли он мне? Отлаживать я пока не умею, да и не представляю, как это можно сделать для программ, работающих в реальном времени. Мне бы просто запрограммировать.
Хотелось бы сначала сделать более/менее рабочий вариант платы, а потом уже разбираться, зачем это мне нужно.
Там вот 2 разных ресета,
куча разных пинов питания,
пин для батарейного питания...
Что с этим со всем делать?
Т.е. куда плюс, куда ноль, и куда блокировочные конденсаторы, я, вроде, понимаю...
Как кварц подключить - тоже ясно,
а что вот с пином батарейного питания делать?
Что с ресетами?
С разъемом SWD, вроде бы, понял, что куда.
Я понимаю, что все это написано, но мне пока тяжеловато все это переварить.
А информации то мне в итоге нужно не так уж много.
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 13 июн 2013, 00:04
michael-yurov
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 13 июн 2013, 10:51
Serg
michael-yurov писал(а):А зачем он нужен?
Ну если не нужен, то подтянуть к 1, чтоб всякие помехи не ресетили МК.
michael-yurov писал(а):А нужен ли он мне? Отлаживать я пока не умею, да и не представляю, как это можно сделать для программ, работающих в реальном времени. Мне бы просто запрограммировать.
Ну так через него программируют.
michael-yurov писал(а):Там вот 2 разных ресета,
куча разных пинов питания,
пин для батарейного питания...
Что с этим со всем делать?
Для ядра и для АЦП может использоваться разное питание.
Батарейка нужна если надо, чтоб аппаратные часы тикали и без питания.
michael-yurov писал(а):Я понимаю, что все это написано, но мне пока тяжеловато все это переварить.
А информации то мне в итоге нужно не так уж много.
Привыкай читать даташиты, хотя-бы по диагонали.

Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 13 июн 2013, 22:51
michael-yurov
UAVpilot писал(а):Ну если не нужен, то подтянуть к 1, чтоб всякие помехи не ресетили МК.
Ок, ясно, подтяну к «1».
Оба сброса подтянуть к единице? И NRST и BOOT0?
UAVpilot писал(а):Батарейка нужна если надо, чтоб аппаратные часы тикали и без питания.
С этим выводом нужно что-то делать? К питанию подключать, или к нолю?
UAVpilot писал(а):Привыкай читать даташиты, хотя-бы по диагонали.
Я уже давно привык, но здесь даташиты ужасные - все в разных местах, И невозможно понять, что относится к твоему микроконтроллеру, а что к другим контроллерам этого семейства. Жуть просто. Того что нужно нет, а того, что не нужно - 95%.
Решил вырезать платку из этой статьи:
http://habrahabr.ru/post/125994/
Платка оказалась ужасная, корявая и косячная.
Я ее поправил до приемлемого состояния. Может быть кому-то пригодится (в архиве есть вектор в DXF и файл Corel):
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 13 июн 2013, 23:16
Serg
michael-yurov писал(а):Оба сброса подтянуть к единице? И NRST и BOOT0?
Да.
michael-yurov писал(а):С этим выводом нужно что-то делать? К питанию подключать, или к нолю?
Если эти часы не используешь, то никуда не подключай.
michael-yurov писал(а):Я уже давно привык, но здесь даташиты ужасные - все в разных местах, И невозможно понять, что относится к твоему микроконтроллеру, а что к другим контроллерам этого семейства. Жуть просто. Того что нужно нет, а того, что не нужно - 95%.
Да ладно! Одни из самых вменяемых даташитов. Попробуй по CPLD/FPGA почитать, вот где ребус-то - jtag в одном наборе даташитов, питалово в другом, тактирование в третьем, и т.д. и в каждом наборе надо ещё "фильтровать базар" по линейкам чипов, а в пределах линейки ещё и по корпусам.

Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 14 июн 2013, 11:08
aftaev
Ноги у STM32 слаботочные или как, SMD светодиоды на них можно напрямую повесить?
Сколько можно светодиодов повесить на каждую ногу STM32?
100 светодиодов потянет, по одному светодиоду на одной ноге STM32 ?
Re: STM32 Помогите изучить 32-bit Cortex STMicroelectronics
Добавлено: 14 июн 2013, 12:43
Impartial
aftaev писал(а):100 светодиодов потянет, по одному светодиоду на одной ноге STM32 ?
Потянет, если ток через каждый будет 0,25ма.