proton8489 Опубликовано 22 мая, 2017 Поделиться Опубликовано 22 мая, 2017 Дорогие гуру, прошу помощи в освоении SystemCoreClock. Как я понимаю это некая функци в STM32, которая возвращает значение установившейся частоты микроконроллера. Но при прямом использовании IAR ругается на то, что эта функция не объявлена. Конечно можно использовать SPL, но мне крайне необходима максимальная скорость и микрозадержки, поэтому хочется получать значение частоты без SPL и HAL. Спасибо за любую наводку. 1 Робот Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex Опубликовано 22 мая, 2017 Поделиться Опубликовано 22 мая, 2017 Интересно, а как МК может узнать на какой частоте он работает ? Как Вы себе это представляете ? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
proton8489 Опубликовано 22 мая, 2017 Автор Поделиться Опубликовано 22 мая, 2017 Возможно и никак, но согласно документации это значение обновляется с помощью функции SystemCoreClockUpdate при изменении частоты тактирования МК. 0 Робот Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
Alex Опубликовано 22 мая, 2017 Поделиться Опубликовано 22 мая, 2017 Скорее всего, где-нибудь в каком то модуле имеется обычная статическая переменная, которая с помощью этих функций устанавливается и считывается. Сам по себе МК не может узнать частоту тактирования. Чисто теоретически, можно, но для этого нужно иметь ещё одну некую опорную частоту. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
proton8489 Опубликовано 22 мая, 2017 Автор Поделиться Опубликовано 22 мая, 2017 Хорошо, допустим. Тогда вопрос такой: я устанавливаю некую частоту МК через PLL, как мне убедиться в том, что она к примеру 72МГц, а не 24, совсем никак? 1 Робот Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex Опубликовано 22 мая, 2017 Поделиться Опубликовано 22 мая, 2017 2 минуты назад, proton8489 сказал: совсем никак? 8 минут назад, Aleх сказал: Чисто теоретически, можно, но для этого нужно иметь ещё одну некую опорную частоту. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Стальной Опубликовано 22 мая, 2017 Поделиться Опубликовано 22 мая, 2017 Ну на самом деле можно считать биты конфигурации и определить состояние делителей / ФАПЧ. Кроме того, в stm32 часто есть дополнительная частота. Но да, в HAL значение такта определено дефайном при конфигурации и функция вернет дефайн. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Skyluck Опубликовано 4 мая, 2018 Поделиться Опубликовано 4 мая, 2018 Микроконтролер по началу стартует с максимальной частоты, тоесть если в конфигах разкоментировать частоту которая вам нужна (попроще). Можно считать биты конфигураций, чисто считать в переменую а там уже сравнить с теми что вам нужно. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Геннадий Опубликовано 4 мая, 2018 Поделиться Опубликовано 4 мая, 2018 Вообще-то МК стартует с внутреннего генератора 8МГц и только после конфигурации переходит на выбранный режим тактирования. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Skyluck Опубликовано 4 мая, 2018 Поделиться Опубликовано 4 мая, 2018 (изменено) Возможно но 11 минуту назад, Геннадий сказал: Вообще-то МК стартует с внутреннего генератора 8МГц и только после конфигурации переходит на выбранный режим тактирования. Возможно но не совсем, сколько я встречал маплов миини и они стартовали на максимальной частоте, тактировались от внешнего кварца и я проект создавал сам, бутлоадер почистил, работал в кейле. Все файлы брал на оф сайте. Изменено 4 мая, 2018 пользователем Skyluck 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterElectric Опубликовано 4 мая, 2018 Поделиться Опубликовано 4 мая, 2018 @Skyluck В стартап загляни, она железно стартует от RC генератора, а потом уже как программа скажет. Многие из стартапа выкидывают инициализацию системы тактирования и пишут свою более быструю. @proton8489 неужели ты не знаешь на какой частоте после инициализации будет работать твой МК? придумай дефайн. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
dosikus Опубликовано 7 мая, 2018 Поделиться Опубликовано 7 мая, 2018 В 22.05.2017 в 22:10, Alex сказал: Сам по себе МК не может узнать частоту тактирования. С чего это? Кварц известен, флаги готовности осциляторов, PLL, и множители/делители доступны для чтения. И ? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
semic Опубликовано 7 мая, 2018 Поделиться Опубликовано 7 мая, 2018 Народ теме год. ТСу уже не надо! 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterElectric Опубликовано 7 мая, 2018 Поделиться Опубликовано 7 мая, 2018 может другим надо 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
proton8489 Опубликовано 7 мая, 2018 Автор Поделиться Опубликовано 7 мая, 2018 2 часа назад, semic сказал: Народ теме год. ТСу уже не надо! И снова здравствуйте. Я за это время подрос в stm32 и даже узнал, что существует специальное прерывание NMI_Handler, которое вызывается, если HSE отваливается. PLL давно в строю, но заметил одну особенность, а скорее баг. MCO должен выдавать частоту проца/2. Я делаю 8*9/1, по идее на MCO должно быть 36 МГц, но там 18, святой осцил не даст соврать. Подскажите, что не так? frec.c 0 Робот Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex Опубликовано 8 мая, 2018 Поделиться Опубликовано 8 мая, 2018 16 часов назад, dosikus сказал: С чего это? Кварц известен, флаги готовности осциляторов, PLL, и множители/делители доступны для чтения. И ? Ну вот к чему это, Лёх ? Тему с вопросами ТС прочитай нормально, а не поперёк. -1 Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterElectric Опубликовано 8 мая, 2018 Поделиться Опубликовано 8 мая, 2018 @proton8489 что-то не так в коде, что ж еще не так. Да только найдуться ли люди которые будут его отлаживать вместо тебя неизвестно. с MCO вроде проблем нет в железе. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
dosikus Опубликовано 10 мая, 2018 Поделиться Опубликовано 10 мая, 2018 proton8489, если проект в Keil или IAR - выкладывай минимальный . В наличии 2 дискаверины VL . Одна с 100RB другая с 103RE. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
snn_krs Опубликовано 10 мая, 2018 Поделиться Опубликовано 10 мая, 2018 On 5/7/2018 at 11:06 PM, proton8489 said: PLL давно в строю, но заметил одну особенность, а скорее баг. MCO должен выдавать частоту проца/2. Я делаю 8*9/1, по идее на MCO должно быть 36 МГц, но там 18 Код не полный, поэтому трудно сказать точно, но в коде есть такая строка RCC->CFGR |= PLL_HSE_REG | // PLL source = PREDIV1 PLL_HSE_DIV2_REG | // HSE / 2 reg_spd; // Умножать частоту на PLLMUL На вход PLL поступает HSE / 2 = 4 MHz. Получается PLL_CLK = 8*9/2 = 36 MHz и МСО = PLL_CLK / 2 = 18 MHz. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
proton8489 Опубликовано 11 мая, 2018 Автор Поделиться Опубликовано 11 мая, 2018 22 часа назад, snn_krs сказал: Код не полный, поэтому трудно сказать точно, но в коде есть такая строка RCC->CFGR |= PLL_HSE_REG | // PLL source = PREDIV1 PLL_HSE_DIV2_REG | // HSE / 2 reg_spd; // Умножать частоту на PLLMUL На вход PLL поступает HSE / 2 = 4 MHz. Этобомба! ))) Спасибо, для эксперимента вначале сам себе этот камень заложил, а по невнимательности каждый раз спотыкаюсь. 0 Робот Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.