Перейти к содержанию

Stm32F0 Sysclk И Программные Задержки


Pag

Рекомендуемые сообщения

Всем доброго времени суток!

Начал осваивать STM32 и появились непонятки с программной задержкой.

Тактирование включено от HSI и sysclk=HSI т.е. 8МГц (файл инициализации в аттаче). Я предположил что в коде ниже надо в цикле писать j<8000 но не тут то было. Опытным путем выяснилось что корректные задержки получаются при j<1000 т.е. исходя от некой частоты на которой работает cortex system timer. (см картинку с конфигуратора частоты)

Собственно вопрос в том на какой частоте происходит работа цикла?

Код задержки в ms ниже.

void delay_ms(uint16_t time)
{
uint16_t i,j;
for(i=0;i<time;i++)
   for(j=0;j<1000;j++);
}

system_stm32f0xx.rar

post-33479-0-54784800-1447223818_thumb.jpg

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

В каждом круге цикла выполняется несколько действий процессора: увеличить j на 1, сравнить с 1000, перейти на начало цикла на новый круг и т.д. Каждый шаг происходит с частотой sysclk. Вот, видимо, в Вашем случае один проход цикла занимает 8 тактов. Поэтому и 1000, а не 8000.

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Особенности хранения литиевых аккумуляторов и батареек

Потеря емкости аккумулятора напрямую зависит от условий хранения и эксплуатации. При неправильном хранении даже самый лучший литиевый источник тока с превосходными характеристиками может не оправдать ожиданий. Технология, основанная на рекомендациях таких известных производителей литиевых источников тока, как компании FANSO и EVE Energy, поможет организовать правильный процесс хранения батареек и аккумуляторов. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Надо таймер использовать. Настраиваете, например, таймер на переполнение каждую милисекунду, а в обработчике прерывания уменьшаете ненулевую переменную типа volatile uint32_t time_ms на 1. После этого процедура задеркжи будет типа такого:

void delay_ms(uint32_t time)
{
time_ms = time;
while(time_ms);
}

Ошибка такой задержки может быть до -1мс, т.к. таймер тикает сам по себе и в момент вызова delay_ms() он уже может быть близко к переполнению, и таким образом от первой мс останется только часть. Для больших задержек это может и не важно.

Если добавить старт/стоп и установку таймера в процедуре, то задержку можно получить гораздо точнее. Например, вот так

void delay_ms(uint32_t time)
{
  TIMER_COUNTER = начальное значение таймера;
  TIMER_START;

  time_ms = time;
  while(time_ms);

  TIMER_STOP;
}

Изменено пользователем Yurkin2015
Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

ок, спасибо, общий смысл я уловил. Попробую написать.

Посмотрим как получится, а то первые опыты с таймером удались не сразу, уж больно мутная у STM32 система тактирования оказалась

Ссылка на комментарий
Поделиться на другие сайты

RCC_ClocksTypeDef RCC_Clocks;
RCC_GetClocksFreq(&RCC_Clocks);
SysTick_Config(RCC_Clocks.HCLK_Frequency / 1000);
void SysTick_Handler (void)
{
//сюда попадаем каждую 1 миллисекунду
time--;
}
void delay_ms(uint32_t t) // функция задержки
{
time=t;
while(time);
}

вообщем опробовал способ с использованием systick. все заработало отменно

Изменено пользователем Pag
Ссылка на комментарий
Поделиться на другие сайты

если внимательно посмотреть на процедуру инициализации systick, то станет понятно, что период его тиков при любой частоте тактового генератора составит ровно 1 мс. Можно переконфигурировать вручную. Тогда будет как угодно. Но делать это строго не рекомендую. Дело в том, что некоторые драйверы используют систик, и если привыкнуть использовать его не по назначению, гдето в будущем нарветесь на грабли. Особенно это будет заметно при использовании любой RTOS.

Вообще от души рекомендую познакомиться с FreeRTOS(которая по дефолту кстати добавляется из CubeMX и движений руками даже не требует), а не заниматься ерундой с глупыми задержками . Там можно спокойно не написав ни строчки дополнительного кода (кроме своей процедуры) засунуть хоть 10 потоков с разными задержками и все они будут выполняться совершенно независимо друг от друга. Там есть функция - OSDelay(ms), которую можно использовать где угодно. И еще куча всяких задержек по функционалу похожих на делэй, но умеющих например работать с четким периодом между событиями, или по передним границам событий. Повторюсь - FreeRTOS это на самом деле ооочень просто и экономит просто тьму времени на кодинг. У вас в руках сверхзвуковой истребитель, а вы из него воздушного змея слепить пытаетесь.

Изменено пользователем mail_robot

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Ссылка на комментарий
Поделиться на другие сайты

Спасибо! Операционка конечно это здорово и унас на работе ведется разработка устройств именно с FreeRTOS с неплохими результатми (это я как тестировщик могу сказать :yes:

Однако для моих радиолюбительских нужд наличие ОС считаю избыточным. Да и программированием я после интститута не занимался. В последние пару недель вот вспоминаю :) Пока после атмеги все конечно выглядит посложнее, но в целом более изящно чес на АВР.

Изменено пользователем Pag
Ссылка на комментарий
Поделиться на другие сайты

операционка это только по определению. В реале это просто готовый скелет программы с удобной структурой и некоторым набором уже изобретенных велосипедов

STM гораздо проще атмеги на самом деле

Изменено пользователем mail_robot

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • Можно взять ватную палочку намочить в ацетоне и протереть верхнюю часть микросхемы. В 99% лак смывается и надписи хорошо читаются.  
    • Собрал тут за праздники очередную приблуду, по принципу "я его слепила из того, что было" Брал когда-то давно пару "печаток" Лемана по распродаже на Али. Одну сразу спаял на 2134й и noname транзисторах Не понравилось - "грелка-пищалка", да и ОРА2134 к делу пригодилась. Вторая плата оставалась, так как ни в какой корпус не лезла. А тут у компьютерщиков добыл корпус от мини-компьютера. BDшки уже Филипсовские старые давно лежали, и две пары Фаирчайлдовских 550\560х, OPA27 с апрельской распродажи подоспели... НаЛУТовал недостающие платы, старому советскому ТП-30-2 профилактику сделал. Переднюю и заднюю панель долго не мог придумать из чего сделать, пока в мусорке у рекламщиков не увидел толстую пластиковую панель с двусторонним алюминиевым покрытием (красить ее, кстати, задолбался). Памятуя опыт сборки прошлого "Лахмана" добил схему выпрямителей 7815\7915 до даташитовой (на фото нет диодов, они smd, снизу припаяны). Резисторы в питании поставил полваттные, а 10-омники вообще 2W. Переменники добавил в цепь регулировки коэффициента усиления операционников. Вывел с платы светодиод на переднюю панель. Вход и выход сделал по схеме ATH-5000. Ну и уже привычный EMI-фильтр, с развязкой через резистор на корпус, плату дросселя с предохранителями по низкой стороне. Микросхему 1237 сделал съемной, а то при покупке новых проверить не в чем. Пустые 2 контакта у разъема наушников сделал на всякий случай - они завязаны на нулевой контакт, размыкаемый при вставке штекера наушников. Прозвонил, включил, послушал - на этот раз понравилось, Филипсовские транзы вместе с OPA27 звучат шикарно (с ОРА134 значительно хуже).  
    • Где-то на Ютубе был ролик как мужик с ом2.7 снимал 180вт синуса в статику .правда там был огромный радиатор и серверный кулер . Хотел бы спросить чем обусловлен ток входного дифференциациального каскада ? Почему в большинстве усилителей он выбран именно 2-3ма .почему не больше или меньше ?Заметил такую особенность(хотя может мне кажется ) если снизить ток до 100-200мка то звук становится более динамичным и с более четкой серединой .но и начинаются какие-то искажения похожие на ступеньку . Хотя осциллограф его не видит.
    • Ниже сопротивление нагрузки - больше выходной и потребляемый ток. Чем больший ток течет по обмоткам транса - тем больше их нагрев. На холостом ходу трансформатор греться вообще не должен, во всяком случае заметно греться не должен. Если трансформатор расположен близко к радиатору, то он может нагреваться теплом от радиатора. 
    • Помогите, пожалуйста. Два компонента не даются их опознать. На одном написано похоже на BWTJ (6 ног), на втором и вообще не поймёшь толком - типа PBEI - 5 ног. фото прилагаю.
    • Проблема не только в названиях, а в том что нужно отследить дорожки. Понять что куда соединено.
×
×
  • Создать...