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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-04-27T21:22:27+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=46&amp;t=15237&amp;mode</id>
<entry>
<author><name><![CDATA[PJS]]></name></author>
<updated>2016-04-27T21:22:27+01:00</updated>
<published>2016-04-27T21:22:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15237&amp;p=159500#p159500</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15237&amp;p=159500#p159500"/>
<title type="html"><![CDATA[Re: STM32 obsługa klawiatury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15237&amp;p=159500#p159500"><![CDATA[
Skoro masz:<br />[syntax=c]GPIO_KEY.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12 |GPIO_Pin_13|GPIO_Pin_14;[/syntax]<br />to chyba w tej funkcji powinno być:<br />[syntax=c]if(GPIO_ReadInputDataBit(GPIOE, 1&lt;&lt;(i+10)) == 0)[/syntax]<br />bo klawisze masz pod pin_11 do pin_14, a nie pin_1 do pin_4<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1614">PJS</a> — 27 kwi 2016, o 21:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anonimg3]]></name></author>
<updated>2016-04-27T21:21:30+01:00</updated>
<published>2016-04-27T21:21:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15237&amp;p=159499#p159499</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15237&amp;p=159499#p159499"/>
<title type="html"><![CDATA[Re: STM32 obsługa klawiatury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15237&amp;p=159499#p159499"><![CDATA[
Bo return zwróci wartość i wyjdzie z funkcji (koniec pętli)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8904">anonimg3</a> — 27 kwi 2016, o 21:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[BartekG7]]></name></author>
<updated>2016-04-27T20:53:59+01:00</updated>
<published>2016-04-27T20:53:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15237&amp;p=159497#p159497</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15237&amp;p=159497#p159497"/>
<title type="html"><![CDATA[STM32 obsługa klawiatury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15237&amp;p=159497#p159497"><![CDATA[
[syntax=cpp]#include &quot;stm32f4xx.h&quot;<br />//#include &quot;stm32f4_discovery.h&quot;<br />GPIO_InitTypeDef GPIO_LED6;<br />GPIO_InitTypeDef GPIO_LED;<br />GPIO_InitTypeDef GPIO_KEY;<br /><br />void delay(int time)<br />{<br />    int i;<br />    for (i = 0; i &lt; time * 4000; i++) {}<br />}<br /><br /><br />int getKey4(){<br /><br />    int i;<br />    for(i=0;i&lt;4;i++){                                                //Sprawdzenie stanu kalwiszy po kolei<br />        if(GPIO_ReadInputDataBit(GPIOE, 1&lt;&lt;i) == 0){    //jesli stan niski = guzik zostal nacisniety<br />            delay(70);                                                   //eliminacja drgań styków<br />            if(GPIO_ReadInputDataBit(GPIOE, 1&lt;&lt;i) == 0){<br />                return i+1;<br />            }<br />        }<br />    }<br />    return 0;<br /><br />}<br /><br />int main(void)<br />{<br />int i = 0;<br />//Ustawienie dla linijki diodowej<br />RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);<br />GPIO_LED.GPIO_Pin = GPIO_Pin_7 |GPIO_Pin_8 |GPIO_Pin_9 |GPIO_Pin_10;<br />GPIO_LED.GPIO_Mode = GPIO_Mode_OUT;<br />GPIO_LED.GPIO_OType = GPIO_OType_PP;<br />GPIO_LED.GPIO_Speed = GPIO_Speed_50MHz;<br /><br />//Ustawienia dla klawiszy   //klawisze jako wejścia z PULL UP<br />GPIO_KEY.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12 |GPIO_Pin_13|GPIO_Pin_14;<br />GPIO_KEY.GPIO_Mode = GPIO_Mode_IN;<br />GPIO_KEY.GPIO_OType = GPIO_OType_PP;<br />GPIO_KEY.GPIO_Speed = GPIO_Speed_50MHz;<br />GPIO_KEY.GPIO_PuPd = GPIO_PuPd_UP;<br /><br />//Ustawienie dla diód wbudowanych<br />RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);<br />GPIO_LED6.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;<br />GPIO_LED6.GPIO_Mode = GPIO_Mode_OUT;<br />GPIO_LED6.GPIO_OType = GPIO_OType_PP;<br />GPIO_LED6.GPIO_Speed = GPIO_Speed_50MHz;<br /><br />//incijowanie<br />GPIO_Init(GPIOE, &amp;GPIO_LED);<br />GPIO_Init(GPIOE, &amp;GPIO_KEY);<br />GPIO_Init(GPIOD, &amp;GPIO_LED6);<br /><br /><br />  while (1)<br />  {<br />  int klawisz=getKey4();<br />  switch (klawisz){<br />    case 1:<br />    {<br />     GPIO_ResetBits(GPIOE, GPIO_Pin_8 |GPIO_Pin_9 |GPIO_Pin_10 );<br />      GPIO_SetBits(GPIOE, GPIO_Pin_7);<br />     }<br />        break;<br />     case 2:<br />     {<br />     GPIO_SetBits(GPIOE, GPIO_Pin_8);<br />     GPIO_ResetBits(GPIOE, GPIO_Pin_7  |GPIO_Pin_9 |GPIO_Pin_10 );}<br />        break;<br />     case 3:<br />     {<br />     GPIO_ResetBits(GPIOE, GPIO_Pin_7 |GPIO_Pin_8 |GPIO_Pin_10 );<br />     GPIO_SetBits(GPIOE, GPIO_Pin_9);}<br />        break;<br />     case 4:<br />     {<br />      GPIO_ResetBits(GPIOE, GPIO_Pin_7 |GPIO_Pin_8  |GPIO_Pin_9  );<br />      GPIO_SetBits(GPIOE, GPIO_Pin_10);<br />                     }<br />        break;<br />}<br />   }<br />}[/syntax]<br /><br /><br />Funkcja w zamierzeniu miała zapalać odpowiednią diodę w zależności czy dany  przycisk jest wciśnięty, niestety na starcie zapala się pierwsza dioda i na nic nie reaguje. Domyślam się, że odpowiedzialna jest funkcja getKey4(), która za każdym razem zwraca 1. Prosiłbym o pomoc w rozwiązaniu tego problemu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=13446">BartekG7</a> — 27 kwi 2016, o 20:53</p><hr />
]]></content>
</entry>
</feed>