<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=46&amp;t=3155&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-05-21T09:40:07+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=46&amp;t=3155&amp;mode</id>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-05-21T09:40:07+01:00</updated>
<published>2013-05-21T09:40:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3155&amp;p=37409#p37409</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3155&amp;p=37409#p37409"/>
<title type="html"><![CDATA[Re: [ARM] Generowanie sygnłu PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3155&amp;p=37409#p37409"><![CDATA[
no jak widzisz są <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />  ... zarejestruj się i stanie się jasność <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><!-- m --><a class="postlink" href="http://www.st.com/web/en/catalog/tools/PF257904" >http://www.st.com/web/en/catalog/tools/PF257904</a><!-- m -->  cześć tez znajdziesz tu<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 21 maja 2013, o 09:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kiclaw]]></name></author>
<updated>2013-05-21T09:02:16+01:00</updated>
<published>2013-05-21T09:02:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3155&amp;p=37408#p37408</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3155&amp;p=37408#p37408"/>
<title type="html"><![CDATA[Re: [ARM] Generowanie sygnłu PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3155&amp;p=37408#p37408"><![CDATA[
Mógłbym Cie prosić o dokładniejsze info <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> Bo na <a href="http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419#"  class="postlink">stronie</a> discovery jest napisane: <em>A large number of free ready-to-run application firmware examples are available on <!-- w --><a class="postlink" href="http://www.st.com/stm32f4-discovery" >www.st.com/stm32f4-discovery</a><!-- w --> to support quick evaluation and development.</em> Więc normalnie cud miód i orzeszki... tylko gdzie te przykłady? <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=600">kiclaw</a> — 21 maja 2013, o 09:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-05-20T21:24:17+01:00</updated>
<published>2013-05-20T21:24:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3155&amp;p=37393#p37393</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3155&amp;p=37393#p37393"/>
<title type="html"><![CDATA[Re: [ARM] Generowanie sygnłu PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3155&amp;p=37393#p37393"><![CDATA[
ze strony STM <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 20 maja 2013, o 21:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kiclaw]]></name></author>
<updated>2013-05-20T20:55:25+01:00</updated>
<published>2013-05-20T20:55:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3155&amp;p=37392#p37392</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3155&amp;p=37392#p37392"/>
<title type="html"><![CDATA[Re: [ARM] Generowanie sygnłu PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3155&amp;p=37392#p37392"><![CDATA[
Dziękuje Ci Sunie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />Generalnie fajne te ARM-y, ale ilość dokumentacji mnie przytłacza, w AVR był jeden datasheet do każdego układu(w granicach 700 stron), tutaj kilka książek &quot;cegieł&quot; dla mikroprocka <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Skąd wziąłeś ten przykład?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=600">kiclaw</a> — 20 maja 2013, o 20:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-05-20T16:24:11+01:00</updated>
<published>2013-05-20T16:24:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3155&amp;p=37373#p37373</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3155&amp;p=37373#p37373"/>
<title type="html"><![CDATA[Re: [ARM] Generowanie sygnłu PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3155&amp;p=37373#p37373"><![CDATA[
a no widzisz ty masz  STM32F407VGT6<br /><br />PWM masz dostępny na TIM1 i TIM8  co widać na schemacie blokowym w nocie na stronie 18 stej<br /><br />cytując stronę 29:<br /><br />Advanced-control timers (TIM1, TIM8)<br />The advanced-control timers (TIM1, TIM8) can be seen as three-phase PWM generators <br />multiplexed on 6 channels. They have complementary PWM outputs with programmable <br />inserted dead times. They can also be considered as complete general-purpose timers. <br />Their 4 independent channels can be used for:<br />● Input capture<br />● Output compare<br />● PWM generation (edge- or center-aligned modes)<br />● One-pulse mode output<br />If configured as standard 16-bit timers, they have the same features as the general-purpose <br />TIMx timers. If configured as 16-bit PWM generators, they have full modulation capability (0-<br />100%).<br />The advanced-control timer can work together with the TIMx timers via the Timer Link <br />feature for synchronization or event chaining.<br />TIM1 and TIM8 support independent DMA request generation.<br /><br />Czytając dalej dowiesz się jak generować na innych timerach ... i z jakimi zależnościami<br /><br /><br />w między czasie sprawdź przykładowy prog z STM <br /><br />[syntax=c]/* leds in the board will fade */<br /><br />int main(void)<br />{<br />   TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;<br />   TIM_OCInitTypeDef  TIM_OCInitStructure;<br /><br />  /* TIM config */<br /><br />  GPIO_InitTypeDef GPIO_InitStructure;<br /><br /><br />  /* TIM4 clock enable */<br />  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);<br /><br /><br />  /* LEDs are on GPIOD */<br />  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);<br />  <br />  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;<br />  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;<br />  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;<br />  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;<br />  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP ;<br />  GPIO_Init(GPIOD, &amp;GPIO_InitStructure);<br /><br /><br />  GPIO_PinAFConfig(GPIOD, GPIO_PinSource12, GPIO_AF_TIM4);<br />  GPIO_PinAFConfig(GPIOD, GPIO_PinSource13, GPIO_AF_TIM4);<br />  GPIO_PinAFConfig(GPIOD, GPIO_PinSource14, GPIO_AF_TIM4);<br />  GPIO_PinAFConfig(GPIOD, GPIO_PinSource15, GPIO_AF_TIM4);<br /><br />  /* pwm set up */<br /><br /><br />  /* Compute the prescaler value */<br />  PrescalerValue = (uint16_t) ((SystemCoreClock /2) / 21000000) - 1;<br /><br /><br />  /* Time base configuration */<br />  TIM_TimeBaseStructure.TIM_Period = 665;<br />  TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue;<br />  TIM_TimeBaseStructure.TIM_ClockDivision = 0;<br />  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;<br /><br /><br />  TIM_TimeBaseInit(TIM4, &amp;TIM_TimeBaseStructure);<br /><br /><br />  /* PWM1 Mode configuration: Channel1 */<br />  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;<br />  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;<br />  TIM_OCInitStructure.TIM_Pulse = 0;<br />  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;<br /><br /><br />  TIM_OC1Init(TIM4, &amp;TIM_OCInitStructure);<br /><br /><br />  TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);<br /><br /><br />  /* PWM1 Mode configuration: Channel2 */<br />  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;<br />  TIM_OCInitStructure.TIM_Pulse = 0;<br /><br /><br />  TIM_OC2Init(TIM4, &amp;TIM_OCInitStructure);<br /><br /><br />  TIM_OC2PreloadConfig(TIM4, TIM_OCPreload_Enable);<br /><br /><br />  /* PWM1 Mode configuration: Channel3 */<br />  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;<br />  TIM_OCInitStructure.TIM_Pulse = 0;<br /><br /><br />  TIM_OC3Init(TIM4, &amp;TIM_OCInitStructure);<br /><br /><br />  TIM_OC3PreloadConfig(TIM4, TIM_OCPreload_Enable);<br /><br /><br />  /* PWM1 Mode configuration: Channel4 */<br />  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;<br />  TIM_OCInitStructure.TIM_Pulse = 0;<br /><br /><br />  TIM_OC4Init(TIM4, &amp;TIM_OCInitStructure);<br /><br /><br />  TIM_OC4PreloadConfig(TIM4, TIM_OCPreload_Enable);<br /><br /><br />  TIM_ARRPreloadConfig(TIM4, ENABLE);<br /><br /><br />  /* TIM4 enable counter */<br />  TIM_Cmd(TIM4, ENABLE);<br /><br />  /* DEMO */<br /><br />      int brightness = 0;<br /><br /><br />  while(1)  // Do not exit<br />    {<br />          brightness++;<br /><br /><br />          TIM4-&gt;CCR3 = 333 - (brightness + 0) % 333; // set brightness<br />          TIM4-&gt;CCR4 = 333 - (brightness + 166/2) % 333; // set brightness<br />          TIM4-&gt;CCR1 = 333 - (brightness + 333/2) % 333; // set brightness<br />          TIM4-&gt;CCR2 = 333 - (brightness + 499/2) % 333; // set brightness<br /><br /><br />          for(i=0;i&lt;10000;i++);  // delay<br />          for(i=0;i&lt;10000;i++);  // delay<br />          for(i=0;i&lt;10000;i++);  // delay<br />    }<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 20 maja 2013, o 16:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kiclaw]]></name></author>
<updated>2013-05-20T15:47:06+01:00</updated>
<published>2013-05-20T15:47:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3155&amp;p=37370#p37370</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3155&amp;p=37370#p37370"/>
<title type="html"><![CDATA[Re: [ARM] Generowanie sygnłu PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3155&amp;p=37370#p37370"><![CDATA[
Napisałem kod jeszcze raz:<br />[syntax=c]//konfigruacja timer 3<br />  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //włącz taktowanie timer 3<br /><br />  TIM_TimeBaseStructure.TIM_Period=999; //ma liczyć do 1000 -&gt; 36kHz<br />  TIM_TimeBaseStructure.TIM_Prescaler=0;//nie dziel częstotliwoci czyli PWM z f=36kHz<br />  TIM_TimeBaseStructure.TIM_ClockDivision=0; //podział clocka do innych modułów<br />  TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;<br />  TIM_TimeBaseInit(TIM3,&amp;TIM_TimeBaseStructure);<br /><br />  //konfiguracja kanału 1<br />  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;<br />  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;<br />  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;<br />  TIM_OCInitStructure.TIM_Pulse = 500;  //50% jasnosci<br />  TIM_OC1Init(TIM3, &amp;TIM_OCInitStructure);<br />  TIM_Cmd(TIM3, ENABLE);<br /><br />  TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable);<br />  TIM_ARRPreloadConfig(TIM3,ENABLE);[/syntax]<br /><br />Ustawienie GPIO:<br />[syntax=c]RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//wlaczenie zegarow taktujących<br />  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;<br />  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;<br />  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;<br />  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;<br />  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;<br />  GPIO_Init(GPIOA, &amp;GPIO_InitStructure);<br /><br />  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//wlaczenie zegarow taktujących<br />  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;<br />  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;<br />  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;<br />  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;<br />  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;<br />  GPIO_Init(GPIOB, &amp;GPIO_InitStructure);<br /><br />  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);//wlaczenie zegarow taktujących<br />  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;<br />  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;<br />  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;<br />  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;<br />  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;<br />  GPIO_Init(GPIOC, &amp;GPIO_InitStructure);[/syntax]<br />Jak widzisz ustawiłem GPIO dla PA6, PC6, PB4 - bo nigdzie nie mogę znaleźć który pin jest domyślnym dla kanału 1 timera 3.<br /><br />No ale i tak na tych ustawieniach, PWM nie chce ruszyć na żadnym z tych trzech pinów  <img src="https://forum.atnel.pl/images/smilies/icon_evil.gif" alt=":evil:" title="Zły" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=600">kiclaw</a> — 20 maja 2013, o 15:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-05-20T14:17:29+01:00</updated>
<published>2013-05-20T14:17:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3155&amp;p=37364#p37364</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3155&amp;p=37364#p37364"/>
<title type="html"><![CDATA[Re: [ARM] Generowanie sygnłu PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3155&amp;p=37364#p37364"><![CDATA[
hehe PWM na STM jest naprawdę prosty do opanowania , masz opisane u mnie na stronce <br />co do remapowania funkcji to są one zależne od kilku czynników i warto sprawdzić w nocie gdzie i w ajki sposób możesz remapować , bo nie jest to tak że rzucasz gdzie chcesz <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />ja zazwyczaj robię to bezpośrednio:<br /><br />[syntax=c]AFIO_MAPR |= 0x02000C11;[/syntax]<br /><br />czyli :<br /><br />         Pin remap<br /> 0x0200---- JTAG (SWJ) ustawione dla  SWD uwolnione dla  PB3/4 dla SPI1 lub PWM<br /> <br />         TIM3 remap<br /> 0x000 no remap CH1/2/3/4 czyli PA6/PA7/PB0/PB1<br /> 0x800 remap 2  TIM3 PB4/PB5/PB0/PB1 dla QAR PWM wyjścia mosfet <br /> 0xc00 remap 3  TIM3 PC6/PC7/PC8/PC9 dla diod na discovery PC8/PC9<br /> 0x00 USART3 standard Tx=PB10 Rx=PB11<br /> 0x10 USART3 cześćiowy remap Tx=PC10 Rx=PC11 Ck=PC12.<br /> 0x01 SPI1 remap, użyte PB3/4/5 CLK/MISO/MOSI w/ PA15 dla CS<br /><br />Nie zawsze można użyc pełnego remapingu.<br />W przypadku funkcji: <br /><br />[syntax=c]void TIM_RemapConfig(TIM_TypeDef* TIMx, uint16_t TIM_Remap);[/syntax]<br /><br />podajesz jako argumenty  Definicję dla timera(numer) , oraz miejsce docelowe)<br /><br />musisz sprawdzić gdzie możesz go remapować <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 20 maja 2013, o 14:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kiclaw]]></name></author>
<updated>2013-05-20T11:26:49+01:00</updated>
<published>2013-05-20T11:26:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3155&amp;p=37361#p37361</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3155&amp;p=37361#p37361"/>
<title type="html"><![CDATA[[ARM] Generowanie sygnłu PWM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3155&amp;p=37361#p37361"><![CDATA[
Doszedłem w swojej nauce ARM-ów do generowania PWM, no i właśnie doszedłem i stanąłem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Na samym początku wrzucę kod programu:<br /><br />[syntax=c]#include &quot;stm32f4xx_gpio.h&quot;<br />#include &quot;stm32f4xx_rcc.h&quot;<br />#include &quot;stm32f4xx.h&quot;<br />#include &quot;stm32f4xx_flash.h&quot;<br />#include &quot;stm32f4xx_conf.h&quot;<br />#include &quot;stm32f4xx_exti.h&quot;<br />#include &quot;stm32f4xx_syscfg.h&quot;<br />#include &quot;stm32f4xx_tim.h&quot;<br />#include &quot;misc.h&quot;<br /><br />#include &quot;core_cm4.h&quot;<br /><br />#include &quot;Config_moj.h&quot;<br /><br /><br />int main(void)<br />{<br />Konfiguracja_zegarow();//72MHz<br /><br /> /*Konfiguracja GPIO*/<br />  GPIO_InitTypeDef GPIO_InitStructure;<br />  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);//wlaczenie zegarow taktujących<br />  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;//numery portow do roboty<br />  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //WYJSCIE<br />  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;<br />  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //szybkosc przełączania<br />  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;<br />  GPIO_Init(GPIOD, &amp;GPIO_InitStructure);//przesyłam całą srykturę inicjalizacji<br /><br />  /*Konfiguracja SysTickLED zielony*/<br />  SysTick-&gt;LOAD=9000000; //1. Program reload value<br />  SysTick-&gt;VAL=0; //2. Clear current value<br />  SysTick-&gt;CTRL = 0x03;  //3. Program Control and Status register<br /><br /><br />  /*Konfiguracja Timer 1    LED czerwony*/<br />  RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); //włączenie taktowania timera 1<br />  //Konfiguracja Timera<br />  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;<br />  TIM_TimeBaseStructure.TIM_Period=65535; //wposuje żeby liczył do maksimum, tutaj zawyczaj tak bedzie<br />  TIM_TimeBaseStructure.TIM_Prescaler=7200; //fclk=72MHz/7200=10kHz<br />  TIM_TimeBaseStructure.TIM_ClockDivision=0; //podział clocka do gen. czasu martwego i filtrów<br />  TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //licz do góry<br />  TIM_TimeBaseInit(TIM1,&amp;TIM_TimeBaseStructure);<br /><br />  //konfigurajca kanału 1 - timera 1<br />  TIM_OCInitTypeDef TIM_OCInitStructure;<br />  TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_Timing;<br />  TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;<br />  TIM_OCInitStructure.TIM_Pulse=5000;//moment do którego trzeba doliczyć<br />  TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;<br />  TIM_OC1Init(TIM1, &amp;TIM_OCInitStructure);<br /><br />  TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Disable);<br /><br />  TIM_ITConfig(TIM1, TIM_IT_CC1, ENABLE); //włączenie przerwania od kanału<br />  TIM_Cmd(TIM1, ENABLE); //włączenie timer 1<br /><br />  //konfigruacja obłsugi przerwania od NVIC dla timera 1<br />  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//priorytet grupy<br />  NVIC_InitTypeDef NVIC_InitStructure;<br />  NVIC_InitStructure.NVIC_IRQChannel=TIM1_CC_IRQn;<br />  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;<br />  NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;<br />  NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;<br />  NVIC_Init(&amp;NVIC_InitStructure);<br /><br /><br />  <br /> <br />  <br /><br />  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//wlaczenie zegarow taktujących<br />  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;<br />  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;<br />  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;<br />  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;<br />  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;<br />  GPIO_Init(GPIOA, &amp;GPIO_InitStructure);<br /><br />  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//wlaczenie zegarow taktujących<br />  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;<br />  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;<br />  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;<br />  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;<br />  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;<br />  GPIO_Init(GPIOB, &amp;GPIO_InitStructure);<br /><br />  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);//wlaczenie zegarow taktujących<br />  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;<br />  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;<br />  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;<br />  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;<br />  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;<br />  GPIO_Init(GPIOC, &amp;GPIO_InitStructure);<br /><br /><br />  /*Konfiguracja Timer 3   PWM LED pomarańczwy*/<br />  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //włączenie taktowania timera 3<br />  //konfiguracja timera<br />  TIM_TimeBaseStructure.TIM_Period=999;<br />  TIM_TimeBaseStructure.TIM_Prescaler=0;<br />  TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;<br />  TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;<br />  TIM_TimeBaseInit(TIM3,&amp;TIM_TimeBaseStructure);<br /><br />  //konfiguracja kanału 1 - timera 3<br />  TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;<br />  TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;<br />  TIM_OCInitStructure.TIM_Pulse=950;<br />  TIM_OCInitStructure.TIM_OCNPolarity=TIM_OCPolarity_High;<br />  TIM_OC1Init(TIM3, &amp;TIM_OCInitStructure);<br /><br />  TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable);<br /><br />  TIM_ARRPreloadConfig(TIM3, ENABLE);<br /><br />  TIM_Cmd(TIM3, ENABLE); //włączenie timer 3<br /><br />while(1)//główna pętla programu<br />{<br />}<br />}<br /><br />void SysTick_Handler(void)<br />{<br />GPIO_ToggleBits(GPIOD,GPIO_Pin_12);<br />}<br /><br />void TIM1_CC_IRQHandler(void)<br />{<br />if(TIM_GetITStatus(TIM1,TIM_IT_CC1) != RESET)<br />{<br />TIM_ClearITPendingBit(TIM1, TIM_IT_CC1);<br />GPIO_ToggleBits(GPIOD,GPIO_Pin_14); //zmiana stanu led co 2Hz<br />//ponowne ustawienie rejstru przepełnienia<br />TIM_SetCompare1(TIM1, TIM_GetCapture1(TIM1) + 5000);<br /><br />}<br />}[/syntax]<br /><br />Jak widać jest tu jeszcze SysTick i Timer 1, ale wrzuciłem wszystko żeby był pełen obraz sytuacji. <br /><br />Mam dwa pytania:<br /><br />1.Co robię źle? Sygnał nie chce się niestety generować.<br />2.Gdzie w datasheet STM32F407VGT6 znajdę gdzie jest podłączony Kanał 1 timera 3? Znalazłem tylko Alternative Functions i tam są właśnie piny PA6,PB4 i PC6. Czy to oznacza że ten kanał jest powiązany do tych 3 pinów? Nie sądzę, bo musi być jakiś przypisany domyślnie ale nigdzie tego nie mogę znaleźć.<br />3. W jaki sposób remapuje się iny w tych prockach? Bo [syntax=c]GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE);[/syntax] nie chce działać. Znalazłem coś takiego: [syntax=c]void TIM_RemapConfig(TIM_TypeDef* TIMx, uint16_t TIM_Remap);[/syntax] no ale nie za bardzo wiem co wpisać w argumenty funkcji.<br /><br />Uff, mam nadzieje że ktoś wie o co chodzi bo męczę ten PWM od wczoraj.<br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=600">kiclaw</a> — 20 maja 2013, o 11:26</p><hr />
]]></content>
</entry>
</feed>