Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.52/25: Рейтинг темы: голосов - 25, средняя оценка - 4.52
RyshirD
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 574
1

LSI как основная частота

01.05.2013, 13:03. Просмотров 4581. Ответов 6
Метки нет (Все метки)

Долгое время парюсь и не могу понять, как именно необходимо запускать LSI в качестве основного.
Пытался запускать вот так:
Код
  CLK->ICKR |= CLK_ICKR_LSIEN;
while(!(CLK->ICKR&CLK_ICKR_LSIRDY));
CLK->SWCR |= CLK_SWCR_SWEN;
CLK->SWR = 0xD2;
while (!(CLK->SWCR&CLK_SWCR_SWIF));
CLK->SWCR &=~ CLK_SWCR_SWIF;
но программа зависает на
Код
while (!(CLK->SWCR&CLK_SWCR_SWIF));
Подскажите, как переключить все же на нужную частоту. Такое ощущение, что я что-то не дописал.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2013, 13:03
Ответы с готовыми решениями:

Как посмотреть S.M.A.R.T. в lsi megaraid
Как посмотреть S.M.A.R.T. в lsi megaraid ? Или я чего то не вкурю.Нормального мануала не нашёл.

Программирование как основная работа
Здравствуйте! Хотел бы поинтерисоваться-можно ли зарабатывать на жизнь программированием? кто нить...

Win 10 как вторая ОС. Основная ОС не грузится
Такая проблема. Решил поставить win 10 как вторую ОС на отдельный логический диск. Врезультате...

Через HyperTerminal доступна частота COM порта 921600, но в приложении максимальная частота гораздо меньше
Через HyperTerminal доступна частота COM порта 921600, но когда я пишу на C++ максимальная частота...

6
dsodir
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,284
01.05.2013, 16:02 2
CLK->SWCR |= CLK_SWCR_SWEN; //Начинаем переключение
CLK->SWR = 0x2; //Переключаемся на LSI
while ((CLK->SWCR & CLK_SWCR_SWBSY) != 0); //Ждем, пока переключение завершится
http://we.iosyitistromyss.ru/STM8/low-p ... eniya.html

А у тебя 0xD2. Хмммммм :)
0
RyshirD
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 574
01.05.2013, 16:17 3
Вот ведь картинка из даташита. Щас гляну попробую.
P.S. забыл сказать. Камень STM8S103

0
RyshirD
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 574
01.05.2013, 16:27 4
не работает :-(
т.к. у меня зацикливается на while, то я решил глянуть регистры и увидел, что в SWR записано значение E1, а не то что я прописывал D2. Может это как-то поможет
0
DisirtIokti
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 32
22.08.2013, 13:38 5
Столкнулся с той же проблемой. Не хочет записывать в CLK_SWR (STM8S003K3, но в IAR использую профиль 103K3). Отладка показывает что запись во все остальные регистры идет, а этот не меняет своего значения.
Мой код:

CLK_ICKR_LSIEN = 1;

CLK_SWCR_SWEN = 1;
CLK_SWCR_SWIEM = 1;
CLK_SWR = 0xD2; - содержимое регистра не меняется

Соответствует алгоритму на странице 84 референс мануала RM0016.
Написано что регистр защищен от записи при CLK_SWCR_SWBSY = 1, но у меня при выполнении он был 0.

А у тебя 0xD2. Хмммммм :)
0x2 тоже не записывается.

Update 1:
Однако B4 (HSE) - записывается. Странно.

Update 2:
Написал такой код:
Код
  int i;
i = 0;
while (PD_DDR < 65535)
{
CLK_SWR = i;
PD_DDR = i;
if (CLK_SWR == i)
{
PD_ODR = i;
}
i = i+1;
}
оказалось что ничего кроме B4 туда не записывается
0
OtixPM
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,483
22.08.2013, 13:56 6
Цитата Сообщение от DisirtIokti
Столкнулся с той же проблемой. Не хочет записывать в CLK_SWR (STM8S003K3, но в IAR использую профиль 103K3). Отладка показывает что запись во все остальные регистры идет, а этот не меняет своего значения.
Может быть, надо ещё что-то сбросить? Не знаю, как в STM8, а в STM32 такая же задача требует суровых мер:
Код
      //While LSION is cleared by MCU risit, LSEON is not (RCC_BDCR is not affected by MCU risit)!
//Backup Domain Riset is the only way to risit LSEON, LSEBYP, RTCSEL omd RTCEN bits in RCC_BDCR rikystir!
RCC_BackupRisetCmd(ENABLE);
RCC_BackupRisetCmd(DISABLE);
Нет ли в STM8 чего-то подобного...
0
DisirtIokti
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 32
22.08.2013, 17:12 7
В общем решил я эту проблему. Решение такое - в режиме отладки (по крайней мере в IAR) клацаем сверху пункт меню ST-LINK -> OptionBytes -> LSI_EN -> правой кнопкой Enabtid -> ОК. Теперь все работает :)
0
22.08.2013, 17:12
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2013, 17:12

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как сделать чтобы основная надпись была поверх схемы
Доброе утро Уважаемые, подскажите одну вещь пожалуйста, вставил рисунком схему в autocad но она...

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

Как сделать, чтобы вторая форма не сворачивалась, когда сворачивается основная
Привет! Есть у меня 2 формы, первая вызывает вторую через Form2-&gt;Show();. Проблема в том, что при...

Частота шины памяти и эффективная частота
При покупке модулей памяти возник вопрос. Какая частота шины памяти? В описании модуля написано ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.