Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 24.12.2013, 21:07  
Jane9226
Прописка
 
Регистрация: 26.10.2011
Сообщений: 122
Сказал спасибо: 53
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
Jane9226 на пути к лучшему
По умолчанию STM32 Изменить тактовую частоту во время выполнения

Собственно вопрос озвучен в названии темы. Во время выполнения программы есть желание изменить прескаллеры AHB и APB2. Возможно ли это сделать не сбрасывая контроллер? Если да, подскажите пожалуйста последовательность действий. Спасибо.
Реклама:
Jane9226 вне форума  
Непрочитано 24.12.2013, 22:16  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: STM32 Изменить тактовую частоту во время выполнения

Конечно, возможно.
Вложения:
Тип файла: rar STM32generator.rar (345.5 Кб, 95 просмотров)
Easyrider83 вне форума  
Сказали "Спасибо" Easyrider83
Jane9226 (25.12.2013)
Непрочитано 24.12.2013, 23:37  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
Смех Re: STM32 Изменить тактовую частоту во время выполнения

Сообщение от Easyrider83 Посмотреть сообщение
Конечно
stm32f10x_rcc.c
http://www.st.com/web/catalog/tools/...S1743/PF257890
omercury вне форума  
Сказали "Спасибо" omercury
Jane9226 (25.12.2013)
Непрочитано 25.12.2013, 01:26  
Jane9226
Прописка
 
Регистрация: 26.10.2011
Сообщений: 122
Сказал спасибо: 53
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
Jane9226 на пути к лучшему
По умолчанию Re: STM32 Изменить тактовую частоту во время выполнения

Спасибо, только это немного не то.... Как выставить нужную частоту я уже поняла, поигравшись с файлом system_stm32f10x.c Прошлаcь пошагово
SystemInit() -› SetSysClock() -› SetSysClockToHSE() именно в SetSysClockToHSE() (в моей конфигурации) выставляются все делители и множитель PLL в регистрах CFGR и CFGR2, там же включаем PLL и выбираем PLL в качестве системной частоты и последнее вызывается SystemCoreClockUpdate.

Ну вот система инициализирована, начинает выполняться main.... И вот по прошедствии энного колличества времени мне вздумалось изменить прескаллер APB2
Системная частота уже выставлена, мне нужно изменить только APB2
какова последовательность?
Jane9226 вне форума  
Непрочитано 25.12.2013, 07:51  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: STM32 Изменить тактовую частоту во время выполнения

Сообщение от Jane9226 Посмотреть сообщение
Ну вот система инициализирована, начинает выполняться main.... И вот по прошедствии энного колличества времени мне вздумалось изменить прескаллер APB2
Системная частота уже выставлена, мне нужно изменить только APB2
какова последовательность?
Никакой последовательности
Тупо меняем биты в одном-единственном регистре, например, записью
RCC-›CFGR = 0x30009402;

Неужели так страшно открыть даташит??

niXto вне форума  
Непрочитано 26.12.2013, 00:27  
Jane9226
Прописка
 
Регистрация: 26.10.2011
Сообщений: 122
Сказал спасибо: 53
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
Jane9226 на пути к лучшему
По умолчанию Re: STM32 Изменить тактовую частоту во время выполнения

Сообщение от niXto Посмотреть сообщение
Никакой последовательности
Вы точно в этом уверены?
Провела тест: В бесконечном цикле проверяю состояние кнопки и в зависимости от этого состояния меняю прескаллер
Код:
	//Объявляем переменную для хранения состояния кнопки  
    uint8_t buttonState = 0; 
.
.
.
while(1)
	{
        //считываем  состояние кнопки   
            
        buttonState = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0);  
        if (buttonState == 1) 
        {   
            /* APB2 */			
	   RCC-›CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;
        }   
        else    
        {      
            /* APB2 делим на 16, итого получим 24 000 000 / 16 = 1 500 000*/			
	    RCC-›CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;
        }
	}
Программа исправно выполняет инструкцию, только вот состояние битов PPRE2 не меняется! Такое впечатление что они заблокированы во время выполнения. Поэтому я и прошу помощи, спрашивая последовательность действий. На скриншотах это видно. Еще раз для уточнения. Проверяется все в железе плата STM32VLDISCOVERY, IDE Keil uVision4. Когда я прохожу по шагам (после сброса) функцию SetSysClockToHSE(void) в файле system_stm32f10x.c эти биты исправно устанавливаются в соответствии с инструкциями. После, в главном цикле НЕТ.
Миниатюры:
Нажмите на изображение для увеличения
Название: Before_PPRE2.png
Просмотров: 149
Размер:	73.4 Кб
ID:	56742   Нажмите на изображение для увеличения
Название: After_PPRE2.png
Просмотров: 71
Размер:	89.0 Кб
ID:	56743  
Jane9226 вне форума  
Непрочитано 26.12.2013, 01:25  
nahimovv
Заблокирован
 
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
nahimovv на пути к лучшему
По умолчанию Re: STM32 Изменить тактовую частоту во время выполнения

Всё там переключается, не надо извращаться над кодом.
Код:
RCC-›CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV16;
__NOP();
__NOP();

RCC-›CFGR &= ~(uint32_t)RCC_CFGR_PPRE2_DIV16;
__NOP();
__NOP();
nahimovv вне форума  
Сказали "Спасибо" nahimovv
Jane9226 (26.12.2013)
Непрочитано 26.12.2013, 01:31  
Hives
Гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: STM32 Изменить тактовую частоту во время выполнения

nahimovv а нопы зачем? там вроде без паузы
Hives вне форума  
Непрочитано 26.12.2013, 01:51  
nahimovv
Заблокирован
 
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
nahimovv на пути к лучшему
По умолчанию Re: STM32 Изменить тактовую частоту во время выполнения

Для бряков и пошагать.
nahimovv вне форума  
Непрочитано 26.12.2013, 02:25  
Jane9226
Прописка
 
Регистрация: 26.10.2011
Сообщений: 122
Сказал спасибо: 53
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
Jane9226 на пути к лучшему
По умолчанию Re: STM32 Изменить тактовую частоту во время выполнения

Цитата:
Не уверен? Не спорь, будешь выглядить глупым!
Подпись понравилась. Поняла свою ошибку. Перед тем как установить, нужно сразу сбросить... 0х07 = 00000111 естественно 0х07 | 0x00 даст 0х07 Что собственно я и делала. Еще раз спасибо.
Jane9226 вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реальное время выполнения инструкций STM32F4xx silabs Микроконтроллеры, АЦП, память и т.д 7 27.06.2012 21:41


Часовой пояс GMT +4, время: 11:38.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot