<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[forum.rcl-radio.ru &mdash; TIMER Прерывания по переполнению]]></title>
		<link>http://forum.rcl-radio.ru/viewtopic.php?id=424</link>
		<atom:link href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=424&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «TIMER Прерывания по переполнению».]]></description>
		<lastBuildDate>Tue, 12 Oct 2021 06:59:04 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[TIMER Прерывания по переполнению]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=4776#p4776</link>
			<description><![CDATA[<div class="codebox"><pre><code>volatile bool LED = 0;


void setup() {
  pinMode(PA1, OUTPUT);
  
  timer_attach_interrupt(TIMER2, TIMER_UPDATE_INTERRUPT, led); // прерывание по переполнению
  RCC_BASE-&gt;APB1ENR|= (1&lt;&lt;0);  // TIM2EN &gt; включить тактирование tim_2 
  TIMER2_BASE-&gt;CR1=0;          // TIMx_CR1 &gt; стоп таймер
  TIMER2_BASE-&gt;PSC = 72-1;   // TIMx_PSC &gt; значение пред делителя 72 === F = 72 000 000 / 72 = 1 000 000 Hz
  TIMER2_BASE-&gt;ARR = 50-1;   // TIMx_ARR &gt; считать до установленного числа и обнулить === F = 1 000 000 / 50 = 20 000 Hz
  TIMER2_BASE-&gt;DIER |= (1&lt;&lt;0); // TIMx_DIER &gt; разрешить прерывание по переполнению
  TIMER2_BASE-&gt;CR1|=(1&lt;&lt;0);    // TIMx_CR1 &gt; старт 
}

void loop() {}

void led(){  //обработчик прерывания 
  digitalWrite(PA1, (LED = !LED)); //меняем состояние порта на противоположное
  TIMER2_BASE-&gt;SR &amp;=~(1&lt;&lt;0); // TIMx_SR &gt; сбрасываем флаг прерывания
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Tue, 12 Oct 2021 06:59:04 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=4776#p4776</guid>
		</item>
	</channel>
</rss>
