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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-10-11T17:37:00+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=46&amp;t=13178&amp;mode</id>
<entry>
<author><name><![CDATA[wojmajster]]></name></author>
<updated>2015-10-11T17:37:00+01:00</updated>
<published>2015-10-11T17:37:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142144#p142144</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142144#p142144"/>
<title type="html"><![CDATA[Re: odbieranie stringu UART1 ST32F103C8T6]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142144#p142144"><![CDATA[
<div class="quotetitle">Federerer napisał(a):</div><div class="quotecontent"><br />Nie działa Ci, bo po odebraniu pierwszego bajtu zatrzymujesz program breakpointem w przerwaniu, ale to nie zatrzymuje nadawania przez aplikacje na komputerze. Więc zanim zdążysz wznowić działanie programu, twój string już dawno jest wysłany i dlatego nie masz kolejnych przerwań.<br /></div><br /><br />To teraz takie proste, dzięki za zainteresowanie problemem i pomoc <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1297">wojmajster</a> — 11 paź 2015, o 17:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Federerer]]></name></author>
<updated>2015-10-11T14:46:34+01:00</updated>
<published>2015-10-11T14:46:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142134#p142134</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142134#p142134"/>
<title type="html"><![CDATA[Re: odbieranie stringu UART1 ST32F103C8T6]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142134#p142134"><![CDATA[
<div class="quotetitle">wojmajster napisał(a):</div><div class="quotecontent"><br />Na debugu działa to tak jak napisałem, dlaczego? nie wiem.<br /></div><br />Nie działa Ci, bo po odebraniu pierwszego bajtu zatrzymujesz program breakpointem w przerwaniu, ale to nie zatrzymuje nadawania przez aplikacje na komputerze. Więc zanim zdążysz wznowić działanie programu, twój string już dawno jest wysłany i dlatego nie masz kolejnych przerwań.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4440">Federerer</a> — 11 paź 2015, o 14:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2015-10-11T11:26:12+01:00</updated>
<published>2015-10-11T11:26:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142116#p142116</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142116#p142116"/>
<title type="html"><![CDATA[Re: odbieranie stringu UART1 ST32F103C8T6]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142116#p142116"><![CDATA[
Ja używam debugera z Segera i jest naprawdę doskonały , podobnie jak <br />Debugowanie pod VS dla VisualGDB  i w MDK keila <br /><br />nie używam innych środowisk .<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 11 paź 2015, o 11:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojmajster]]></name></author>
<updated>2015-10-11T04:32:14+01:00</updated>
<published>2015-10-11T04:32:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142103#p142103</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142103#p142103"/>
<title type="html"><![CDATA[Re: odbieranie stringu UART1 ST32F103C8T6]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142103#p142103"><![CDATA[
Witam wszystkich ponownie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />Wstałem sprawdziłem i działa, może nawet i działało od początku. <br />Stwierdziłem, że spoko narzędzie ten debug, niestety tu się przez to zapętliłem i szukałem na siłę błędu.<br />Na debugu działa to tak jak napisałem, dlaczego? nie wiem. <br />Ale jak wgrałem sam program, zrobiłem poprawnie wyciąganie stringa z buforu odbiorczego to po prostu działa jak należy.<br /><br />Dziękuje za zainteresowanie tematem i udzielone wskazówki <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Moglibyście kiedyś w wolnej chwili sprawdzić, czy u Was debug w tym przerwaniu działa tak samo jak u mnie?<br />Może w innym środowisku takie debugowanie działa ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1297">wojmajster</a> — 11 paź 2015, o 04:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2015-10-10T19:47:06+01:00</updated>
<published>2015-10-10T19:47:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142067#p142067</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142067#p142067"/>
<title type="html"><![CDATA[Re: odbieranie stringu UART1 ST32F103C8T6]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142067#p142067"><![CDATA[
wiesz nie mam kłopotu ze stringiem ... na STM32 <br />Nie wiem czy czytałeś Mikrokontrolery Kinetis dla ..... <br />opisałem tam mechanizm do odbioru stringa (zdania $GPGA z GPS na uarcie)<br />łącznie z mechanizmem parsowania i wyłuskiwania danych które mnie interesują<br />Tej metody używam też na STM32 i LPC  i działa zawsze bez błędnie)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 10 paź 2015, o 19:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojmajster]]></name></author>
<updated>2015-10-10T19:01:50+01:00</updated>
<published>2015-10-10T19:01:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142058#p142058</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142058#p142058"/>
<title type="html"><![CDATA[Re: odbieranie stringu UART1 ST32F103C8T6]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142058#p142058"><![CDATA[
QuadMan dzięki za wskazówki, tak jak pisałem z pojedynczymi znakami to nie ma problemu bufory się zapełniają jak należy.<br />Postępując według Twoich punktów to działa.<br />Problem mam gdy wysyłam cały ciąg znaków, całego stringa z apki na PC lub terminala.<br />Czyli z kompa do stm-a wysyła fizycznie bajt bajt bajt bajt, z których składa się string.<br />To przerwanie nie chce mi rozłożyć stringa na pojedyncze znaki, łapie pierwszy i koniec.<br /><br />Nie wiem czy problem leży np. w szybkości transmisji, może w ustawieniu jakiejś flagi czy coś na podobe. <br />Dopiero zaczynam działanie z STM32, Wasze posty sugerują mi, że raczej nie robie błędu w samym odbiorze, na AVRach to by tak działało.<br /><br />Ide dolutować ledy może to będzie najszybszy debug;<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1297">wojmajster</a> — 10 paź 2015, o 19:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[QuadMan]]></name></author>
<updated>2015-10-10T18:43:00+01:00</updated>
<published>2015-10-10T18:43:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142055#p142055</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142055#p142055"/>
<title type="html"><![CDATA[Re: odbieranie stringu UART1 ST32F103C8T6]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142055#p142055"><![CDATA[
Nie wiem jak w CooCox-ie z debugowaniem przerwań, ale nie wiem jak właściwie to robisz.<br />Po mojemu, to powinieneś:<br />1. Uruchomić program z breakpointem na końcu tego przerwania.<br />2. Wpisać 1 znak z terminala, wtedy program powinien się zatrzymać na tym breakpoincie.<br />3. Podejrzeć tą tablicę i uruchomić dalej program.<br />4. Wpisać kolejny znak z terminala, itd.<br /><br />Czy tak to robisz?<br /><br />Dopisane: A może po prostu daj &quot;togglowanego&quot; LED-a w przerwaniu, uruchom program bez debugera i zobacz, czy Ci ten LED zmienia stan po wysyłaniu kolejnych znaków z terminala.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5291">QuadMan</a> — 10 paź 2015, o 18:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojmajster]]></name></author>
<updated>2015-10-10T17:58:58+01:00</updated>
<published>2015-10-10T17:58:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142040#p142040</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142040#p142040"/>
<title type="html"><![CDATA[Re: odbieranie stringu UART1 ST32F103C8T6]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142040#p142040"><![CDATA[
Ok czyli to jest przerwanie od odebranego znaku, więc na debugu sobie podgladam to przerwanie.<br />Wysyłam string wchodzi w przerwanie zatrzymuje sie na breakpoincie wykonuje funkcje. <br />Mam pierwszy znak stringa w elemencie 0 tablicy.<br />Robie run czekam czekam i już wiecej nie wchodzi mi w to przerwanie.<br />Gdy wyśle jeszcze raz ten tekst to oczywiście odbiorę znów pierwszą literę.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1297">wojmajster</a> — 10 paź 2015, o 17:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[QuadMan]]></name></author>
<updated>2015-10-10T17:40:04+01:00</updated>
<published>2015-10-10T17:40:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142034#p142034</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142034#p142034"/>
<title type="html"><![CDATA[Re: odbieranie stringu UART1 ST32F103C8T6]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142034#p142034"><![CDATA[
Witam ponownie.<br /><br />W buforze USART-a masz 1 znak i co przerwanie od odebranego znaku musisz go przepisać do bufora, najprościej jak się da, aby odebrać 4 znaki :<br /><br /><br />[syntax=c]void USART1_IRQHandler(void)<br />    {<br />        static uint32_t licznik;<br /><br />            if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) // Received characters modify string<br />            {<br />                   if( licznik &lt;4)<br />                  {<br />                            StringLoop&#91;licznik++&#93; = USART_ReceiveData(USART1);<br />                   }<br />            }<br />    }[/syntax]<br /><br />Pozdrawiam, QuadMan.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5291">QuadMan</a> — 10 paź 2015, o 17:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojmajster]]></name></author>
<updated>2015-10-10T17:10:56+01:00</updated>
<published>2015-10-10T17:10:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142029#p142029</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142029#p142029"/>
<title type="html"><![CDATA[Re: odbieranie stringu UART1 ST32F103C8T6]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142029#p142029"><![CDATA[
SunRiver porównywałem z Twoim poradnikiem, wypatrzyłem że nie miałem w inicjalizacji ustawionego RCC_APB2Periph_AFIO.<br />Niestety nadal nie rozwiązało to mojego problemu.<br />Możecie spojrzeć jeszcze na samo przerwanie u mnie w najprostszej wersji wygląda to tak:<br /><br />[syntax=c]void USART1_IRQHandler(void)<br />{<br />if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) // Received characters modify string<br />{<br />StringLoop&#91;0&#93; = USART_ReceiveData(USART1);<br />StringLoop&#91;1&#93; = USART_ReceiveData(USART1);<br />StringLoop&#91;2&#93; = USART_ReceiveData(USART1);<br />StringLoop&#91;3&#93; = USART_ReceiveData(USART1);<br />}<br />}[/syntax]<br /><br />Czy to powinno rozkładać odbieranego 4 elementowego stringa i upychać go do tablicy StringLoop?<br />Raczej błędu w f-cji obsługi przerwania nie ma ? chyba najprostsze co może być.<br />A efekt tego to pierwszy znak odbiera początkowy i przypisuje go na pozycję 0 1 2 i 3 w StringLoop.<br /><br />Dziękuje za wskazówki, jak wieczorem znów do tego usiąde to chyba przepisze wszystko od początku bez kopiowania.<br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1297">wojmajster</a> — 10 paź 2015, o 17:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2015-10-10T15:13:12+01:00</updated>
<published>2015-10-10T15:13:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142013#p142013</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142013#p142013"/>
<title type="html"><![CDATA[Re: odbieranie stringu UART1 ST32F103C8T6]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142013#p142013"><![CDATA[
zerknij też tutaj : <!-- m --><a class="postlink" href="http://www.sunduino.pl/wordpress/start-z-stm32-vl-discovery-6-uart/" >http://www.sunduino.pl/wordpress/start- ... ry-6-uart/</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 10 paź 2015, o 15:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojmajster]]></name></author>
<updated>2015-10-10T14:10:36+01:00</updated>
<published>2015-10-10T14:10:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142008#p142008</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142008#p142008"/>
<title type="html"><![CDATA[Re: odbieranie stringu UART1 ST32F103C8T6]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142008#p142008"><![CDATA[
Dziękuje za szybki odzew.<br />Ten sizeof zastąpiłem, ale w sumie nie on mi psuje to odbieranie.<br />Program zachowuje się tak:<br />gdy wysyłam stringa kilka literek np. &quot;las\n&quot;<br />zostaje wywołane przerwanie void USART1_IRQHandler(void)<br />mam tu breakpointa<br />sprawdzany jest warunek [syntax=c]if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)[/syntax]<br />co on dokładnie sprawdza to nie wiem, jakiś status bitów od danych przychodzących<br />warunek spełniony wtedy odczytuje bajty tu jest problem<br />wywołanie [syntax=c]USART_ReceiveData(USART1)[/syntax] zwraca pierwszy bajt stringu pierwszą literkę 'l'<br />kolejne wywołanie [syntax=c]USART_ReceiveData(USART1)[/syntax] według mnie powinno dać kolejny bajt literkę 'a', a on swoje znów pokazuje pierwszy znak w stringu 'l' <br /> i to jest problem, nie mogę pobrać kolejnych znaków ze stringu<br />Chyba tak to się robi jak opisałem? Czegoś nie ustawiam ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1297">wojmajster</a> — 10 paź 2015, o 14:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Juffre]]></name></author>
<updated>2015-10-10T12:53:59+01:00</updated>
<published>2015-10-10T12:53:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142002#p142002</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142002#p142002"/>
<title type="html"><![CDATA[Re: odbieranie stringu UART1 ST32F103C8T6]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=142002#p142002"><![CDATA[
W stringu na końcu wysyłaj zawsze określony znak. Przykładowo może to być \CR, jako terminala polecam użyć RealTerm, który z automatu dołączy Ci ten znak do wysłanego stringa. <br />W każdym przerwaniu sprawdzaj czy przypadkiem nie odebrałeś znaku \CR. Jeśli tak to zakończ odbieranie, ustaw na przykład jakąś flagę. Wtedy już wiesz, że nadawanie zostało zakończone.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=473">Juffre</a> — 10 paź 2015, o 12:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[QuadMan]]></name></author>
<updated>2015-10-10T11:48:44+01:00</updated>
<published>2015-10-10T11:48:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=141997#p141997</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=141997#p141997"/>
<title type="html"><![CDATA[Re: odbieranie stringu UART1 ST32F103C8T6]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=141997#p141997"><![CDATA[
Witam,<br /><br />przyczyną Twojego problemu jest linia:[syntax=c]if (rx_index &gt;= (sizeof(StringLoop) - 1))[/syntax] Nie da się skorzystać z operatora sizeof dla tablic wewnątrz funkcji ( to tak w skrócie - w tym wypadku policzy Ci sizeof dla wskaźnika do pierwszego elementu tablicy ). Podstaw stałą, albo wcześniej policz rozmiar i na próbę umieść w zmiennej globalnej.<br /><br />Pozdrawiam, Quadman.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5291">QuadMan</a> — 10 paź 2015, o 11:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[RafPe]]></name></author>
<updated>2015-10-10T11:46:41+01:00</updated>
<published>2015-10-10T11:46:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=141996#p141996</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=141996#p141996"/>
<title type="html"><![CDATA[Re: odbieranie stringu UART1 ST32F103C8T6]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=141996#p141996"><![CDATA[
Ciężko mi się czyta kod na komorce <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> mógłbyś zastosować maskę bitowa do zerowania index ? Czyli coś w rodzaju index=(index+1) &amp; 0x08 <br /><br />Sent from my GT-I9506 using Tapatalk<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4344">RafPe</a> — 10 paź 2015, o 11:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojmajster]]></name></author>
<updated>2015-10-10T11:37:24+01:00</updated>
<published>2015-10-10T11:37:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=141994#p141994</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=141994#p141994"/>
<title type="html"><![CDATA[Re: odbieranie stringu UART1 ST32F103C8T6]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=141994#p141994"><![CDATA[
Zapisuje i zwiększam indeks, tylko że on raz wskoczy i to wszystko(pierwsza litera ze stringu w buforze).<br />Wydaje mi się, że przydałaby się pętla do momentu wciągnięcia całego stringa do bufora.<br />Tylko z jakim warunkiem ? Czegoś sprzętowo możliwe, że nie ustawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1297">wojmajster</a> — 10 paź 2015, o 11:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[RafPe]]></name></author>
<updated>2015-10-10T11:03:52+01:00</updated>
<published>2015-10-10T11:03:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=141992#p141992</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=141992#p141992"/>
<title type="html"><![CDATA[Re: odbieranie stringu UART1 ST32F103C8T6]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=141992#p141992"><![CDATA[
Ogólnie nie patrząc na kod to musiałbyś zapisywać do bufora zwiększając index z każdym odebrany bajtem.  No i żeby wywołać jakąś akcje to ustal sobie znak jakiś który będzie wyzwalac odczyt bufora<br /><br />Sent from my GT-I9506 using Tapatalk<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4344">RafPe</a> — 10 paź 2015, o 11:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jaglarz]]></name></author>
<updated>2015-10-10T10:29:59+01:00</updated>
<published>2015-10-10T10:29:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=141985#p141985</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=141985#p141985"/>
<title type="html"><![CDATA[Re: odbieranie stringu UART1 ST32F103C8T6]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=141985#p141985"><![CDATA[
A listingów ARM to nie dotyczy?? <!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic7402.html" >topic7402.html</a><!-- l --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=471">Jaglarz</a> — 10 paź 2015, o 10:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wojmajster]]></name></author>
<updated>2015-10-10T10:53:33+01:00</updated>
<published>2015-10-10T10:16:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=141983#p141983</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=141983#p141983"/>
<title type="html"><![CDATA[odbieranie stringu UART1 ST32F103C8T6]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13178&amp;p=141983#p141983"><![CDATA[
Witam wszystkich forumowiczów,<br />niedawno zacząłem działać z stm32, aktualnie jestem na etapie odbierania stringów przez procek.<br />Działam w środowisku coocox, na podstawie dostępnych przykładów odpaliłem odbieranie w przerwaniu pojedynczych bajtów (znaków).<br />Problem napotkałem gdy chcę odebrać całego stringa, podglądam co się dzieje na debugu. <br />Następująco przerwanie od odbioru zostaje wywołane gdy puszcze danego stringa z apki na PC.<br />Następnie pobierany jest pierwszy znak i zapisywany do bufora.<br />No i na tym byłoby koniec...<br />W buforze zawsze przechowywany jest tylko pierwszy znak z tego stringa.<br /><br />Czegoś mi brakuje w kodzie zapewne, tylko nie wiem czego...<br />Siedziałem w nocy i nic jeszcze nie znalazłem na rozwiązanie problemu, a raczej to jakaś banalna sprawa.<br /><br />ostatnio testowałem na 115200 bodów poprzednio na 9600, ale to raczej nie ma znaczenia<br /><br />Miał ktoś kiedyś podobny &quot;problem&quot;? Proszę o wskazówki jak rozwiązać ten babol z odbiorem danych.<br /><br />jedna z realizacji przerwania odbiorczego...<br />[syntax=c]void USART1_IRQHandler(void)<br />{<br />static int rx_index = 0;<br />if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) // Received characters modify string<br />  {<br />    StringLoop&#91;rx_index++&#93; = USART_ReceiveData(USART1);<br /><br />    if (rx_index &gt;= (sizeof(StringLoop) - 1))<br />      rx_index = 0;<br />  }<br />}[/syntax]<br /><br />UART init prosto z przykładu coocoxowego<br />[syntax=c]void usart_init(void)<br />{<br />    const unsigned char menu&#91;&#93; = &quot; Welcome to CooCox!\r\n&quot;;<br /><br />    /* Enable USART1 and GPIOA clock */<br />    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);<br /><br />    /* NVIC Configuration */<br />    NVIC_Configuration();<br /><br /><br />    /* Configure the GPIOs */<br />    GPIO_Configuration();<br /><br />    /* Configure the USART1 */<br />    USART_Configuration();<br /><br />    /* Enable the USART1 Receive interrupt: this interrupt is generated when the<br />         USART1 receive data register is not empty */<br />    USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);<br /><br />    /* print welcome information */<br />    UARTSend(menu, sizeof(menu));<br /><br /><br /><br /> //   while(1)<br />//{<br />//}<br />}[/syntax]<br /><br />oraz konfiguracja uarta i gpio<br />[syntax=c]void GPIO_Configuration(void)<br />{<br />  GPIO_InitTypeDef GPIO_InitStructure;<br /><br />  /* Configure USART1 Tx (PA.09) as alternate function push-pull */<br />  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;<br />  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;<br />  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;<br />  GPIO_Init(GPIOA, &amp;GPIO_InitStructure);<br /><br />  /* Configure USART1 Rx (PA.10) as input floating */<br />  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;<br />  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;<br />  GPIO_Init(GPIOA, &amp;GPIO_InitStructure);<br /><br />#ifdef STM32F10X_CL<br />       /*GPIOB Configuration: TIM3 channel1, 2, 3 and 4 */<br />       GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;<br />       GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;<br />       GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;<br /><br />       GPIO_Init(GPIOC, &amp;GPIO_InitStructure);<br /><br />       GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE);<br /><br />   #else<br />       /* GPIOA Configuration:TIM3 Channel1, 2, 3 and 4 as alternate function push-pull */<br />       GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;<br />       GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;<br />       GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;<br /><br />       GPIO_Init(GPIOA, &amp;GPIO_InitStructure);<br /><br />       GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;<br />       GPIO_Init(GPIOB, &amp;GPIO_InitStructure);<br />   #endif<br /><br />}<br /><br />/*******************************************************************************<br />* Function Name  : USART_Configuration<br />* Description    : Configures the USART1.<br />* Input          : None<br />* Output         : None<br />* Return         : None<br />*******************************************************************************/<br />void USART_Configuration(void)<br />{<br />  USART_InitTypeDef USART_InitStructure;<br /><br />/* USART1 configuration ------------------------------------------------------*/<br />  /* USART1 configured as follow:<br />        - BaudRate = 115200 baud<br />        - Word Length = 8 Bits<br />        - One Stop Bit<br />        - No parity<br />        - Hardware flow control disabled (RTS and CTS signals)<br />        - Receive and transmit enabled<br />        - USART Clock disabled<br />        - USART CPOL: Clock is active low<br />        - USART CPHA: Data is captured on the middle<br />        - USART LastBit: The clock pulse of the last data bit is not output to<br />                         the SCLK pin<br />  */<br />  USART_InitStructure.USART_BaudRate = 115200;<br />  USART_InitStructure.USART_WordLength = USART_WordLength_8b;<br />  USART_InitStructure.USART_StopBits = USART_StopBits_1;<br />  USART_InitStructure.USART_Parity = USART_Parity_No;<br />  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;<br />  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;<br /><br />  USART_Init(USART1, &amp;USART_InitStructure);<br /><br />  /* Enable USART1 */<br />  USART_Cmd(USART1, ENABLE);<br />}<br /><br />/**<br />  * @brief  Configures the nested vectored interrupt controller.<br />  * @param  None<br />  * @retval None<br />  */<br />void NVIC_Configuration(void)<br />{<br />  NVIC_InitTypeDef NVIC_InitStructure;<br /><br />  /* Enable the USARTx Interrupt */<br />  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;<br />  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;<br />  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;<br />  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;<br />  NVIC_Init(&amp;NVIC_InitStructure);<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1297">wojmajster</a> — 10 paź 2015, o 10:16</p><hr />
]]></content>
</entry>
</feed>