<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Таймер SysTick, реализация задержек в программе</title>
		<description>Обсуждение Таймер SysTick, реализация задержек в программе</description>
		<link>http://www.microsin.ru/programming/arm/stm32-systick.html</link>
		<lastBuildDate>Sat, 11 Jul 2026 11:20:36 +0300</lastBuildDate>
		<generator>JComments</generator>
		<atom:link href="http://www.microsin.ru/component/option,com_jcomments/format,raw/limit,10/object_group,com_content/object_id,1728/task,rss/" rel="self" type="application/rss+xml" />
		<item>
			<title>Денис написал:</title>
			<link>http://www.microsin.ru/programming/arm/stm32-systick.html#comment-3500</link>
			<description><![CDATA[Спасибо за код, вот как сделал, все работает: while (1) { if (delaystamp - millis >= delay) { delaystamp += delay; HAL_GPIO_Toggle Pin(GPIOC , LED_Pin); } }]]></description>
			<dc:creator>Денис</dc:creator>
			<pubDate>Sat, 24 Sep 2016 18:29:25 +0300</pubDate>
			<guid>http://www.microsin.ru/programming/arm/stm32-systick.html#comment-3500</guid>
		</item>
		<item>
			<title>Ilya написал:</title>
			<link>http://www.microsin.ru/programming/arm/stm32-systick.html#comment-2961</link>
			<description><![CDATA[При использовании счетчиков с переполнением используйте такой код: uint32_t start_stamp = timestamp; while(1) { if (timestamp - start_stamp >= 500) //полупериод мигания 0.5 сек. { start_stamp += 500; .... } }]]></description>
			<dc:creator>Ilya</dc:creator>
			<pubDate>Wed, 23 Sep 2015 12:59:12 +0300</pubDate>
			<guid>http://www.microsin.ru/programming/arm/stm32-systick.html#comment-2961</guid>
		</item>
		<item>
			<title>Андрей Г. написал:</title>
			<link>http://www.microsin.ru/programming/arm/stm32-systick.html#comment-2437</link>
			<description><![CDATA[Уважаемый microsin, правильно ли я понимаю, что настанет момент времени, когда delaystamp увеличится на 500 (по Вашему примеру), переполнится и раньше времени станет меньше чем timestamp? Значит мы получим за полный цикл счета таймера Systick один искаженный период. Или я чего-то не учел? microsin: Вы все правильно понимаете. Глобальный, постоянно считающий счетчик timestamp конечно когда-нибудь переполнится, и перевалит через границу в 0xFFFFFFFF, и начнет считать с нуля. Но еще раньше него произойдет прибавление к delaystamp константы, которая сразу же приведет к перескакиванию delaystamp через границу 0xFFFFFFFF. В этом случае просто условие сработает раньше, и задержка получится меньше, чем обычно. Страшного ничего не случится, если Вы используете эту задержку для опроса клавиатуры, для мигания, сбора статистики (обычно так эта задержка и используется). Если же Вам нужна стабильная, постоянно точная задержка (например, для ШИМ), то её следует задавать по-другому, с помощью аппаратных таймеров, и алгоритм отсчета должен быть другим, учитывающим переполнение счетчиков.]]></description>
			<dc:creator>Андрей Г.</dc:creator>
			<pubDate>Tue, 14 Oct 2014 22:53:11 +0300</pubDate>
			<guid>http://www.microsin.ru/programming/arm/stm32-systick.html#comment-2437</guid>
		</item>
	</channel>
</rss>
