_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
менее тупо - на основе аппаратного или программного счетчика "системных тиков". а совсем правильно (имхо, не утверждаю, что для всех LCD приемлемо) - на основе считывания регистра состояния LCD, т.е. работа не по задержке, а по готовности дисплея.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
А что КА — железо? Миллисекундные задержки очень удобно делать на КА: заводим внутренний счетчик и сравниваем на каждом прогоне с SysTick, который системные миллисекунды считает. Вряд ли у вас один прогон "суперлупа" будет длиться больше 1мс, поэтому получаем точность не хуже 1мс. А вот микросекунды зачастую прямо на месте и отсчитывают — при помощи вспомогательного таймера или тупыми nop'ами в цикле (правда, в этом случае точность будет паршивой). Обычно такие паузы нужны лишь на инициализации, которая все равно в начале проходит и можно считать, что пользователю пофиг, что в течение пяти секунд устройство вообще ни на что не реагирует..
Но, как уже написали, лучший вариант — читать регистры и принимать решение на основе этого. Или вернуться к конечным автоматам: экранчикам не нужно точных пауз, достаточно (если нет регистра состояний) выдержать определенную. Вот и проходимся по массиву инициализации плавно: дошли до паузы, внутренний счетчик в нужное значение выставили, и ждем. Потом следующий кусок отправляем. И так далее. При этом нет блокирующих пауз, и железяка вовсю будет работать, пока инициализируется экран.
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Обычно это делается на любом свободном аппаратном таймере методом вычитывания и обработки значения его счетного регистра. Без использования прерываний. Подробнее про реализацию можно прочитать тут. Максимальный интервал времени для такого таймера определяется периодом перезагрузки его счетного регистра.
Заголовок сообщения: Re: stm32f4 cmsis delay как сделать задержку для lcd
Добавлено: Ср апр 14, 2021 22:41:39
Открыл глаза
Зарегистрирован: Вс мар 21, 2021 11:06:04 Сообщений: 41
Рейтинг сообщения:0
Dimon456 писал(а):
nCount=(RCC_Clocks.HCLK_Frequency/10000)*ms; for (; nCount!=0; nCount--);
Вы строите этот код исходя из предположения, что одна итерация цикла for будет исполняться строго за 1 период тактовой частоты ядра? А если это не так? А это, в общем случае не так, и зависит от настроек оптимизации - тогда что?
Во втором варианте не учитывается событие переполнения счетчика: пусть последнее предыдущее значение 0хFFFFFFFF, текущее прочитанное 0. Сколько прошло времени? А что покажет условие?
Что такое базовый таймер? Вы, вообще, какой МК имеете ввиду? У ARM много разных ядер, и куча производителей используют их в своих контроллерах/процессорах. И понятие базового таймера везде разное. В ядре есть системный таймер. Другие таймеры каждый производитель реализует как хочет в качестве периферийных устройств.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 30
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения