Использование WKUP для своих целей (STM32)

forfrends
Offline
Зарегистрирован: 24.02.2015
Всем привет!
Мне нужна ваша помощь. Я хочу сделать небольшое устройство - наручные часы. Микроконтроллер - stm32l152cbt6. Устройство планирую вводит в сон и пробуждать нажатием кнопки. Кнопку планировал подключать к пину PA0-WKUP1, для пробуждения МК. И стал передо мной вопрос: могу ли я в своем проекте использовать эту же кнопку для своих целей? То есть после пробуждения использовать эту кнопку как обычную функциональную кнопку? После чего МК будет засыпать, и пробуждать по нажатию кнопки... Если можете, подскажите как сконфигурировать этот пин и есть ли какие-то нюансы?
Я просто новичок в работе с STM. До этого изучал Ардуино, и переход на STM дается сложно. Да и само устройство делаю больше для экспериментов и изучения STM.
Проект делаю в STM32CubeIDE, но попробую и в среде Ардуино написать скетч.
Заранее спасибо!
nik182
Offline
Зарегистрирован: 04.05.2015

А что мешает? После просыпания нога РА0 становиться обычной, как и все остальные, ногой. Пользуйте кнопку сколько угодно.

rkit
Offline
Зарегистрирован: 23.11.2016

Для часов загонять проц с standby не имеет смысла. А из других режимов он просыпается по любому прерыванию.

mixail844
Offline
Зарегистрирован: 30.04.2012
страница 108 и далее. 
 
если в кратнце , как и сказал rkit, пин WKUP это пин который может "пробудить" МК из режима StandBy , а кроме него (них) все остальные пины в режиме StandBy в состоянии Hi-Z
forfrends
Offline
Зарегистрирован: 24.02.2015

Спасибо! Буду изучать и пробовать.
Я спрашивал потому что при создании проекта в CubeIDE нельзя настроить пин РА0 и как WKUP и как GPIO. Только что-то одно. Вот и возникли сомнения относительно использования.

nik182
Offline
Зарегистрирован: 04.05.2015

Это стандартное поведение настраивателя. Вы программируете начальное состояние, и что то мне подсказывает, что для ноги РА0 это совсем не вейкап. В дальнейшей работе можно переопределять режимы любых ног и систем в любой момент, но делать это должны Вы сам. Решение простое - генерите код для разных состояний инициализации ног. Каждый раз сохраняете пп инициализации и в своей программе вызываете эти инициализации в нужный момент. Только имена пп надо поменять на удобопонимаемые, что бы не запутаться. Для понимания процесса посмотрите как инициализируется датчик DHT22. У него одна нога сначала выдаёт импульс, а потом она же читает ответ. Пример как на лету меняется режим.