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

 
 
 
Reply to this topicStart new topic
> STM32F4Discovery, Регистры RCC_CFGR и RCC_CR
Vladislav_Minsk
сообщение Nov 28 2012, 06:49
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 7-08-12
Пользователь №: 73 054



Добрый день. Снова возникли вопросы по указанной плате.
Судь в следующем. В документации на контроллер про регистр RCC_CR указанно состояние при сбросе 0x0000ХХ83. Что означает включение HSI и отключение HSE, PLL main и PLL I2S.
Однако, в отладчике в регистрах при загрузке стоят совсем другие значения. Из которых видно, что все элелементы, кроме PLL I2S включены. И выключить их удалось, только после загрузки в регистр RCC_CFGR значения с выбором источника тактирования. До этого побитно отключить неиспользуемые элементы не удалось. Значения в регистре RCC_CR не менялись.
Вдобавок, в описании регистра RCC_CFGR присутствует такая строчка "1 or 2 wait states inserted only if the access occurs during a clock source switch"
Перевести её по словам не сложно, но общий смысл по отношению к контроллеру понять не смог... Значения регистра при инициализации указанны 0х00000000... Однако в отладчике снова другие значения...
Опытным путём установил, что обратиться к данному регистру изменяя биты отдельно, не получается...
Вот эта надпись работает:
RCC->CFGR = 0x00000001; // set HSE system clock
А вот эта нет:
RCC->CFGR |= (1<<0); // set HSE system clock
Может быть кто-то разбирался с этим регистром...? О каких задержках идёт речь в нём, когда их нужно вставлять и при каких переключениях...?
И только после установки RCC->CFGR = 0x00000001; // set HSE system clock можно было отключить HSI и PLL main сбрасывая соответствующие биты регистра RCC_CR...
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 28 2012, 07:41
Сообщение #2


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



С STM32F4 не работал. Но в StdLib должна быть функция SystemInit(), которая вызывается по сбросу из startup.s. В этой функции устанавливаются частоты. Изучите ее.
Go to the top of the page
 
+Quote Post
sla000
сообщение Nov 28 2012, 10:08
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 25-06-07
Из: Томск
Пользователь №: 28 670



Цитата(Vladislav_Minsk @ Nov 28 2012, 13:49) *
Вот эта надпись работает:
RCC->CFGR = 0x00000001; // set HSE system clock
А вот эта нет:
RCC->CFGR |= (1<<0); // set HSE system clock

Эти записи не равнозначны. Первая сбрасывает все биты а младший бит устанавливает, вторая только устанавливает младший бит.
Go to the top of the page
 
+Quote Post

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

 


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


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