<?xml version="1.0" encoding="UTF-8"?>        <rss version="2.0"
             xmlns:atom="http://www.w3.org/2005/Atom"
             xmlns:dc="http://purl.org/dc/elements/1.1/"
             xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
             xmlns:admin="http://webns.net/mvcb/"
             xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
             xmlns:content="http://purl.org/rss/1.0/modules/content/">
        <channel>
            <title>
									Настройка предделителя и периода таймера в STM32. - STM32				            </title>
            <link>https://microtechnics.ru/community/stm32/nastrojka-preddelitelya-i-perioda-tajmera-v-stm32/</link>
            <description>Обсуждение вопросов, посвященных программированию микроконтроллеров, разработке электроники и не только.</description>
            <language>ru-RU</language>
            <lastBuildDate>Thu, 21 May 2026 05:19:38 +0000</lastBuildDate>
            <generator>wpForo</generator>
            <ttl>60</ttl>
							                    <item>
                        <title>НА: Настройка предделителя и периода таймера в STM32.</title>
                        <link>https://microtechnics.ru/community/stm32/nastrojka-preddelitelya-i-perioda-tajmera-v-stm32/#post-3521</link>
                        <pubDate>Mon, 31 Mar 2025 19:17:48 +0000</pubDate>
                        <description><![CDATA[@aveal вроде бы теперь стало все понятно, спасибо]]></description>
                        <content:encoded><![CDATA[@aveal вроде бы теперь стало все понятно, спасибо]]></content:encoded>
						                            <category domain="https://microtechnics.ru/community/stm32/">STM32</category>                        <dc:creator>Alexandr</dc:creator>
                        <guid isPermaLink="true">https://microtechnics.ru/community/stm32/nastrojka-preddelitelya-i-perioda-tajmera-v-stm32/#post-3521</guid>
                    </item>
				                    <item>
                        <title>НА: Настройка предделителя и периода таймера в STM32.</title>
                        <link>https://microtechnics.ru/community/stm32/nastrojka-preddelitelya-i-perioda-tajmera-v-stm32/#post-3520</link>
                        <pubDate>Mon, 31 Mar 2025 19:17:07 +0000</pubDate>
                        <description><![CDATA[@eduard спасибо, изучу]]></description>
                        <content:encoded><![CDATA[@eduard спасибо, изучу]]></content:encoded>
						                            <category domain="https://microtechnics.ru/community/stm32/">STM32</category>                        <dc:creator>Alexandr</dc:creator>
                        <guid isPermaLink="true">https://microtechnics.ru/community/stm32/nastrojka-preddelitelya-i-perioda-tajmera-v-stm32/#post-3520</guid>
                    </item>
				                    <item>
                        <title>НА: Настройка предделителя и периода таймера в STM32.</title>
                        <link>https://microtechnics.ru/community/stm32/nastrojka-preddelitelya-i-perioda-tajmera-v-stm32/#post-3516</link>
                        <pubDate>Mon, 31 Mar 2025 08:43:42 +0000</pubDate>
                        <description><![CDATA[Отправная точка - частота тактирования таймера, 8 МГц.
Эта частота делится на значение, которое получается прибавлением единицы к значению предделителя в регистрах контроллера, в данном слу...]]></description>
                        <content:encoded><![CDATA[
<p>Предделитель равен 7999, период равен 1000. Получаю прерывание по переполнению таймера каждые 1000 мс (то есть секунду).</p>
<p>Забыл написать про тактирование. Как я понял таймер у меня работает от 8 МГц.</p>
<p></p>
<p>Отправная точка - частота тактирования таймера, 8 МГц.</p>
<p>Эта частота делится на значение, которое получается прибавлением единицы к значению предделителя в регистрах контроллера, в данном случае частота делится на число (7999 + 1) = 8000. Итоговая частота, на которой работает таймер = 8 МГц / 8000 = 8000000 Гц / 8000 = 1000 Гц.</p>
<p>Исходя из полученной частоты, один отсчет таймера соответствует периоду, равному: 1 с / 1000 Гц = 1 мс. То есть за 1 мс таймер увеличивает значение своего счетного регистра на единицу.</p>
<p>Прерывание по переполнению срабатывает в тот момент, когда таймер "досчитает" до значения периода, значит прерывание сработает каждые: 1 мс * 1000 = 1000 мс = 1 с.</p>
<p>Теперь для случая с 2.5 мс: изменяем значение предделителя допустим на 399. Производим расчет в точности по тем же шагам:</p>
<ul>
<li>частота, на которой работает таймер: 8 МГц / (399+ 1) = 20000 Гц.</li>
<li>один отсчет таймера: 1 с / 20000 Гц = 0.05 мс.</li>
<li>для того, чтобы прерывания срабатывало каждые 2.5 мс, период *в настройках таймера) должен составлять 50 (0.05 мс * 50 = 2.5 мс).</li>
</ul>
<p> </p>]]></content:encoded>
						                            <category domain="https://microtechnics.ru/community/stm32/">STM32</category>                        <dc:creator>Aveal</dc:creator>
                        <guid isPermaLink="true">https://microtechnics.ru/community/stm32/nastrojka-preddelitelya-i-perioda-tajmera-v-stm32/#post-3516</guid>
                    </item>
				                    <item>
                        <title>НА: Настройка предделителя и периода таймера в STM32.</title>
                        <link>https://microtechnics.ru/community/stm32/nastrojka-preddelitelya-i-perioda-tajmera-v-stm32/#post-3511</link>
                        <pubDate>Sun, 30 Mar 2025 08:28:40 +0000</pubDate>
                        <description><![CDATA[Здесь посмотрите. Как раз рассказано, как вести расчёты.
И начните с тактирования. От этого многое зависит. И там есть где запутаться. Желательно сначала понять какая периферия как тактируе...]]></description>
                        <content:encoded><![CDATA[<p>https://microtechnics.ru/profilegrid_blogs/tajmery-s-tochki-zreniya-zhelezyachnika/#more-22041</p>
<p>Здесь посмотрите. Как раз рассказано, как вести расчёты.</p>
<p>И начните с тактирования. От этого многое зависит. И там есть где запутаться. Желательно сначала понять какая периферия как тактируется.</p>
<p> </p>
<p>https://microtechnics.ru/profilegrid_blogs/chast-15-stm32-i-s-bazovye-tajmery-tim6-i-tim7/#more-17872</p>
<p>Здесь немного о тактировании. В начале статьи. Что откуда берётся</p>]]></content:encoded>
						                            <category domain="https://microtechnics.ru/community/stm32/">STM32</category>                        <dc:creator>Эдуард</dc:creator>
                        <guid isPermaLink="true">https://microtechnics.ru/community/stm32/nastrojka-preddelitelya-i-perioda-tajmera-v-stm32/#post-3511</guid>
                    </item>
				                    <item>
                        <title>Настройка предделителя и периода таймера в STM32.</title>
                        <link>https://microtechnics.ru/community/stm32/nastrojka-preddelitelya-i-perioda-tajmera-v-stm32/#post-3510</link>
                        <pubDate>Sun, 30 Mar 2025 07:22:06 +0000</pubDate>
                        <description><![CDATA[Всех приветствую. Недавно начал знакомиться с микроконтроллерами STM32, сейчас тестирую разную периферию с помощью платы Blue Pill с микроконтроллером STM32F103CBT6. Дошел до таймеров и ника...]]></description>
                        <content:encoded><![CDATA[<p>Всех приветствую. Недавно начал знакомиться с микроконтроллерами STM32, сейчас тестирую разную периферию с помощью платы Blue Pill с микроконтроллером STM32F103CBT6. Дошел до таймеров и никак не могу разобраться со значениями предделителей и периодов...</p>
<p>Нашел в интернете пример, значения такие:</p>
<pre contenteditable="false">/* TIM2 init function */
void MX_TIM2_Init(void)
{

  /* USER CODE BEGIN TIM2_Init 0 */

  /* USER CODE END TIM2_Init 0 */

  TIM_ClockConfigTypeDef sClockSourceConfig = {0};
  TIM_MasterConfigTypeDef sMasterConfig = {0};

  /* USER CODE BEGIN TIM2_Init 1 */

  /* USER CODE END TIM2_Init 1 */
  htim2.Instance = TIM2;
  htim2.Init.Prescaler = 7999;
  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim2.Init.Period = 1000;
  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  if (HAL_TIM_Base_Init(&amp;htim2) != HAL_OK)
  {
    Error_Handler();
  }
  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  if (HAL_TIM_ConfigClockSource(&amp;htim2, &amp;sClockSourceConfig) != HAL_OK)
  {
    Error_Handler();
  }
  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  if (HAL_TIMEx_MasterConfigSynchronization(&amp;htim2, &amp;sMasterConfig) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN TIM2_Init 2 */

  /* USER CODE END TIM2_Init 2 */

}</pre>
<p>Предделитель равен 7999, период равен 1000. Получаю прерывание по переполнению таймера каждые 1000 мс (то есть секунду). Проверяю это значение через функцию HAL_GetTick(), которая возвращает значение в миллисекундах.</p>
<p>Первый вопрос - как из этих значений получается 1 с? И если несложно, то приведите пожалуйста пример, какие должны быть значения например для периода в 2.5 мс...</p>
<p>Забыл написать про тактирование. Как я понял таймер у меня работает от 8 МГц.</p>]]></content:encoded>
						                            <category domain="https://microtechnics.ru/community/stm32/">STM32</category>                        <dc:creator>Alexandr</dc:creator>
                        <guid isPermaLink="true">https://microtechnics.ru/community/stm32/nastrojka-preddelitelya-i-perioda-tajmera-v-stm32/#post-3510</guid>
                    </item>
							        </channel>
        </rss>
		