<?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=12721&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-08-23T18:45:53+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=46&amp;t=12721&amp;mode</id>
<entry>
<author><name><![CDATA[4MaticPL]]></name></author>
<updated>2015-08-23T18:45:53+01:00</updated>
<published>2015-08-23T18:45:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12721&amp;p=138168#p138168</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12721&amp;p=138168#p138168"/>
<title type="html"><![CDATA[Re: [Pytanie] STM32NUCLEO i GPIO]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12721&amp;p=138168#p138168"><![CDATA[
Dzięki za odpowiedź. Jest to mój początek z platformą 32bit więc od razu wolałem zapytać o podstawy ponieważ potem wyuczyłbym się sam jakiś głupot i ciężko by było nawrócić mnie na dobrą drogę <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Co do twoich rad:<br />1. Tak też zrobię. Tutaj przykładowo tylko dałem inicjalizację żebyś mógł sprawdzić poprawność kodu. W projekcie wywaliłbym to do funkcji.<br />2. Tak jak wyżej. To tylko przykład<br />3. SysTick jeszcze nie ogarniam ale jutro postaram się coś poczytać o tym.<br />4. Dlaczego nie używać makr? Na avr starałem się używać jak najwięcej makr.<br />5. To raczej zostawie tak jak jest ponieważ jest dla mnie bardziej przejrzyste <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Tak więc lecę dalej katować mojego stma <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=2175">4MaticPL</a> — 23 sie 2015, o 18:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[4MaticPL]]></name></author>
<updated>2015-08-23T17:49:19+01:00</updated>
<published>2015-08-23T17:49:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12721&amp;p=138161#p138161</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12721&amp;p=138161#p138161"/>
<title type="html"><![CDATA[Re: [Pytanie] STM32NUCLEO i GPIO]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12721&amp;p=138161#p138161"><![CDATA[
Udało mi się ogarnąć działanie portów jako wejście/wyjście ale mam pytanie czy ten kod jest poprawny. Niby kod działa ale nie chce się uczyć złych nawyków jak by było coś nie tak.<br /><br />Plik main.c<br />[syntax=c]#include &quot;stm32l1xx.h&quot;<br />#include &quot;gpio.h&quot;<br /><br />#define LED1 5<br />#define LED2 6<br />#define BUTTON 13<br /><br /><br /><br /><br />void delay( uint32_t nCount) <br />{<br />     while(nCount--);<br />}<br /><br />int main( )<br />{<br />RCC-&gt;AHBENR |=  (1 &lt;&lt; GPIOA_RCC);// uruchomienie portu A<br />RCC-&gt;AHBENR |=  (1 &lt;&lt; GPIOC_RCC);// uruchomienie portu C<br /><br />// INICJALIZACJA PA5 - LED 1<br />GPIOA-&gt;MODER   |=  (GPIO_Mode_OUT&lt;&lt; 2*LED1);<br />GPIOA-&gt;OSPEEDR |=  (GPIO_Speed_10MHz&lt;&lt; 2*LED1);<br />GPIOA-&gt;PUPDR   |=  (GPIO_PuPd_NOPULL&lt;&lt; 2*LED1);<br /><br />// INICJALIZACJA PA6 - LED 2<br />GPIOA-&gt;MODER   |=  (GPIO_Mode_OUT &lt;&lt; 2*LED2);<br />GPIOA-&gt;OSPEEDR |=  (GPIO_Speed_10MHz&lt;&lt; 2*LED2);<br />GPIOA-&gt;PUPDR   |=  (GPIO_PuPd_NOPULL&lt;&lt; 2*LED2);<br /><br />// INICJALIZACJA PC13 - PRZYCISK<br />GPIOC-&gt;MODER   |=  (GPIO_Mode_IN &lt;&lt; 2*BUTTON);<br />GPIOC-&gt;OSPEEDR |=  (GPIO_Speed_10MHz&lt;&lt; 2*BUTTON);<br />GPIOC-&gt;PUPDR   |=  (GPIO_PuPd_UP &lt;&lt; 2*BUTTON);<br /><br />while(1)<br />{<br />if( !(GPIOC-&gt;IDR &amp; (1ul &lt;&lt; 13)) == 0)<br />{<br />GPIOA-&gt;BSRRH = (1 &lt;&lt; LED1);<br />GPIOA-&gt;BSRRL = (1 &lt;&lt; LED2);<br />}<br />else<br />{<br />GPIOA-&gt;BSRRH = (1 &lt;&lt; LED2);<br />GPIOA-&gt;BSRRL = (1 &lt;&lt; LED1);<br />}<br />}<br /><br />}[/syntax]<br /><br />Plik gpio.h <br />[syntax=c]enum GPIO_RCC_TypeDef<br />{<br />GPIOA_RCC = 0x00, <br />GPIOB_RCC = 0x01, <br />GPIOC_RCC = 0x02, <br />GPIOD_RCC = 0x03, <br />GPIOE_RCC = 0x04, <br />GPIOH_RCC = 0x05<br />};<br /><br />typedef enum<br />{ <br />  GPIO_Mode_IN   = 0x00, /*!&lt; GPIO Input Mode */<br />  GPIO_Mode_OUT  = 0x01, /*!&lt; GPIO Output Mode */<br />  GPIO_Mode_AF   = 0x02, /*!&lt; GPIO Alternate function Mode */<br />  GPIO_Mode_AN   = 0x03  /*!&lt; GPIO Analog Mode */<br />}GPIOMode_TypeDef;<br />#define IS_GPIO_MODE(MODE) (((MODE) == GPIO_Mode_IN)  || ((MODE) == GPIO_Mode_OUT) || \<br />                            ((MODE) == GPIO_Mode_AF)|| ((MODE) == GPIO_Mode_AN))<br />/**<br />  * @}<br />  */<br /> <br />/** @defgroup Output_type_enumeration<br />  * @{<br />  */<br />typedef enum<br />{ GPIO_OType_PP = 0x00,<br />  GPIO_OType_OD = 0x01<br />}GPIOOType_TypeDef;<br />#define IS_GPIO_OTYPE(OTYPE) (((OTYPE) == GPIO_OType_PP) || ((OTYPE) == GPIO_OType_OD))<br /> <br />/**<br />  * @}<br />  */<br /> <br />/** @defgroup Output_Maximum_frequency_enumeration <br />  * @{<br />  */<br />typedef enum<br />{ <br />  GPIO_Speed_400KHz = 0x00, /*!&lt; Very Low Speed */<br />  GPIO_Speed_2MHz   = 0x01, /*!&lt; Low Speed */<br />  GPIO_Speed_10MHz  = 0x02, /*!&lt; Medium Speed */<br />  GPIO_Speed_40MHz  = 0x03  /*!&lt; High Speed */<br />}GPIOSpeed_TypeDef;<br />#define IS_GPIO_SPEED(SPEED) (((SPEED) == GPIO_Speed_400KHz) || ((SPEED) == GPIO_Speed_2MHz) || \<br />                              ((SPEED) == GPIO_Speed_10MHz)||  ((SPEED) == GPIO_Speed_40MHz))<br />/**<br />  * @}<br />  */<br /> <br />/** @defgroup Configuration_Pull-Up_Pull-Down_enumeration <br />  * @{<br />  */<br />typedef enum<br />{ GPIO_PuPd_NOPULL = 0x00,<br />  GPIO_PuPd_UP     = 0x01,<br />  GPIO_PuPd_DOWN   = 0x02<br />}GPIOPuPd_TypeDef;<br />#define IS_GPIO_PUPD(PUPD) (((PUPD) == GPIO_PuPd_NOPULL) || ((PUPD) == GPIO_PuPd_UP) || \<br />                            ((PUPD) == GPIO_PuPd_DOWN))<br />/**<br />  * @}<br />  */<br /> <br />/** @defgroup Bit_SET_and_Bit_RESET_enumeration<br />  * @{<br />  */<br />typedef enum<br />{ Bit_RESET = 0,<br />  Bit_SET<br />}BitAction;<br />#define IS_GPIO_BIT_ACTION(ACTION) (((ACTION) == Bit_RESET) || ((ACTION) == Bit_SET))[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2175">4MaticPL</a> — 23 sie 2015, o 17:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daniel880]]></name></author>
<updated>2015-08-22T14:31:21+01:00</updated>
<published>2015-08-22T14:31:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12721&amp;p=138074#p138074</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12721&amp;p=138074#p138074"/>
<title type="html"><![CDATA[Re: [Pytanie] STM32NUCLEO i GPIO]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12721&amp;p=138074#p138074"><![CDATA[
Żeby po przesunięciu 10 razy w lewo nie zostało czasami same 0;)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2328">Daniel880</a> — 22 sie 2015, o 14:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[4MaticPL]]></name></author>
<updated>2015-08-21T22:35:51+01:00</updated>
<published>2015-08-21T22:35:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12721&amp;p=138047#p138047</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12721&amp;p=138047#p138047"/>
<title type="html"><![CDATA[Re: [Pytanie] STM32NUCLEO i GPIO]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12721&amp;p=138047#p138047"><![CDATA[
A rozważając tą pierwszą inicjalizację to co oznaczają te liczby 1ul, 2ul itp? Chodzi tu o typ unsigned long? Po co aż taki duży typ do liczby która wejdzie spokojnie w 1 bajt?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2175">4MaticPL</a> — 21 sie 2015, o 22:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[4MaticPL]]></name></author>
<updated>2015-08-21T20:16:32+01:00</updated>
<published>2015-08-21T20:16:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12721&amp;p=138036#p138036</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12721&amp;p=138036#p138036"/>
<title type="html"><![CDATA[Re: [Pytanie] STM32NUCLEO i GPIO]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12721&amp;p=138036#p138036"><![CDATA[
<div class="quotetitle">SunRiver napisał(a):</div><div class="quotecontent"><br />U mnie działa to przykład z keila <br />zobacz wszystko śmiga<br /></div><br />Ten przykład też mi działa ale chciałbym zrobić inicializacje portów tak jak ty miałeś na blogu:<br />[syntax=c]void init_GPIO(void){<br /> <br />GPIO_InitTypeDef GPIO_InitStruct;<br />        // ta struktura ułatwia nam inicjowanie GPIO oraz ustawienia<br />        // pinów jako In / out czy właczenie pullupów<br /> <br />RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);<br />        // odmiennie niż w AVR tu każde praktycznie urządzenie perferyjne<br />        // wymaga włączenia taktowania i tym sposobem włączamy obwody<br />        // RCC dla GPIO<br /> <br /> <br />        // Tu poniżej mamy blok instrukcji w którym mamy wszystkie<br />        // właściwości naszych obwodów GPIO.<br />        // Zatem ustalamy co potrzebujemy i gdzie oraz wywołujemy<br />        // funkcję init, która  ustali ustawione przez nas bity w<br />        // odpowiednich rejestrach<br /> <br />        // W przypadku naszego STM32F4 Discovery diody LED, które<br />        // są na pokładzie płytki są podłączone<br />        // do pinów PD12 , PD15  ....<br />GPIO_InitStruct.GPIO_Pin = GPIO_Pin_15 | GPIO_Pin_14 | GPIO_Pin_13 | GPIO_Pin_12; // Chcemy skonfigurować wszystkie piny z diodami<br />GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; // Wszystkie w/w piny jako wyjścia<br />GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; // GPIO ma pracować z zegarem 50Mhz - co przekąłda się na szybkość zmian<br />GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; // Piny będa typu Push/pull<br />GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; // Tutaj decydujemy o właczeniu PullUP lub PulDown - my dajemy na nieaktywne<br />GPIO_Init(GPIOD, &amp;GPIO_InitStruct);             // wszystkie w/w zmiany pakujemy do struktury i zapisujemy do rejestrów sterujących GPIO<br /> <br />// teraz zajmiemy się portem A który też trzeba podobnie jak<br />        // poprzednio GPIOD ustawić ...<br /> <br />RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);<br /> <br />/*<br />         W zasadzie będzie jak wyżej z tą różnicą, że GPIOA ustawimy sobie jako<br />         wejście gdyż tam mamy podłączony przycisk szczególnie nas interesuje<br />         PA0, który jest aktywny w stanie HI (VCC)<br /> */<br />GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0; // Konfigurujemy pin PA0<br />GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN; //jako wejście<br />GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;// zegar 50Mhz<br />GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;   // Push/Pull<br />GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_DOWN;   // Włączamy rezystory<br />        // Pull_Down  - będziemy wykrywać stan HI na pinie<br />GPIO_Init(GPIOA, &amp;GPIO_InitStruct); // przekazujemy dne do Init<br />        // który zapakuje to wszystko do rejestru GPIO<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2175">4MaticPL</a> — 21 sie 2015, o 20:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ramrusazer]]></name></author>
<updated>2015-08-21T18:01:15+01:00</updated>
<published>2015-08-21T18:01:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12721&amp;p=138009#p138009</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12721&amp;p=138009#p138009"/>
<title type="html"><![CDATA[Re: [Pytanie] STM32NUCLEO i GPIO]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12721&amp;p=138009#p138009"><![CDATA[
W Pack Installer (keil) masz wszystko co trzeba? tj. paczka  STM32L1xx_DFP ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10335">ramrusazer</a> — 21 sie 2015, o 18:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2015-08-21T17:33:03+01:00</updated>
<published>2015-08-21T17:33:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12721&amp;p=138003#p138003</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12721&amp;p=138003#p138003"/>
<title type="html"><![CDATA[Re: [Pytanie] STM32NUCLEO i GPIO]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12721&amp;p=138003#p138003"><![CDATA[
U mnie działa to przykład z keila <br />zobacz wszystko śmiga<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 21 sie 2015, o 17:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[4MaticPL]]></name></author>
<updated>2015-08-21T16:51:46+01:00</updated>
<published>2015-08-21T16:51:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12721&amp;p=138002#p138002</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12721&amp;p=138002#p138002"/>
<title type="html"><![CDATA[[Pytanie] STM32NUCLEO i GPIO]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12721&amp;p=138002#p138002"><![CDATA[
Witam<br />Ostatnio dostałem płytkę STM32NUCLEO-L152RE. Zainstalowałem do niego środowisko uVision ale mam pewien problem. Nie potrafię znaleźć biblioteki stm32l1xx_gpio.h która jak sama nazwa mówi ułatwia znacznie posługiwanie się portami procesora.<br /><br />Wie ktoś jak uruchomić tą bibliotekę?<br /><br />Jeśli się nie da to proszę o wyjaśnienie tego zapisu:<br /><br />Jest to inicializacja portu PA_5 ale nie mam za bardzo pojęcia o co tu chodzi :/<br />[syntax=c]int32_t LED_Initialize (void) {<br /><br />  RCC-&gt;AHBENR |=  (1ul &lt;&lt; 0);                   /* Enable GPIOA clock         */<br /><br />  /* Configure LED (PA.5) pins as push-pull outputs, No pull-up, pull-down */<br />  GPIOA-&gt;MODER   &amp;= ~((3ul &lt;&lt; 2*5));<br />  GPIOA-&gt;MODER   |=  ((1ul &lt;&lt; 2*5));<br />  GPIOA-&gt;OTYPER  &amp;= ~((1ul &lt;&lt;   5));<br />  GPIOA-&gt;OSPEEDR &amp;= ~((3ul &lt;&lt; 2*5));<br />  GPIOA-&gt;OSPEEDR |=  ((1ul &lt;&lt; 2*5));<br />  GPIOA-&gt;PUPDR   &amp;= ~((3ul &lt;&lt; 2*5));<br />  return (0);<br />}[/syntax]<br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2175">4MaticPL</a> — 21 sie 2015, o 16:51</p><hr />
]]></content>
</entry>
</feed>