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

 
 
> Кнопка включения и выключения устройства на STM32F103
Salamander
сообщение Dec 21 2013, 20:12
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 466
Регистрация: 17-11-12
Пользователь №: 74 443



Коллеги, посоветуйте, как лучше организовать кнопку включения по типу тех, что в мобильниках - по длительному нажатию.

Мне видится так - устройство при подключении питания стартует и тут же уходит в один из режимов пониженного энергопотребления. Но при этом включает на выход один из пинов, на вход другой пин и ждет, когда на этом пине появится сигнал от первого пина (у меня матричная клавиатура). При этом можно конечно завести таймер, но по мне так лучше инкрементировать некую величину и по достижению ей порога пускать программу дальше - выходить из спящего режима. Как выключать? При нажатии на кнопку начинать отсчет, по достижении временного интервала - делать RESET.

По крайней мере, я так делал несколько лет назад на AVR -работало.

Хочу повторить то же на STM32F103, но сами понимаете, насколько в нем все наворочено, а я новичок в работе с этим камнем. На русском информации по спящим режимам, с примерами кода крайне мало. В связи с чем вопросы:

1. Для описанной задачи - какой режим лучше использовать? Нужно ли что-то отключать на старте, подключенное по умлочанию?
2. Как сделать программный RESET?

P.S. устройство уже собрано и поэтому варианты с использованием RTC (встречал в интернете намеки на его исползование в таких задачах) не подойдет. Вариант с использование пина WKUP тоже не подойдет, у меня на него от батареи через делитель подается напряжение, для анализа его при помощи АЦП.

Сообщение отредактировал Salamander - Dec 21 2013, 20:17
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
nx6310
сообщение Dec 22 2013, 10:55
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 28-06-10
Пользователь №: 58 174



При пробуждении из режима standby проц тупо сбрасывается, фактически программа стартует сначала. При пробуждении из stop режима проц запускается с того момента в котором он перешел в stop режим.
Альтернативные функции включаются командой

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO , ENABLE);это альтернативные функции пинов.
Я их всегда включаю чтоб потом непонятного гемора не было.
Тока что нарыл. Описание standby мода

After waking up from Standby mode, program execution restarts in the same way as after a
Reset (boot pins sampling, vector reset is fetched, etc.). The SBF status flag in the Power
control/status register (PWR_CSR)indicates that the MCU was in Standby mode.

Тебе получается надо при старте программы проверять флаг SBF в регистре PWR_CSR, который покажет тебе что проц был в режиме standby

Тебе надо после пробуждения провести инициализацию проца, затем проверить флаг SBF, затем подать единицу на пин, а с другого пина состояние прочитать, если нет уровня то засыпать на секунду.
Я так думаю в прерывание по будильнику из данного режима ты не попадешь. Будильник только разбудит проц и он начнет выполнять прогу с самого начала, там то и надо дергать пин и смотреть за входным пином
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Salamander   Кнопка включения и выключения устройства на STM32F103   Dec 21 2013, 20:12
- - IgorKossak   Посмотрите в сторону готовых решений. Можно найти ...   Dec 21 2013, 21:14
- - A. Fig Lee   Reset примерно так: Код#define AIRCR_VECTKEY_MASK...   Dec 21 2013, 21:23
- - Salamander   За RESET спасибо, работает. Насчет RTC - был непр...   Dec 21 2013, 22:23
- - nx6310   В библиотеках stm есть примеры работы с RTC   Dec 21 2013, 22:40
- - Salamander   Нашел я пример, как раз того, что мне надо. Код NV...   Dec 22 2013, 07:19
- - smk   Есть же специальный пин PA0. При включении питания...   Dec 22 2013, 08:20
- - Salamander   ЦитатаЕсть же специальный пин PA0. А если так? (с...   Dec 22 2013, 09:07
- - nx6310   Вам надо настроить прерывание по внешней линии EXT...   Dec 22 2013, 09:30
- - Salamander   ЦитатаВам надо настроить прерывание по внешней лин...   Dec 22 2013, 10:14
- - Salamander   Заработало! В сухом остатке получилось вот чт...   Dec 22 2013, 14:22
- - nx6310   Вроде все нормально. Если работает то все отлично)   Dec 22 2013, 14:49


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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 13:28
Рейтинг@Mail.ru


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