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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-10-04T14:32:28+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=46&amp;t=16380&amp;mode</id>
<entry>
<author><name><![CDATA[KosteQ95]]></name></author>
<updated>2016-10-04T14:32:28+01:00</updated>
<published>2016-10-04T14:32:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16380&amp;p=170400#p170400</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16380&amp;p=170400#p170400"/>
<title type="html"><![CDATA[Re: Atollic TrueStudio implementacja własnej biblioteki lcd]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16380&amp;p=170400#p170400"><![CDATA[
Dzięki za podpowiedzi po usilnych staraniach w końcu mi się udało <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Tak dla potomnych<br /><br /> Plik LCD.c:<br /><br />[syntax=c]/*<br /> * HAL_LCD_NOKIA.c<br /> *<br /> *  Created on: Oct 3, 2016<br /> *      Author: KosteQ<br /> */<br /><br />#include &quot;stm32f4xx_hal.h&quot;<br />#include &quot;HAL_LCD_NOKIA.h&quot;<br /><br /><br />const unsigned char font&#91;&#93; = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5f,0x00,0x00,0x00,0x00,0x07,0x00,0x07,<br />0x00,0x00,0x14,0x7f,0x14,0x7f,0x14,0x00,0x24,0x2a,0x7f,0x2a,0x12,0x00,0x23,0x13,<br />0x08,0x64,0x62,0x00,0x36,0x49,0x55,0x22,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,<br />0x00,0x1c,0x22,0x41,0x00,0x00,0x00,0x41,0x22,0x1c,0x00,0x00,0x14,0x08,0x3e,0x08,<br />0x14,0x00,0x08,0x08,0x3e,0x08,0x08,0x00,0x00,0x50,0x30,0x00,0x00,0x00,0x08,0x08,<br />0x08,0x08,0x08,0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x00,<br />0x3e,0x51,0x49,0x45,0x3e,0x00,0x00,0x42,0x7f,0x40,0x00,0x00,0x42,0x61,0x51,0x49,<br />0x46,0x00,0x21,0x41,0x45,0x4b,0x31,0x00,0x18,0x14,0x12,0x7f,0x10,0x00,0x27,0x45,<br />0x45,0x45,0x39,0x00,0x3c,0x4a,0x49,0x49,0x30,0x00,0x03,0x71,0x09,0x05,0x03,0x00,<br />0x36,0x49,0x49,0x49,0x36,0x00,0x06,0x49,0x49,0x29,0x1e,0x00,0x00,0x36,0x36,0x00,<br />0x00,0x00,0x00,0x56,0x36,0x00,0x00,0x00,0x08,0x14,0x22,0x41,0x00,0x00,0x14,0x14,<br />0x14,0x14,0x14,0x00,0x00,0x41,0x22,0x14,0x08,0x00,0x02,0x01,0x51,0x09,0x06,0x00,<br />0x32,0x49,0x79,0x41,0x3e,0x00,0x7e,0x11,0x11,0x11,0x7e,0x00,0x7f,0x49,0x49,0x49,<br />0x36,0x00,0x3e,0x41,0x41,0x41,0x22,0x00,0x7f,0x41,0x41,0x41,0x3e,0x00,0x7f,0x49,<br />0x49,0x49,0x41,0x00,0x7f,0x09,0x09,0x09,0x01,0x00,0x3e,0x41,0x41,0x49,0x7a,0x00,<br />0x7f,0x08,0x08,0x08,0x7f,0x00,0x00,0x41,0x7f,0x41,0x00,0x00,0x20,0x40,0x41,0x3f,<br />0x01,0x00,0x7f,0x08,0x14,0x22,0x41,0x00,0x7f,0x40,0x40,0x40,0x40,0x00,0x7f,0x02,<br />0x0c,0x02,0x7f,0x00,0x7f,0x04,0x08,0x10,0x7f,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,<br />0x7f,0x09,0x09,0x09,0x06,0x00,0x3e,0x41,0x51,0x21,0x5e,0x00,0x7f,0x09,0x19,0x29,<br />0x46,0x00,0x46,0x49,0x49,0x49,0x31,0x00,0x01,0x01,0x7f,0x01,0x01,0x00,0x3f,0x40,<br />0x40,0x40,0x3f,0x00,0x1f,0x20,0x40,0x20,0x1f,0x00,0x3f,0x40,0x38,0x40,0x3f,0x00,<br />0x63,0x14,0x08,0x14,0x63,0x00,0x07,0x08,0x70,0x08,0x07,0x00,0x61,0x51,0x49,0x45,<br />0x43,0x00,0x00,0x7f,0x41,0x41,0x00,0x00,0x02,0x04,0x08,0x10,0x20,0x00,0x00,0x41,<br />0x41,0x7f,0x00,0x00,0x04,0x02,0x01,0x02,0x04,0x00,0x40,0x40,0x40,0x40,0x40,0x00,<br />0x00,0x01,0x02,0x04,0x00,0x00,0x20,0x54,0x54,0x54,0x78,0x00,0x7f,0x48,0x44,0x44,<br />0x38,0x00,0x38,0x44,0x44,0x44,0x20,0x00,0x38,0x44,0x44,0x48,0x7f,0x00,0x38,0x54,<br />0x54,0x54,0x18,0x00,0x08,0x7e,0x09,0x01,0x02,0x00,0x18,0xa4,0xa4,0xa4,0x7c,0x00,<br />0x7f,0x08,0x04,0x04,0x78,0x00,0x00,0x48,0x7d,0x40,0x00,0x00,0x00,0x00,0x84,0x7d,<br />0x00,0x00,0x7f,0x10,0x28,0x44,0x00,0x00,0x00,0x41,0x7f,0x40,0x00,0x00,0x7c,0x04,<br />0x78,0x04,0x78,0x00,0x7c,0x08,0x04,0x04,0x78,0x00,0x38,0x44,0x44,0x44,0x38,0x00,<br />0xfc,0x24,0x24,0x24,0x18,0x00,0x18,0x24,0x24,0x28,0xfc,0x00,0x7c,0x08,0x04,0x04,<br />0x08,0x00,0x48,0x54,0x54,0x54,0x20,0x00,0x04,0x3f,0x44,0x40,0x20,0x00,0x3c,0x40,<br />0x40,0x20,0x7c,0x00,0x1c,0x20,0x40,0x20,0x1c,0x00,0x3c,0x40,0x30,0x40,0x3c,0x00,<br />0x44,0x28,0x10,0x28,0x44,0x00,0x1c,0xa0,0xa0,0xa0,0x7c,0x00,0x44,0x64,0x54,0x4c,<br />0x44,0x00,0x00,0x08,0x36,0x41,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0x00,0x00,0x41,<br />0x36,0x08,0x00,0x00,0x10,0x08,0x08,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,<br />0x20,0x54,0x54,0xd4,0x78,0x00,0x38,0x44,0x46,0x45,0x20,0x00,0x38,0x54,0x54,0xd4,<br />0x18,0x00,0x00,0x49,0x7f,0x44,0x00,0x00,0x7c,0x08,0x06,0x05,0x78,0x00,0x38,0x44,<br />0x46,0x45,0x38,0x00,0x48,0x54,0x56,0x55,0x20,0x00,0x44,0x64,0x56,0x4d,0x44,0x00,<br />0x44,0x64,0x55,0x4c,0x44,0x00,0x7e,0x11,0x11,0x91,0x7e,0x00,0x3c,0x42,0x46,0x43,<br />0x24,0x00,0x7f,0x49,0x49,0xc9,0x41,0x00,0x7f,0x50,0x48,0x44,0x40,0x00,0x7e,0x04,<br />0x0b,0x10,0x7e,0x00,0x3c,0x42,0x46,0x43,0x3c,0x00,0x4c,0x52,0x56,0x53,0x22,0x00,<br />0x42,0x66,0x53,0x4a,0x46,0x00,0x42,0x62,0x53,0x4a,0x46,0x00,0x00,0x00,0x00,0x00,<br />0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,<br />0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,<br />0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,<br />0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,<br />0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00<br />};<br /><br /><br />void lcd_init(void){<br /><br /><br />LCD_RST_CLR;<br />HAL_Delay(20);<br />LCD_RST_SET;<br />    LCD_CE_SET;<br />    lcd_write_byte(LCD_CMD, 0x21); // Function set - extended instruction set<br />    lcd_write_byte(LCD_CMD, 0x13); // Bias - 1:48<br />    lcd_write_byte(LCD_CMD, 0x06); // Temperature Control<br />    lcd_write_byte(LCD_CMD, 0xa5); // Set Vop<br />    lcd_write_byte(LCD_CMD, 0x20); // Function set - basic instruction set, horizontal addressing<br />    lcd_write_byte(LCD_CMD, 0x0C); // Display control - normal mode<br />}<br /><br />void lcd_write_byte(unsigned char c_d, unsigned char data ){<br />    unsigned char m;<br />    LCD_CE_CLR;<br /><br />    if(c_d) LCD_DC_SET; else LCD_DC_CLR;<br /><br />    for(m=0x80; m; m&gt;&gt;=1)<br />    {<br />       if(data &amp; m)<br />          LCD_DATA_SET;<br />       else<br />          LCD_DATA_CLR;<br /><br />       LCD_CLK_SET;<br />       for(int i=0; i&lt;200; i++){<br /><br />       }<br />       LCD_CLK_CLR;<br />    }<br />    LCD_CE_SET;<br />}<br /><br />void lcd_image(const unsigned char s&#91;&#93;,char  x, char y, char w, char h){<br />   unsigned int i,j,k;<br /><br />   for(i=0,j=0,k=0; i&lt;h; i++)<br />   {<br />      lcd_write_byte(LCD_CMD, 0x40|(i+y));<br />      lcd_write_byte(LCD_CMD, 0x80|(x));<br /><br />     for(j=0; j&lt;w ; j++,k++){<br />       lcd_write_byte(LCD_DATA, (s&#91;k&#93;));<br /> }<br />   }<br />}<br /><br />void lcd_text(char s&#91;&#93;, unsigned char x, unsigned char y)<br />{<br />   unsigned int c,j;<br />   unsigned char i,k;<br /><br />   // Kody polskich literek z ogonkami<br />   char pl&#91;&#93; = {'ą','ć','ę','ł','ń','ó','ś','ź','ż','Ą','Ć','Ę','Ł','Ń','Ó','Ś','Ź','Ż'};<br /><br />   // Ustawia położenia pierwszej litery tekstu na ekranie LCD<br />   lcd_write_byte(LCD_CMD, LCD_SETY|(y));<br />   lcd_write_byte(LCD_CMD, LCD_SETX|(x));<br /><br />   // Rysuje znak po znaku<br />   for(k=0; (c = s&#91;k&#93;); k++)<br />   {<br />      // Dopasowuje kody znaków z ogonkami<br />     for(i=0; (i&lt;18) &amp;&amp; (pl&#91;i&#93;!=c); i++) ;<br />     if(i&lt;18) c= 0x80+i;<br /><br />      // Kopiuje jeden znak(6x8) z FLASH do pamięci obrazu LCD<br />      for(i=0, j=(c-32)*6; i&lt;6; i++,j++)<br />           lcd_write_byte(LCD_DATA, (font&#91;j&#93;));<br />   }<br />}<br /><br />void lcd_clear(void){<br />    unsigned char  i,j;<br /><br />    LCD_HOME;<br /><br />    for(i=0; i&lt;LCD_Y; i++)<br />    {<br />        LCD_GOTO(0, i);<br />        for(j=0; j&lt;LCD_X; j++)<br />       lcd_write_byte(LCD_DATA, 0x00);<br />    }<br /><br />    LCD_HOME;<br />}<br /><br />void lcd_scroll(unsigned char txt&#91;&#93;, unsigned char line, unsigned int czas)<br />{<br />   unsigned int j,l,k,n,m;<br />   unsigned char c,i;<br /><br />   // Kody polskich literek z ogonkami<br />   unsigned char pl&#91;&#93; = {'ą','ć','ę','ł','ń','ó','ś','ź','ż','Ą','Ć','Ę','Ł','Ń','Ó','Ś','Ź','Ż'};<br /><br />   // liczenie znaków w tekście<br />   for(n=0;(txt&#91;n&#93;);n++);<br /><br />   for(j=0; j&lt;(n-(LCD_X/6))*6 ;j++)<br />   {<br />      LCD_GOTO(0, line);<br /><br />      for(i=0,l=j; i&lt;LCD_X ;i++,l++)<br />      {<br />      c = (txt&#91; (l/6) &#93;);<br /><br />          // Dopasowuje kody polskich znaków z ogonkami<br />          for(m=0; (m&lt;18) &amp;&amp; (pl&#91;m&#93;!=c); m++) ;<br />          if(m&lt;18) c= 0x80+m;<br /><br />      k = (c-32)*6+(l%6);<br /><br />      lcd_write_byte(LCD_DATA, (font&#91;k&#93;));<br />      }<br />      HAL_Delay(czas);<br />   }<br />}[/syntax]<br /><br />LCD.h:<br /><br />[syntax=c]/*<br /> * HAL_LCD_NOKIA.h<br /> *<br /> *  Created on: Oct 3, 2016<br /> *      Author: KosteQ<br /> */<br /><br />#ifndef HAL_LCD_NOKIA_H_<br />#define HAL_LCD_NOKIA_H_<br /><br />#define LCD_X 84<br />#define LCD_Y 6<br /><br />#define LCD_CLK_SET HAL_GPIO_WritePin(LCD_CLK_GPIO_Port, LCD_CLK_Pin, GPIO_PIN_SET)<br />#define LCD_CLK_CLRHAL_GPIO_WritePin(LCD_CLK_GPIO_Port, LCD_CLK_Pin, GPIO_PIN_RESET)<br /><br />#define LCD_DATA_SET HAL_GPIO_WritePin(LCD_DATA_GPIO_Port, LCD_DATA_Pin, GPIO_PIN_SET)<br />#define LCD_DATA_CLR HAL_GPIO_WritePin(LCD_DATA_GPIO_Port, LCD_DATA_Pin, GPIO_PIN_RESET)<br /><br />#define LCD_DC_SET HAL_GPIO_WritePin(LCD_DC_GPIO_Port, LCD_DC_Pin, GPIO_PIN_SET)<br />#define LCD_DC_CLR HAL_GPIO_WritePin(LCD_DC_GPIO_Port, LCD_DC_Pin, GPIO_PIN_RESET)<br /><br />#define LCD_CE_SET HAL_GPIO_WritePin(LCD_CE_GPIO_Port, LCD_CE_Pin, GPIO_PIN_SET)<br />#define LCD_CE_CLR HAL_GPIO_WritePin(LCD_CE_GPIO_Port, LCD_CE_Pin, GPIO_PIN_RESET)<br /><br />#define LCD_RST_SET HAL_GPIO_WritePin(LCD_RST_GPIO_Port, LCD_RST_Pin, GPIO_PIN_SET)<br />#define LCD_RST_CLRHAL_GPIO_WritePin(LCD_RST_GPIO_Port, LCD_RST_Pin, GPIO_PIN_RESET)<br /><br />#define LCD_CMD0<br />#define LCD_DATA 1<br /><br />#define LCD_SETX  0x80<br />#define LCD_SETY  0x40<br /><br />#define LCD_HOME lcd_write_byte(0, 0x40);lcd_write_byte(0, 0x80)<br />#define LCD_GOTO(x,y) lcd_write_byte(0, 0x40|(y));lcd_write_byte(0, 0x80|(x))<br /><br /><br /><br />void lcd_init(void);<br />void lcd_clear(void);<br />void lcd_write_byte(unsigned char, unsigned char);<br />void lcd_text(char&#91;&#93;, unsigned char, unsigned char);<br />void lcd_image(const unsigned char&#91;&#93;, char, char, char, char);<br />void lcd_text(char&#91;&#93;, unsigned char , unsigned char );<br />void lcd_scroll(unsigned char&#91;&#93;, unsigned char, unsigned int);<br /><br />#endif /* HAL_LCD_NOKIA_H_ */[/syntax]<br /><br />Struktura projektu:<br /><a href="https://obrazkiforum.atnel.pl/10817/0fc1fd178b63fee67f6f35a87c7f5f1d.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/10817/0fc1fd178b63fee67f6f35a87c7f5f1d.png" alt="Obrazek" /></a><br /><br />Efekt:<br /><a href="https://obrazkiforum.atnel.pl/10817/dcfaf2ad36e0a42eb06f1a1f0bf04478.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/10817/dcfaf2ad36e0a42eb06f1a1f0bf04478.jpg" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10817">KosteQ95</a> — 4 paź 2016, o 14:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Sparrow-hawk]]></name></author>
<updated>2016-10-04T07:32:54+01:00</updated>
<published>2016-10-04T07:32:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16380&amp;p=170368#p170368</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16380&amp;p=170368#p170368"/>
<title type="html"><![CDATA[Re: Atollic TrueStudio implementacja własnej biblioteki lcd]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16380&amp;p=170368#p170368"><![CDATA[
W pliku LCD.c brakuje Ci: [syntax=c]#include &quot;stm32f4xx_hal.h&quot;[/syntax] Zresztą ten include możesz uzależnić od wybranej platformy, tak aby biblioteka była bardziej przenośna. Brakuje Ci też tablicy font, która powinna być zadeklarowana jako const.<br /><div class="quotetitle">KosteQ95 napisał(a):</div><div class="quotecontent"><br />I tu wiąże się pytanie jak podpiąć własną bibliotekę pod linkowane pliki projektu z CubeMx<br /></div>Nie bardzo wiem, o co ci chodzi? Przecież jeśli stworzysz nowy projekt w oparciu o HAL, to będzie on zawierał w sobie właściwe ścieżki. Twoja biblioteka nie powinna zawierać ścieżek bezwzględnych do HAL, czy też jakichkolwiek plików z tej biblioteki.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10614">Sparrow-hawk</a> — 4 paź 2016, o 07:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[KosteQ95]]></name></author>
<updated>2016-10-03T17:09:17+01:00</updated>
<published>2016-10-03T17:09:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16380&amp;p=170334#p170334</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16380&amp;p=170334#p170334"/>
<title type="html"><![CDATA[Atollic TrueStudio implementacja własnej biblioteki lcd]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16380&amp;p=170334#p170334"><![CDATA[
Witam przeportowałem program do obsługi LCD z Nokii3310 pod HAL'a, wszystko ładnie działa ale gdy chce utworzyć sobie bibliotekę mam problemy z linkerem. I tu wiąże się pytanie jak podpiąć własną bibliotekę pod linkowane pliki projektu z CubeMx (linkowane = pliki projektu są w innym miejscu niż workspace a podpięte do workspace są tylko ściezki do plików). <br /><br /><br />Kod w jednym pliku prezentuje się tak:<br />[syntax=c]/**<br />  ******************************************************************************<br />  * File Name          : main.c<br />  * Description        : Main program body<br />  ******************************************************************************<br />  *<br />  * COPYRIGHT(c) 2016 STMicroelectronics<br />  *<br />  * Redistribution and use in source and binary forms, with or without modification,<br />  * are permitted provided that the following conditions are met:<br />  *   1. Redistributions of source code must retain the above copyright notice,<br />  *      this list of conditions and the following disclaimer.<br />  *   2. Redistributions in binary form must reproduce the above copyright notice,<br />  *      this list of conditions and the following disclaimer in the documentation<br />  *      and/or other materials provided with the distribution.<br />  *   3. Neither the name of STMicroelectronics nor the names of its contributors<br />  *      may be used to endorse or promote products derived from this software<br />  *      without specific prior written permission.<br />  *<br />  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;<br />  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE<br />  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE<br />  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE<br />  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL<br />  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR<br />  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER<br />  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,<br />  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE<br />  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.<br />  *<br />  ******************************************************************************<br />  */<br />/* Includes ------------------------------------------------------------------*/<br />#include &quot;stm32f4xx_hal.h&quot;<br /><br />/* USER CODE BEGIN Includes */<br />#define LCD_X 84<br />#define LCD_Y 6<br /><br />#define LCD_CLK_SET HAL_GPIO_WritePin(LCD_CLK_GPIO_Port, LCD_CLK_Pin, GPIO_PIN_SET)<br />#define LCD_CLK_CLRHAL_GPIO_WritePin(LCD_CLK_GPIO_Port, LCD_CLK_Pin, GPIO_PIN_RESET)<br /><br />#define LCD_DATA_SET HAL_GPIO_WritePin(LCD_DATA_GPIO_Port, LCD_DATA_Pin, GPIO_PIN_SET)<br />#define LCD_DATA_CLR HAL_GPIO_WritePin(LCD_DATA_GPIO_Port, LCD_DATA_Pin, GPIO_PIN_RESET)<br /><br />#define LCD_DC_SET HAL_GPIO_WritePin(LCD_DC_GPIO_Port, LCD_DC_Pin, GPIO_PIN_SET)<br />#define LCD_DC_CLR HAL_GPIO_WritePin(LCD_DC_GPIO_Port, LCD_DC_Pin, GPIO_PIN_RESET)<br /><br />#define LCD_CE_SET HAL_GPIO_WritePin(LCD_CE_GPIO_Port, LCD_CE_Pin, GPIO_PIN_SET)<br />#define LCD_CE_CLR HAL_GPIO_WritePin(LCD_CE_GPIO_Port, LCD_CE_Pin, GPIO_PIN_RESET)<br /><br />#define LCD_RST_SET HAL_GPIO_WritePin(LCD_RST_GPIO_Port, LCD_RST_Pin, GPIO_PIN_SET)<br />#define LCD_RST_CLRHAL_GPIO_WritePin(LCD_RST_GPIO_Port, LCD_RST_Pin, GPIO_PIN_RESET)<br /><br />#define LCD_CMD0<br />#define LCD_DATA 1<br /><br />#define LCD_SETX  0x80<br />#define LCD_SETY  0x40<br /><br />#define LCD_HOME lcd_write_byte(0, 0x40);lcd_write_byte(0, 0x80)<br />#define LCD_GOTO(x,y) lcd_write_byte(0, 0x40|(y));lcd_write_byte(0, 0x80|(x))<br />/* USER CODE END Includes */<br /><br />/* Private variables ---------------------------------------------------------*/<br /><br />/* USER CODE BEGIN PV */<br />/* Private variables ---------------------------------------------------------*/<br />unsigned char font&#91;&#93; = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5f,0x00,0x00,0x00,0x00,0x07,0x00,0x07,<br />0x00,0x00,0x14,0x7f,0x14,0x7f,0x14,0x00,0x24,0x2a,0x7f,0x2a,0x12,0x00,0x23,0x13,<br />0x08,0x64,0x62,0x00,0x36,0x49,0x55,0x22,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,<br />0x00,0x1c,0x22,0x41,0x00,0x00,0x00,0x41,0x22,0x1c,0x00,0x00,0x14,0x08,0x3e,0x08,<br />0x14,0x00,0x08,0x08,0x3e,0x08,0x08,0x00,0x00,0x50,0x30,0x00,0x00,0x00,0x08,0x08,<br />0x08,0x08,0x08,0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x00,<br />0x3e,0x51,0x49,0x45,0x3e,0x00,0x00,0x42,0x7f,0x40,0x00,0x00,0x42,0x61,0x51,0x49,<br />0x46,0x00,0x21,0x41,0x45,0x4b,0x31,0x00,0x18,0x14,0x12,0x7f,0x10,0x00,0x27,0x45,<br />0x45,0x45,0x39,0x00,0x3c,0x4a,0x49,0x49,0x30,0x00,0x03,0x71,0x09,0x05,0x03,0x00,<br />0x36,0x49,0x49,0x49,0x36,0x00,0x06,0x49,0x49,0x29,0x1e,0x00,0x00,0x36,0x36,0x00,<br />0x00,0x00,0x00,0x56,0x36,0x00,0x00,0x00,0x08,0x14,0x22,0x41,0x00,0x00,0x14,0x14,<br />0x14,0x14,0x14,0x00,0x00,0x41,0x22,0x14,0x08,0x00,0x02,0x01,0x51,0x09,0x06,0x00,<br />0x32,0x49,0x79,0x41,0x3e,0x00,0x7e,0x11,0x11,0x11,0x7e,0x00,0x7f,0x49,0x49,0x49,<br />0x36,0x00,0x3e,0x41,0x41,0x41,0x22,0x00,0x7f,0x41,0x41,0x41,0x3e,0x00,0x7f,0x49,<br />0x49,0x49,0x41,0x00,0x7f,0x09,0x09,0x09,0x01,0x00,0x3e,0x41,0x41,0x49,0x7a,0x00,<br />0x7f,0x08,0x08,0x08,0x7f,0x00,0x00,0x41,0x7f,0x41,0x00,0x00,0x20,0x40,0x41,0x3f,<br />0x01,0x00,0x7f,0x08,0x14,0x22,0x41,0x00,0x7f,0x40,0x40,0x40,0x40,0x00,0x7f,0x02,<br />0x0c,0x02,0x7f,0x00,0x7f,0x04,0x08,0x10,0x7f,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,<br />0x7f,0x09,0x09,0x09,0x06,0x00,0x3e,0x41,0x51,0x21,0x5e,0x00,0x7f,0x09,0x19,0x29,<br />0x46,0x00,0x46,0x49,0x49,0x49,0x31,0x00,0x01,0x01,0x7f,0x01,0x01,0x00,0x3f,0x40,<br />0x40,0x40,0x3f,0x00,0x1f,0x20,0x40,0x20,0x1f,0x00,0x3f,0x40,0x38,0x40,0x3f,0x00,<br />0x63,0x14,0x08,0x14,0x63,0x00,0x07,0x08,0x70,0x08,0x07,0x00,0x61,0x51,0x49,0x45,<br />0x43,0x00,0x00,0x7f,0x41,0x41,0x00,0x00,0x02,0x04,0x08,0x10,0x20,0x00,0x00,0x41,<br />0x41,0x7f,0x00,0x00,0x04,0x02,0x01,0x02,0x04,0x00,0x40,0x40,0x40,0x40,0x40,0x00,<br />0x00,0x01,0x02,0x04,0x00,0x00,0x20,0x54,0x54,0x54,0x78,0x00,0x7f,0x48,0x44,0x44,<br />0x38,0x00,0x38,0x44,0x44,0x44,0x20,0x00,0x38,0x44,0x44,0x48,0x7f,0x00,0x38,0x54,<br />0x54,0x54,0x18,0x00,0x08,0x7e,0x09,0x01,0x02,0x00,0x18,0xa4,0xa4,0xa4,0x7c,0x00,<br />0x7f,0x08,0x04,0x04,0x78,0x00,0x00,0x48,0x7d,0x40,0x00,0x00,0x00,0x00,0x84,0x7d,<br />0x00,0x00,0x7f,0x10,0x28,0x44,0x00,0x00,0x00,0x41,0x7f,0x40,0x00,0x00,0x7c,0x04,<br />0x78,0x04,0x78,0x00,0x7c,0x08,0x04,0x04,0x78,0x00,0x38,0x44,0x44,0x44,0x38,0x00,<br />0xfc,0x24,0x24,0x24,0x18,0x00,0x18,0x24,0x24,0x28,0xfc,0x00,0x7c,0x08,0x04,0x04,<br />0x08,0x00,0x48,0x54,0x54,0x54,0x20,0x00,0x04,0x3f,0x44,0x40,0x20,0x00,0x3c,0x40,<br />0x40,0x20,0x7c,0x00,0x1c,0x20,0x40,0x20,0x1c,0x00,0x3c,0x40,0x30,0x40,0x3c,0x00,<br />0x44,0x28,0x10,0x28,0x44,0x00,0x1c,0xa0,0xa0,0xa0,0x7c,0x00,0x44,0x64,0x54,0x4c,<br />0x44,0x00,0x00,0x08,0x36,0x41,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0x00,0x00,0x41,<br />0x36,0x08,0x00,0x00,0x10,0x08,0x08,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,<br />0x20,0x54,0x54,0xd4,0x78,0x00,0x38,0x44,0x46,0x45,0x20,0x00,0x38,0x54,0x54,0xd4,<br />0x18,0x00,0x00,0x49,0x7f,0x44,0x00,0x00,0x7c,0x08,0x06,0x05,0x78,0x00,0x38,0x44,<br />0x46,0x45,0x38,0x00,0x48,0x54,0x56,0x55,0x20,0x00,0x44,0x64,0x56,0x4d,0x44,0x00,<br />0x44,0x64,0x55,0x4c,0x44,0x00,0x7e,0x11,0x11,0x91,0x7e,0x00,0x3c,0x42,0x46,0x43,<br />0x24,0x00,0x7f,0x49,0x49,0xc9,0x41,0x00,0x7f,0x50,0x48,0x44,0x40,0x00,0x7e,0x04,<br />0x0b,0x10,0x7e,0x00,0x3c,0x42,0x46,0x43,0x3c,0x00,0x4c,0x52,0x56,0x53,0x22,0x00,<br />0x42,0x66,0x53,0x4a,0x46,0x00,0x42,0x62,0x53,0x4a,0x46,0x00,0x00,0x00,0x00,0x00,<br />0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,<br />0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,<br />0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,<br />0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,<br />0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00<br />};<br />/* USER CODE END PV */<br /><br />/* Private function prototypes -----------------------------------------------*/<br />void SystemClock_Config(void);<br />void Error_Handler(void);<br />static void MX_GPIO_Init(void);<br /><br />/* USER CODE BEGIN PFP */<br />/* Private function prototypes -----------------------------------------------*/<br /><br />void lcd_init(void);<br />void lcd_clear(void);<br />void lcd_write_byte(unsigned char, unsigned char);<br />void lcd_text(char&#91;&#93;, unsigned char, unsigned char);<br />void lcd_image(const unsigned char&#91;&#93;, char, char, char, char);<br />void lcd_text(char&#91;&#93;, unsigned char , unsigned char );<br />void lcd_scroll(unsigned char&#91;&#93;, unsigned char, unsigned int);<br /><br />/* USER CODE END PFP */<br /><br />/* USER CODE BEGIN 0 */<br /><br />/* USER CODE END 0 */<br /><br />int main(void)<br />{<br /><br />  /* USER CODE BEGIN 1 */<br /><br />  /* USER CODE END 1 */<br /><br />  /* MCU Configuration----------------------------------------------------------*/<br /><br />  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */<br />  HAL_Init();<br /><br />  /* Configure the system clock */<br />  SystemClock_Config();<br /><br />  /* Initialize all configured peripherals */<br />  MX_GPIO_Init();<br /><br />  /* USER CODE BEGIN 2 */<br />  lcd_init();<br />  lcd_clear();<br /><br />  lcd_text(&quot;Programowanie&quot;, 3, 0);<br />  lcd_text(&quot;Nucleo F446RE&quot;, 1*6, 1);<br />  lcd_text(&quot;i wyświetlacz&quot;, 1*6, 3);<br />  lcd_text(&quot;od Nokii 3310&quot;, 0*6, 4);<br />  lcd_text(&quot;Pozdr KosteQ&quot;, 1*6, 5);<br /><br />  /* USER CODE END 2 */<br /><br />  /* Infinite loop */<br />  /* USER CODE BEGIN WHILE */<br />  while (1)<br />  {<br />  HAL_GPIO_TogglePin(LD2_GPIO_Port,LD2_Pin);<br />  HAL_Delay(1000);<br />  /* USER CODE END WHILE */<br /><br />  /* USER CODE BEGIN 3 */<br /><br />  }<br />  /* USER CODE END 3 */<br /><br />}<br /><br />/** System Clock Configuration<br />*/<br />void SystemClock_Config(void)<br />{<br /><br />  RCC_OscInitTypeDef RCC_OscInitStruct;<br />  RCC_ClkInitTypeDef RCC_ClkInitStruct;<br /><br />  __HAL_RCC_PWR_CLK_ENABLE();<br /><br />  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);<br /><br />  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;<br />  RCC_OscInitStruct.HSIState = RCC_HSI_ON;<br />  RCC_OscInitStruct.HSICalibrationValue = 16;<br />  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;<br />  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;<br />  RCC_OscInitStruct.PLL.PLLM = 8;<br />  RCC_OscInitStruct.PLL.PLLN = 180;<br />  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;<br />  RCC_OscInitStruct.PLL.PLLQ = 2;<br />  RCC_OscInitStruct.PLL.PLLR = 2;<br />  if (HAL_RCC_OscConfig(&amp;RCC_OscInitStruct) != HAL_OK)<br />  {<br />    Error_Handler();<br />  }<br /><br />  if (HAL_PWREx_EnableOverDrive() != HAL_OK)<br />  {<br />    Error_Handler();<br />  }<br /><br />  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK<br />                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;<br />  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;<br />  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;<br />  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;<br />  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;<br />  if (HAL_RCC_ClockConfig(&amp;RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK)<br />  {<br />    Error_Handler();<br />  }<br /><br />  HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);<br /><br />  HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);<br /><br />  /* SysTick_IRQn interrupt configuration */<br />  HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);<br />}<br /><br />/** Configure pins as <br />        * Analog <br />        * Input <br />        * Output<br />        * EVENT_OUT<br />        * EXTI<br />     PA2   ------&gt; USART2_TX<br />     PA3   ------&gt; USART2_RX<br />*/<br />static void MX_GPIO_Init(void)<br />{<br /><br />  GPIO_InitTypeDef GPIO_InitStruct;<br /><br />  /* GPIO Ports Clock Enable */<br />  __HAL_RCC_GPIOC_CLK_ENABLE();<br />  __HAL_RCC_GPIOH_CLK_ENABLE();<br />  __HAL_RCC_GPIOA_CLK_ENABLE();<br />  __HAL_RCC_GPIOB_CLK_ENABLE();<br /><br />  /*Configure GPIO pin : BUTTON_Pin */<br />  GPIO_InitStruct.Pin = BUTTON_Pin;<br />  GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;<br />  GPIO_InitStruct.Pull = GPIO_NOPULL;<br />  HAL_GPIO_Init(BUTTON_GPIO_Port, &amp;GPIO_InitStruct);<br /><br />  /*Configure GPIO pins : LCD_DC_Pin LCD_CE_Pin LCD_CLK_Pin LCD_DATA_Pin */<br />  GPIO_InitStruct.Pin = LCD_DC_Pin|LCD_CE_Pin|LCD_CLK_Pin|LCD_DATA_Pin;<br />  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;<br />  GPIO_InitStruct.Pull = GPIO_NOPULL;<br />  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;<br />  HAL_GPIO_Init(GPIOC, &amp;GPIO_InitStruct);<br /><br />  /*Configure GPIO pins : USART_TX_Pin USART_RX_Pin */<br />  GPIO_InitStruct.Pin = USART_TX_Pin|USART_RX_Pin;<br />  GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;<br />  GPIO_InitStruct.Pull = GPIO_NOPULL;<br />  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;<br />  GPIO_InitStruct.Alternate = GPIO_AF7_USART2;<br />  HAL_GPIO_Init(GPIOA, &amp;GPIO_InitStruct);<br /><br />  /*Configure GPIO pins : LCD_RST_Pin LD2_Pin */<br />  GPIO_InitStruct.Pin = LCD_RST_Pin|LD2_Pin;<br />  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;<br />  GPIO_InitStruct.Pull = GPIO_NOPULL;<br />  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;<br />  HAL_GPIO_Init(GPIOA, &amp;GPIO_InitStruct);<br /><br />  /*Configure GPIO pin Output Level */<br />  HAL_GPIO_WritePin(GPIOC, LCD_DC_Pin|LCD_CE_Pin|LCD_CLK_Pin|LCD_DATA_Pin, GPIO_PIN_RESET);<br /><br />  /*Configure GPIO pin Output Level */<br />  HAL_GPIO_WritePin(GPIOA, LCD_RST_Pin|LD2_Pin, GPIO_PIN_RESET);<br /><br />  /* EXTI interrupt init*/<br />  HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0);<br />  HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);<br /><br />}<br /><br />/* USER CODE BEGIN 4 */<br />void lcd_init(void){<br /><br /><br />LCD_RST_CLR;<br />HAL_Delay(20);<br />LCD_RST_SET;<br />    LCD_CE_SET;<br />    lcd_write_byte(LCD_CMD, 0x21); // Function set - extended instruction set<br />    lcd_write_byte(LCD_CMD, 0x13); // Bias - 1:48<br />    lcd_write_byte(LCD_CMD, 0x06); // Temperature Control<br />    lcd_write_byte(LCD_CMD, 0xa5); // Set Vop<br />    lcd_write_byte(LCD_CMD, 0x20); // Function set - basic instruction set, horizontal addressing<br />    lcd_write_byte(LCD_CMD, 0x0C); // Display control - normal mode<br />}<br /><br />void lcd_write_byte(unsigned char c_d, unsigned char data ){<br />    unsigned char m;<br />    LCD_CE_CLR;<br /><br />    if(c_d) LCD_DC_SET; else LCD_DC_CLR;<br /><br />    for(m=0x80; m; m&gt;&gt;=1)<br />    {<br />       if(data &amp; m)<br />          LCD_DATA_SET;<br />       else<br />          LCD_DATA_CLR;<br /><br />       LCD_CLK_SET;<br />       for(int i=0; i&lt;200; i++){<br /><br />       }<br />       LCD_CLK_CLR;<br />    }<br />    LCD_CE_SET;<br />}<br /><br />void lcd_image(const unsigned char s&#91;&#93;,char  x, char y, char w, char h){<br />   unsigned int i,j,k;<br /><br />   for(i=0,j=0,k=0; i&lt;h; i++)<br />   {<br />      lcd_write_byte(LCD_CMD, 0x40|(i+y));<br />      lcd_write_byte(LCD_CMD, 0x80|(x));<br /><br />     for(j=0; j&lt;w ; j++,k++){<br />       lcd_write_byte(LCD_DATA, (s&#91;k&#93;));<br /> }<br />   }<br />}<br /><br />void lcd_text(char s&#91;&#93;, unsigned char x, unsigned char y)<br />{<br />   unsigned int c,j;<br />   unsigned char i,k;<br /><br />   // Kody polskich literek z ogonkami<br />   char pl&#91;&#93; = {'ą','ć','ę','ł','ń','ó','ś','ź','ż','Ą','Ć','Ę','Ł','Ń','Ó','Ś','Ź','Ż'};<br /><br />   // Ustawia położenia pierwszej litery tekstu na ekranie LCD<br />   lcd_write_byte(LCD_CMD, LCD_SETY|(y));<br />   lcd_write_byte(LCD_CMD, LCD_SETX|(x));<br /><br />   // Rysuje znak po znaku<br />   for(k=0; (c = s&#91;k&#93;); k++)<br />   {<br />      // Dopasowuje kody znaków z ogonkami<br />     for(i=0; (i&lt;18) &amp;&amp; (pl&#91;i&#93;!=c); i++) ;<br />     if(i&lt;18) c= 0x80+i;<br /><br />      // Kopiuje jeden znak(6x8) z FLASH do pamięci obrazu LCD<br />      for(i=0, j=(c-32)*6; i&lt;6; i++,j++)<br />           lcd_write_byte(LCD_DATA, (font&#91;j&#93;));<br />   }<br />}<br /><br />void lcd_clear(void){<br />    unsigned char  i,j;<br /><br />    LCD_HOME;<br /><br />    for(i=0; i&lt;LCD_Y; i++)<br />    {<br />        LCD_GOTO(0, i);<br />        for(j=0; j&lt;LCD_X; j++)<br />       lcd_write_byte(LCD_DATA, 0x00);<br />    }<br /><br />    LCD_HOME;<br />}<br /><br />void lcd_scroll(unsigned char txt&#91;&#93;, unsigned char line, unsigned int czas)<br />{<br />   unsigned int j,l,k,n,m;<br />   unsigned char c,i;<br /><br />   // Kody polskich literek z ogonkami<br />   unsigned char pl&#91;&#93; = {'ą','ć','ę','ł','ń','ó','ś','ź','ż','Ą','Ć','Ę','Ł','Ń','Ó','Ś','Ź','Ż'};<br /><br />   // liczenie znaków w tekście<br />   for(n=0;(txt&#91;n&#93;);n++);<br /><br />   for(j=0; j&lt;(n-(LCD_X/6))*6 ;j++)<br />   {<br />      LCD_GOTO(0, line);<br /><br />      for(i=0,l=j; i&lt;LCD_X ;i++,l++)<br />      {<br />      c = (txt&#91; (l/6) &#93;);<br /><br />          // Dopasowuje kody polskich znaków z ogonkami<br />          for( m=0; (m&lt;18) &amp;&amp; (pl&#91;m&#93;!=c); m++) ;<br />          if(m&lt;18) c= 0x80+m;<br /><br />      k = (c-32)*6+(l%6);<br /><br />      lcd_write_byte(LCD_DATA, (font&#91;k&#93;));<br />      }<br />      HAL_Delay(czas);<br />   }<br />}<br /><br /><br />/* USER CODE END 4 */<br /><br />/**<br />  * @brief  This function is executed in case of error occurrence.<br />  * @param  None<br />  * @retval None<br />  */<br />void Error_Handler(void)<br />{<br />  /* USER CODE BEGIN Error_Handler */<br />  /* User can add his own implementation to report the HAL error return state */<br />  while(1) <br />  {<br />  }<br />  /* USER CODE END Error_Handler */ <br />}<br /><br />#ifdef USE_FULL_ASSERT<br /><br />/**<br />   * @brief Reports the name of the source file and the source line number<br />   * where the assert_param error has occurred.<br />   * @param file: pointer to the source file name<br />   * @param line: assert_param error line source number<br />   * @retval None<br />   */<br />void assert_failed(uint8_t* file, uint32_t line)<br />{<br />  /* USER CODE BEGIN 6 */<br />  /* User can add his own implementation to report the file name and line number,<br />    ex: printf(&quot;Wrong parameters value: file %s on line %d\r\n&quot;, file, line) */<br />  /* USER CODE END 6 */<br /><br />}<br /><br />#endif<br /><br />/**<br />  * @}<br />  */ <br /><br />/**<br />  * @}<br />*/ <br /><br />/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/[/syntax]<br /><br />A po przeniesieniu:<br />LCD.h:<br />[syntax=c]/*<br /> * HAL_LCD_NOKIA.h<br /> *<br /> *  Created on: Oct 3, 2016<br /> *      Author: KosteQ<br /> */<br /><br />#ifndef HAL_LCD_NOKIA_H_<br />#define HAL_LCD_NOKIA_H_<br /><br />#define LCD_X 84<br />#define LCD_Y 6<br /><br />#define LCD_CLK_SET HAL_GPIO_WritePin(LCD_CLK_GPIO_Port, LCD_CLK_Pin, GPIO_PIN_SET)<br />#define LCD_CLK_CLRHAL_GPIO_WritePin(LCD_CLK_GPIO_Port, LCD_CLK_Pin, GPIO_PIN_RESET)<br /><br />#define LCD_DATA_SET HAL_GPIO_WritePin(LCD_DATA_GPIO_Port, LCD_DATA_Pin, GPIO_PIN_SET)<br />#define LCD_DATA_CLR HAL_GPIO_WritePin(LCD_DATA_GPIO_Port, LCD_DATA_Pin, GPIO_PIN_RESET)<br /><br />#define LCD_DC_SET HAL_GPIO_WritePin(LCD_DC_GPIO_Port, LCD_DC_Pin, GPIO_PIN_SET)<br />#define LCD_DC_CLR HAL_GPIO_WritePin(LCD_DC_GPIO_Port, LCD_DC_Pin, GPIO_PIN_RESET)<br /><br />#define LCD_CE_SET HAL_GPIO_WritePin(LCD_CE_GPIO_Port, LCD_CE_Pin, GPIO_PIN_SET)<br />#define LCD_CE_CLR HAL_GPIO_WritePin(LCD_CE_GPIO_Port, LCD_CE_Pin, GPIO_PIN_RESET)<br /><br />#define LCD_RST_SET HAL_GPIO_WritePin(LCD_RST_GPIO_Port, LCD_RST_Pin, GPIO_PIN_SET)<br />#define LCD_RST_CLRHAL_GPIO_WritePin(LCD_RST_GPIO_Port, LCD_RST_Pin, GPIO_PIN_RESET)<br /><br />#define LCD_CMD0<br />#define LCD_DATA 1<br /><br />#define LCD_HOME lcd_write_byte(0, 0x40);lcd_write_byte(0, 0x80)<br />#define LCD_GOTO(x,y) lcd_write_byte(0, 0x40|(y));lcd_write_byte(0, 0x80|(x))<br /><br /><br /><br />void lcd_init(void);<br />void lcd_clear(void);<br />void lcd_write_byte(unsigned char, unsigned char);<br />void lcd_text(char&#91;&#93;, unsigned char, unsigned char);<br />void lcd_image(const unsigned char&#91;&#93;, char, char, char, char);<br />void lcd_text(char&#91;&#93;, unsigned char , unsigned char );<br />void lcd_scroll(unsigned char&#91;&#93;, unsigned char, unsigned int);<br /><br />#endif /* HAL_LCD_NOKIA_H_ */[/syntax]<br /><br />LCD.c:<br />[syntax=c]/*<br /> * HAL_LCD_NOKIA.c<br /> *<br /> *  Created on: Oct 3, 2016<br /> *      Author: KosteQ<br /> */<br /><br /><br />#include &quot;HAL_LCD_NOKIA.h&quot;<br /><br /><br />void lcd_init(void){<br /><br /><br />LCD_RST_CLR;<br />HAL_Delay(20);<br />LCD_RST_SET;<br />    LCD_CE_SET;<br />    lcd_write_byte(LCD_CMD, 0x21); // Function set - extended instruction set<br />    lcd_write_byte(LCD_CMD, 0x13); // Bias - 1:48<br />    lcd_write_byte(LCD_CMD, 0x06); // Temperature Control<br />    lcd_write_byte(LCD_CMD, 0xa5); // Set Vop<br />    lcd_write_byte(LCD_CMD, 0x20); // Function set - basic instruction set, horizontal addressing<br />    lcd_write_byte(LCD_CMD, 0x0C); // Display control - normal mode<br />}<br /><br />void lcd_write_byte(unsigned char c_d, unsigned char data ){<br />    unsigned char m;<br />    LCD_CE_CLR;<br /><br />    if(c_d) LCD_DC_SET; else LCD_DC_CLR;<br /><br />    for(m=0x80; m; m&gt;&gt;=1)<br />    {<br />       if(data &amp; m)<br />          LCD_DATA_SET;<br />       else<br />          LCD_DATA_CLR;<br /><br />       LCD_CLK_SET;<br />       for(int i=0; i&lt;200; i++){<br /><br />       }<br />       LCD_CLK_CLR;<br />    }<br />    LCD_CE_SET;<br />}<br /><br />void lcd_image(const unsigned char s&#91;&#93;,char  x, char y, char w, char h){<br />   unsigned int i,j,k;<br /><br />   for(i=0,j=0,k=0; i&lt;h; i++)<br />   {<br />      lcd_write_byte(LCD_CMD, 0x40|(i+y));<br />      lcd_write_byte(LCD_CMD, 0x80|(x));<br /><br />     for(j=0; j&lt;w ; j++,k++){<br />       lcd_write_byte(LCD_DATA, (s&#91;k&#93;));<br /> }<br />   }<br />}<br /><br />void lcd_text(char s&#91;&#93;, unsigned char x, unsigned char y)<br />{<br />   unsigned int c,j;<br />   unsigned char i,k;<br /><br />   // Kody polskich literek z ogonkami<br />   char pl&#91;&#93; = {'ą','ć','ę','ł','ń','ó','ś','ź','ż','Ą','Ć','Ę','Ł','Ń','Ó','Ś','Ź','Ż'};<br /><br />   // Ustawia położenia pierwszej litery tekstu na ekranie LCD<br />   lcd_write_byte(LCD_CMD, LCD_SETY|(y));<br />   lcd_write_byte(LCD_CMD, LCD_SETX|(x));<br /><br />   // Rysuje znak po znaku<br />   for(k=0; (c = s&#91;k&#93;); k++)<br />   {<br />      // Dopasowuje kody znaków z ogonkami<br />     for(i=0; (i&lt;18) &amp;&amp; (pl&#91;i&#93;!=c); i++) ;<br />     if(i&lt;18) c= 0x80+i;<br /><br />      // Kopiuje jeden znak(6x8) z FLASH do pamięci obrazu LCD<br />      for(i=0, j=(c-32)*6; i&lt;6; i++,j++)<br />           lcd_write_byte(LCD_DATA, (font&#91;j&#93;));<br />   }<br />}<br /><br />void lcd_clear(void){<br />    unsigned char  i,j;<br /><br />    LCD_HOME;<br /><br />    for(i=0; i&lt;LCD_Y; i++)<br />    {<br />        LCD_GOTO(0, i);<br />        for(j=0; j&lt;LCD_X; j++)<br />       lcd_write_byte(LCD_DATA, 0x00);<br />    }<br /><br />    LCD_HOME;<br />}<br /><br />void lcd_scroll(unsigned char txt&#91;&#93;, unsigned char line, unsigned int czas)<br />{<br />   unsigned int j,l,k,n;<br />   unsigned char c,i;<br /><br />   // Kody polskich literek z ogonkami<br />   unsigned char pl&#91;&#93; = {'ą','ć','ę','ł','ń','ó','ś','ź','ż','Ą','Ć','Ę','Ł','Ń','Ó','Ś','Ź','Ż'};<br /><br />   // liczenie znaków w tekście<br />   for(n=0;(txt&#91;n&#93;);n++);<br /><br />   for(j=0; j&lt;(n-(LCD_X/6))*6 ;j++)<br />   {<br />      LCD_GOTO(0, line);<br /><br />      for(i=0,l=j; i&lt;LCD_X ;i++,l++)<br />      {<br />      c = (txt&#91; (l/6) &#93;);<br /><br />          // Dopasowuje kody polskich znaków z ogonkami<br />          for(m=0; (m&lt;18) &amp;&amp; (pl&#91;m&#93;!=c); m++) ;<br />          if(m&lt;18) c= 0x80+m;<br /><br />      k = (c-32)*6+(l%6);<br /><br />      lcd_write_byte(LCD_DATA, (font&#91;k&#93;));<br />      }<br />      delay_ms(czas);<br />   }<br />}[/syntax]<br /><br />Plik main:<br />[syntax=c]/**<br />  ******************************************************************************<br />  * File Name          : main.c<br />  * Description        : Main program body<br />  ******************************************************************************<br />  *<br />  * COPYRIGHT(c) 2016 STMicroelectronics<br />  *<br />  * Redistribution and use in source and binary forms, with or without modification,<br />  * are permitted provided that the following conditions are met:<br />  *   1. Redistributions of source code must retain the above copyright notice,<br />  *      this list of conditions and the following disclaimer.<br />  *   2. Redistributions in binary form must reproduce the above copyright notice,<br />  *      this list of conditions and the following disclaimer in the documentation<br />  *      and/or other materials provided with the distribution.<br />  *   3. Neither the name of STMicroelectronics nor the names of its contributors<br />  *      may be used to endorse or promote products derived from this software<br />  *      without specific prior written permission.<br />  *<br />  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot;<br />  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE<br />  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE<br />  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE<br />  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL<br />  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR<br />  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER<br />  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,<br />  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE<br />  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.<br />  *<br />  ******************************************************************************<br />  */<br />/* Includes ------------------------------------------------------------------*/<br />#include &quot;stm32f4xx_hal.h&quot;<br /><br />/* USER CODE BEGIN Includes */<br />#include &quot;HAL_LCD_NOKIA.h&quot;<br />/* USER CODE END Includes */<br /><br />/* Private variables ---------------------------------------------------------*/<br /><br />/* USER CODE BEGIN PV */<br />/* Private variables ---------------------------------------------------------*/<br />unsigned char font&#91;&#93; = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5f,0x00,0x00,0x00,0x00,0x07,0x00,0x07,<br />0x00,0x00,0x14,0x7f,0x14,0x7f,0x14,0x00,0x24,0x2a,0x7f,0x2a,0x12,0x00,0x23,0x13,<br />0x08,0x64,0x62,0x00,0x36,0x49,0x55,0x22,0x50,0x00,0x00,0x00,0x03,0x00,0x00,0x00,<br />0x00,0x1c,0x22,0x41,0x00,0x00,0x00,0x41,0x22,0x1c,0x00,0x00,0x14,0x08,0x3e,0x08,<br />0x14,0x00,0x08,0x08,0x3e,0x08,0x08,0x00,0x00,0x50,0x30,0x00,0x00,0x00,0x08,0x08,<br />0x08,0x08,0x08,0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x00,<br />0x3e,0x51,0x49,0x45,0x3e,0x00,0x00,0x42,0x7f,0x40,0x00,0x00,0x42,0x61,0x51,0x49,<br />0x46,0x00,0x21,0x41,0x45,0x4b,0x31,0x00,0x18,0x14,0x12,0x7f,0x10,0x00,0x27,0x45,<br />0x45,0x45,0x39,0x00,0x3c,0x4a,0x49,0x49,0x30,0x00,0x03,0x71,0x09,0x05,0x03,0x00,<br />0x36,0x49,0x49,0x49,0x36,0x00,0x06,0x49,0x49,0x29,0x1e,0x00,0x00,0x36,0x36,0x00,<br />0x00,0x00,0x00,0x56,0x36,0x00,0x00,0x00,0x08,0x14,0x22,0x41,0x00,0x00,0x14,0x14,<br />0x14,0x14,0x14,0x00,0x00,0x41,0x22,0x14,0x08,0x00,0x02,0x01,0x51,0x09,0x06,0x00,<br />0x32,0x49,0x79,0x41,0x3e,0x00,0x7e,0x11,0x11,0x11,0x7e,0x00,0x7f,0x49,0x49,0x49,<br />0x36,0x00,0x3e,0x41,0x41,0x41,0x22,0x00,0x7f,0x41,0x41,0x41,0x3e,0x00,0x7f,0x49,<br />0x49,0x49,0x41,0x00,0x7f,0x09,0x09,0x09,0x01,0x00,0x3e,0x41,0x41,0x49,0x7a,0x00,<br />0x7f,0x08,0x08,0x08,0x7f,0x00,0x00,0x41,0x7f,0x41,0x00,0x00,0x20,0x40,0x41,0x3f,<br />0x01,0x00,0x7f,0x08,0x14,0x22,0x41,0x00,0x7f,0x40,0x40,0x40,0x40,0x00,0x7f,0x02,<br />0x0c,0x02,0x7f,0x00,0x7f,0x04,0x08,0x10,0x7f,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,<br />0x7f,0x09,0x09,0x09,0x06,0x00,0x3e,0x41,0x51,0x21,0x5e,0x00,0x7f,0x09,0x19,0x29,<br />0x46,0x00,0x46,0x49,0x49,0x49,0x31,0x00,0x01,0x01,0x7f,0x01,0x01,0x00,0x3f,0x40,<br />0x40,0x40,0x3f,0x00,0x1f,0x20,0x40,0x20,0x1f,0x00,0x3f,0x40,0x38,0x40,0x3f,0x00,<br />0x63,0x14,0x08,0x14,0x63,0x00,0x07,0x08,0x70,0x08,0x07,0x00,0x61,0x51,0x49,0x45,<br />0x43,0x00,0x00,0x7f,0x41,0x41,0x00,0x00,0x02,0x04,0x08,0x10,0x20,0x00,0x00,0x41,<br />0x41,0x7f,0x00,0x00,0x04,0x02,0x01,0x02,0x04,0x00,0x40,0x40,0x40,0x40,0x40,0x00,<br />0x00,0x01,0x02,0x04,0x00,0x00,0x20,0x54,0x54,0x54,0x78,0x00,0x7f,0x48,0x44,0x44,<br />0x38,0x00,0x38,0x44,0x44,0x44,0x20,0x00,0x38,0x44,0x44,0x48,0x7f,0x00,0x38,0x54,<br />0x54,0x54,0x18,0x00,0x08,0x7e,0x09,0x01,0x02,0x00,0x18,0xa4,0xa4,0xa4,0x7c,0x00,<br />0x7f,0x08,0x04,0x04,0x78,0x00,0x00,0x48,0x7d,0x40,0x00,0x00,0x00,0x00,0x84,0x7d,<br />0x00,0x00,0x7f,0x10,0x28,0x44,0x00,0x00,0x00,0x41,0x7f,0x40,0x00,0x00,0x7c,0x04,<br />0x78,0x04,0x78,0x00,0x7c,0x08,0x04,0x04,0x78,0x00,0x38,0x44,0x44,0x44,0x38,0x00,<br />0xfc,0x24,0x24,0x24,0x18,0x00,0x18,0x24,0x24,0x28,0xfc,0x00,0x7c,0x08,0x04,0x04,<br />0x08,0x00,0x48,0x54,0x54,0x54,0x20,0x00,0x04,0x3f,0x44,0x40,0x20,0x00,0x3c,0x40,<br />0x40,0x20,0x7c,0x00,0x1c,0x20,0x40,0x20,0x1c,0x00,0x3c,0x40,0x30,0x40,0x3c,0x00,<br />0x44,0x28,0x10,0x28,0x44,0x00,0x1c,0xa0,0xa0,0xa0,0x7c,0x00,0x44,0x64,0x54,0x4c,<br />0x44,0x00,0x00,0x08,0x36,0x41,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0x00,0x00,0x41,<br />0x36,0x08,0x00,0x00,0x10,0x08,0x08,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,<br />0x20,0x54,0x54,0xd4,0x78,0x00,0x38,0x44,0x46,0x45,0x20,0x00,0x38,0x54,0x54,0xd4,<br />0x18,0x00,0x00,0x49,0x7f,0x44,0x00,0x00,0x7c,0x08,0x06,0x05,0x78,0x00,0x38,0x44,<br />0x46,0x45,0x38,0x00,0x48,0x54,0x56,0x55,0x20,0x00,0x44,0x64,0x56,0x4d,0x44,0x00,<br />0x44,0x64,0x55,0x4c,0x44,0x00,0x7e,0x11,0x11,0x91,0x7e,0x00,0x3c,0x42,0x46,0x43,<br />0x24,0x00,0x7f,0x49,0x49,0xc9,0x41,0x00,0x7f,0x50,0x48,0x44,0x40,0x00,0x7e,0x04,<br />0x0b,0x10,0x7e,0x00,0x3c,0x42,0x46,0x43,0x3c,0x00,0x4c,0x52,0x56,0x53,0x22,0x00,<br />0x42,0x66,0x53,0x4a,0x46,0x00,0x42,0x62,0x53,0x4a,0x46,0x00,0x00,0x00,0x00,0x00,<br />0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,<br />0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,<br />0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,<br />0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,<br />0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00<br />};<br />/* USER CODE END PV */<br /><br />/* Private function prototypes -----------------------------------------------*/<br />void SystemClock_Config(void);<br />void Error_Handler(void);<br />static void MX_GPIO_Init(void);<br /><br />/* USER CODE BEGIN PFP */<br />/* Private function prototypes -----------------------------------------------*/<br /><br />/* USER CODE END PFP */<br /><br />/* USER CODE BEGIN 0 */<br /><br />/* USER CODE END 0 */<br /><br />int main(void)<br />{<br /><br />  /* USER CODE BEGIN 1 */<br /><br />  /* USER CODE END 1 */<br /><br />  /* MCU Configuration----------------------------------------------------------*/<br /><br />  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */<br />  HAL_Init();<br /><br />  /* Configure the system clock */<br />  SystemClock_Config();<br /><br />  /* Initialize all configured peripherals */<br />  MX_GPIO_Init();<br /><br />  /* USER CODE BEGIN 2 */<br />  lcd_init();<br />  lcd_clear();<br /><br />  lcd_text(&quot;Programowanie&quot;, 3, 0);<br />  lcd_text(&quot;Nucleo F446RE&quot;, 1*6, 1);<br />  lcd_text(&quot;i wyświetlacz&quot;, 1*6, 3);<br />  lcd_text(&quot;od Nokii 3310&quot;, 0*6, 4);<br />  lcd_text(&quot;Pozdr KosteQ&quot;, 1*6, 5);<br /><br />  /* USER CODE END 2 */<br /><br />  /* Infinite loop */<br />  /* USER CODE BEGIN WHILE */<br />  while (1)<br />  {<br />  HAL_GPIO_TogglePin(LD2_GPIO_Port,LD2_Pin);<br />  HAL_Delay(1000);<br />  /* USER CODE END WHILE */<br /><br />  /* USER CODE BEGIN 3 */<br /><br />  }<br />  /* USER CODE END 3 */<br /><br />}<br /><br />/** System Clock Configuration<br />*/<br />void SystemClock_Config(void)<br />{<br /><br />  RCC_OscInitTypeDef RCC_OscInitStruct;<br />  RCC_ClkInitTypeDef RCC_ClkInitStruct;<br /><br />  __HAL_RCC_PWR_CLK_ENABLE();<br /><br />  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);<br /><br />  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;<br />  RCC_OscInitStruct.HSIState = RCC_HSI_ON;<br />  RCC_OscInitStruct.HSICalibrationValue = 16;<br />  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;<br />  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;<br />  RCC_OscInitStruct.PLL.PLLM = 8;<br />  RCC_OscInitStruct.PLL.PLLN = 180;<br />  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;<br />  RCC_OscInitStruct.PLL.PLLQ = 2;<br />  RCC_OscInitStruct.PLL.PLLR = 2;<br />  if (HAL_RCC_OscConfig(&amp;RCC_OscInitStruct) != HAL_OK)<br />  {<br />    Error_Handler();<br />  }<br /><br />  if (HAL_PWREx_EnableOverDrive() != HAL_OK)<br />  {<br />    Error_Handler();<br />  }<br /><br />  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK<br />                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;<br />  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;<br />  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;<br />  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;<br />  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;<br />  if (HAL_RCC_ClockConfig(&amp;RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK)<br />  {<br />    Error_Handler();<br />  }<br /><br />  HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);<br /><br />  HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);<br /><br />  /* SysTick_IRQn interrupt configuration */<br />  HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);<br />}<br /><br />/** Configure pins as <br />        * Analog <br />        * Input <br />        * Output<br />        * EVENT_OUT<br />        * EXTI<br />     PA2   ------&gt; USART2_TX<br />     PA3   ------&gt; USART2_RX<br />*/<br />static void MX_GPIO_Init(void)<br />{<br /><br />  GPIO_InitTypeDef GPIO_InitStruct;<br /><br />  /* GPIO Ports Clock Enable */<br />  __HAL_RCC_GPIOC_CLK_ENABLE();<br />  __HAL_RCC_GPIOH_CLK_ENABLE();<br />  __HAL_RCC_GPIOA_CLK_ENABLE();<br />  __HAL_RCC_GPIOB_CLK_ENABLE();<br /><br />  /*Configure GPIO pin : BUTTON_Pin */<br />  GPIO_InitStruct.Pin = BUTTON_Pin;<br />  GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;<br />  GPIO_InitStruct.Pull = GPIO_NOPULL;<br />  HAL_GPIO_Init(BUTTON_GPIO_Port, &amp;GPIO_InitStruct);<br /><br />  /*Configure GPIO pins : LCD_DC_Pin LCD_CE_Pin LCD_CLK_Pin LCD_DATA_Pin */<br />  GPIO_InitStruct.Pin = LCD_DC_Pin|LCD_CE_Pin|LCD_CLK_Pin|LCD_DATA_Pin;<br />  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;<br />  GPIO_InitStruct.Pull = GPIO_NOPULL;<br />  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;<br />  HAL_GPIO_Init(GPIOC, &amp;GPIO_InitStruct);<br /><br />  /*Configure GPIO pins : USART_TX_Pin USART_RX_Pin */<br />  GPIO_InitStruct.Pin = USART_TX_Pin|USART_RX_Pin;<br />  GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;<br />  GPIO_InitStruct.Pull = GPIO_NOPULL;<br />  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;<br />  GPIO_InitStruct.Alternate = GPIO_AF7_USART2;<br />  HAL_GPIO_Init(GPIOA, &amp;GPIO_InitStruct);<br /><br />  /*Configure GPIO pins : LCD_RST_Pin LD2_Pin */<br />  GPIO_InitStruct.Pin = LCD_RST_Pin|LD2_Pin;<br />  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;<br />  GPIO_InitStruct.Pull = GPIO_NOPULL;<br />  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;<br />  HAL_GPIO_Init(GPIOA, &amp;GPIO_InitStruct);<br /><br />  /*Configure GPIO pin Output Level */<br />  HAL_GPIO_WritePin(GPIOC, LCD_DC_Pin|LCD_CE_Pin|LCD_CLK_Pin|LCD_DATA_Pin, GPIO_PIN_RESET);<br /><br />  /*Configure GPIO pin Output Level */<br />  HAL_GPIO_WritePin(GPIOA, LCD_RST_Pin|LD2_Pin, GPIO_PIN_RESET);<br /><br />  /* EXTI interrupt init*/<br />  HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0);<br />  HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);<br /><br />}<br /><br />/* USER CODE BEGIN 4 */<br /><br />/* USER CODE END 4 */<br /><br />/**<br />  * @brief  This function is executed in case of error occurrence.<br />  * @param  None<br />  * @retval None<br />  */<br />void Error_Handler(void)<br />{<br />  /* USER CODE BEGIN Error_Handler */<br />  /* User can add his own implementation to report the HAL error return state */<br />  while(1) <br />  {<br />  }<br />  /* USER CODE END Error_Handler */ <br />}<br /><br />#ifdef USE_FULL_ASSERT<br /><br />/**<br />   * @brief Reports the name of the source file and the source line number<br />   * where the assert_param error has occurred.<br />   * @param file: pointer to the source file name<br />   * @param line: assert_param error line source number<br />   * @retval None<br />   */<br />void assert_failed(uint8_t* file, uint32_t line)<br />{<br />  /* USER CODE BEGIN 6 */<br />  /* User can add his own implementation to report the file name and line number,<br />    ex: printf(&quot;Wrong parameters value: file %s on line %d\r\n&quot;, file, line) */<br />  /* USER CODE END 6 */<br /><br />}<br /><br />#endif<br /><br />/**<br />  * @}<br />  */ <br /><br />/**<br />  * @}<br />*/ <br /><br />/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/[/syntax]<br /><br /><br />Pliki bibloteki znajdują się w folderze inc plik h a w src plik c<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10817">KosteQ95</a> — 3 paź 2016, o 17:09</p><hr />
]]></content>
</entry>
</feed>