Добрый вечер. У меня keil и мк stm32f405rg. мне нужно в программе в расчётах иметь переменную, которая содержит значение частоты шины APB1, где мой таймер. Я не использую ни куб, ни HAL ни SPL. Просто обычный CMSIS. Знаю что в SPL есть функция, которая вычисляет все эти частоты. Но мне не надо все, а только одна. Поэтому есть ли какая-нибудь константа или переменная, которая содержит в себе это значение? или как бы это можно было вычислить не прибегая к помощи SPL?)
Ни DS, ни RM, я правильно понял? Если хочешь сам все вычислить, то нужно смотреть в регистрах RCC какой активен генератор, считать текущую частоту, потом смотреть какие на шинах делители, а для таймеров еще нужно учесть, что частота может умножаться на 2.
В любом тулчейне в стартапе есть функция, которая вызывается перед переходом в main(), предназначенная для инициализации железа. Чаще всего это SystemInit() или __low_level_init(). Там и задавайте все нужные делители.
Поэтому есть ли какая-нибудь константа или переменная, которая содержит в себе это значение? или как бы это можно было вычислить не прибегая к помощи SPL?)
Вы можете сами её сделать. Если по ходу программы частоты не меняете, то просто задефайнить константу. Если меняете, то можно в переменную писать установленное значение.
Ну или как Reflector предложил, но это геморрой в рунтайме, да и отталкиваться надо от частоты кварца, которая неизвестна.
Ну или как Reflector предложил, но это геморрой в рунтайме, да и отталкиваться надо от частоты кварца, которая неизвестна.
Частота шин нужна почти всегда на стадии инициализации, т.е. можно спокойно все вычислять прямо на ходу, в крайнем случае полученное значение можно закешировать. И где это ты видел проекты в которых неизвестна частота кварца?
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
И где это ты видел проекты в которых неизвестна частота кварца?
Я имел в виду, что программа сама частоту кварца определить не может, а полагается на то значение которое программист указал ей. Не, плюс/минус трамвайная остановка конечно можно измерить, но не более.
Я имел в виду, что программа сама частоту кварца определить не может, а полагается на то значение которое программист указал ей. Не, плюс/минус трамвайная остановка конечно можно измерить, но не более.
Ну ладно, раз "неизвестная" частота кварца такая проблема, то можно от нее избавиться... Допустим тактирование от PLL, PLL от кварца, кварц неизвестен, множитель 8, частота по ходу не меняется, какое значение частоты APB1 задефайнишь в константе? Ты же это предлагал?
Нет, не это. Я предлагал перестать заниматься рукокодоблудством и не вычислять в рантайме частоты которые вы сами же и задали. В подавляющем количестве случаев все частоты известны на этапе написания инициализации железа. И даже если они потом зачем-то меняются, то не с бухты барахты, а на фиксированные заранее просчитанные конфигурации. А иначе фиг что будет работать вообще.
Да в любом случае при переносе всё переделывать/перепроверять. Лучший помощник для этого - вменяемые комментарии. Сконфигурировали таймер - напишите на какую частоту и для чего используется. И желательно как можно больше инициализации в одном месте, чтобы не лазить по коду в поисках заветной частоты. Чтобы через год-два не гадать что же тут сделано и как подправить под новый камень. Я как-то так делаю
мне нужно в программе в расчётах иметь переменную, которая содержит значение частоты шины APB1, где мой таймер.
В нормально написанных программах частоты шин - это не переменные, а константы. Ну или - набор констант, если в процессе работы программы она эти частоты меняет. Соответственно никаких "функций для определения частоты" не нужно. А все частоты известны на этапе компиляции.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 24
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения