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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> STM32, интерфейсы и прерывания, Куча вопросов
drozel
сообщение Nov 17 2015, 07:32
Сообщение #16


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 2-02-11
Пользователь №: 62 650



Цитата(MikleV @ Nov 17 2015, 12:28) *
Вопрос такой: надо ли после каждого такого телодвижения заново инициализировать PIN по пути GPIO->EXTI->NVIC?

Код либы же открыт? Надо посмотреть код, что делают эти ваши функции.
По логике, функции типа NVIC_* не должны влиять на периферию пинов, ибо это даже не то что разные блоки, NVIC вообще относится к ядру.
Но что там делает конкретная либа видно из ее кода.
Go to the top of the page
 
+Quote Post
MikleV
сообщение Nov 17 2015, 08:05
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 15-05-15
Пользователь №: 86 697



Эти функции просто устанавливают биты в соответствующих регистрах. Т.к. в программировании именно для МК я скажем так начинающий то "железная составляющая" кода для меня не совсем прозрачна.
Например разрешение тактирования GPIO: RCC_AHB1PeriphClockCmd(GPIOXXX,ENABLE)
или EXTI/NVIC: RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE) означает что теперь эти части МК всегда будут работать? Т.е. если они один раз вызывались то повторно их вызывать не имеет смысла?
То же и по установке битов в регистры NVIC и EXTI. Есть ли моменты (кроме инициализации и прямого управления) способные их сбросить?
Go to the top of the page
 
+Quote Post
drozel
сообщение Nov 17 2015, 11:02
Сообщение #18


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 2-02-11
Пользователь №: 62 650



Ну тык а биты описаны в даташите. С этого и надо начать.
Для начала нужно открыть блок-схему МК, она обычно в даташите в начале. Там видно, какие блоки к чему подключены. У всех этих блоков есть свои регистры, через которые вы ими управляете (ну это на пальцах)
К примеру: RCC - блок клоков и ресета. RCC_AHB1PeriphClockCmd - включение клока для определенной периферии (их можно включать по отдельности для снижения энергопотребления, когда блок не нужен).

Если конкретно по вашим вопросам, то:
нет, регистры никто, кроме вас сбросить не может, если в даташите не указано обратное (например, флаги, которые вы наоборот должны читать, чтобы узнать о состоянии блоков).

Логика запуска МК:
1) Настройка клока
2) Включение RCC
3) настройка периферийного блока
4) настройка прерываний (NVIC + само прерывание)

Go to the top of the page
 
+Quote Post
MikleV
сообщение Nov 17 2015, 13:46
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 15-05-15
Пользователь №: 86 697



Спасибо. Мне собственно и нужно было понять принципы инициализации.
Тогда еще один вопрос про энергосберегающие режимы(LPM):
Меньшая частота тактирования GPIO по которому ожидается выход из LPMХ означает ли автоматически меньшее энергопотребление?
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Nov 17 2015, 15:15
Сообщение #20


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Какой конкретно режим? Если в его описании написано "периферия отключена", то она отключена, частота ноль.
Если включена, то какое-то влияние на потребление будет (хотя, конечно, куда больше пользы будет, если в том же sleep отключать внешний кварц и PLL).


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
ASDFG123
сообщение Feb 23 2017, 03:52
Сообщение #21


Частый гость
**

Группа: Участник
Сообщений: 165
Регистрация: 2-01-13
Пользователь №: 75 042



Как в отладчике Coocox Coide симитировать прерывание EXTI_11 запуск АЦП ? В железе работает, но хотелось бы и софтого запустить.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 27th August 2025 - 01:22
Рейтинг@Mail.ru


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