<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[forum.rcl-radio.ru &mdash; TIMER Прерывания по переполнению]]></title>
	<link rel="self" href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=424&amp;type=atom" />
	<updated>2021-10-12T06:59:04Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.rcl-radio.ru/viewtopic.php?id=424</id>
		<entry>
			<title type="html"><![CDATA[TIMER Прерывания по переполнению]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=4776#p4776" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2021-10-12T06:59:04Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=4776#p4776</id>
		</entry>
</feed>
