{"id":207136,"date":"2013-12-24T04:08:03","date_gmt":"2013-12-24T00:08:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=207136"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=207136","title":{"rendered":"<span class=\"post_title\">\u041f\u0440\u0430\u0437\u0434\u043d\u0438\u043a \u0436\u0438\u0437\u043d\u0438 \u043f\u043e \u0433\u0438\u043a\u043e\u0432\u0441\u043a\u0438: \u0441 ARM \u0438 TFT LCD<\/span>"},"content":{"rendered":"<div class=\"content html_format\">\n<h4>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h4>\n<p>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/30c\/3bc\/362\/30c3bc362c114ba88e0b591830fef111.jpg\" alt=\"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\" align=\"right\"\/><br \/>  \u0423\u0432\u0438\u0434\u0435\u0432 \u043f\u043e\u0441\u0442\u044b \u043e\u0442 <a href=\"http:\/\/habrahabr.ru\/users\/dlinyj\/\" class=\"user_link\">dlinyj<\/a>, <a href=\"http:\/\/habrahabr.ru\/users\/goodic\/\" class=\"user_link\">goodic<\/a> \u0438 <a href=\"http:\/\/habrahabr.ru\/users\/hoshi\/\" class=\"user_link\">Hoshi<\/a> \u044f \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0440\u0430\u0437 \u043e\u0449\u0443\u0442\u0438\u043b, \u0447\u0442\u043e \u0425\u0430\u0431\u0440 \u2014 \u0442\u043e\u0440\u0442.<\/p>\n<p>  \u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u043e\u0441\u0442 \u043a\u0430\u0441\u0430\u043b\u0441\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u0438\u0441\u043f\u043b\u0435\u044f \u043d\u0430 \u0431\u0430\u0437\u0435 HD44780 \u0434\u043b\u044f Linux (<a href=\"http:\/\/habrahabr.ru\/post\/206148\/\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u0432 \u043f\u043e\u0434 Linux<\/a> \u043e\u0442 <a href=\"http:\/\/habrahabr.ru\/users\/dlinyj\/\" class=\"user_link\">dlinyj<\/a>); \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043e\u0442\u0432\u0435\u0442\u0430\u043c\u0438 \u043d\u0430 \u043d\u0435\u0433\u043e \u043f\u043e\u0441\u043b\u0443\u0436\u0438\u043b\u0438 \u043f\u043e\u0441\u0442\u044b \u0445\u0430\u0431\u0440\u0430\u044e\u0437\u0435\u0440\u043e\u0432 <a href=\"http:\/\/habrahabr.ru\/users\/goodic\/\" class=\"user_link\">goodic<\/a> (<a href=\"http:\/\/habrahabr.ru\/post\/206692\/\">\u041f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e \u0433\u0438\u043a\u043e\u0432\u0441\u043a\u0438, \u0431\u0435\u0437 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0434\u0440\u043e\u0432<\/a>) \u0438 <a href=\"http:\/\/habrahabr.ru\/users\/hoshi\/\" class=\"user_link\">Hoshi<\/a> (<a href=\"http:\/\/habrahabr.ru\/post\/206782\/\">\u041d\u043e\u0432\u043e\u0433\u043e\u0434\u043d\u044f\u044f \u043c\u0430\u043b\u0438\u043d\u0430 \u2014 \u043f\u0440\u0438\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u0435\u043c \u044d\u043a\u0440\u0430\u043d HD44780 \u043a Raspberry Pi<\/a>).<\/p>\n<p>  \u041c\u043d\u0435 \u0442\u043e\u0436\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u043e\u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u0430\u0437\u0434\u043d\u0438\u043a\u0435 \u0436\u0438\u0437\u043d\u0438 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 <code>vt52-like<\/code> \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b. \u0421\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u0438\u0441\u043f\u043b\u0435\u044f \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u043d\u043e \u0431\u044b\u043b \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u0439 dev-board \u043d\u0430 \u0431\u0430\u0437\u0435 ARM Cortex-M3 \u0441 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u043c TFT-\u0434\u0438\u0441\u043f\u043b\u0435\u0435\u043c 240\u0445320, \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439.<\/p>\n<p>  \u0417\u0430\u043f\u0430\u0441 \u044d\u043d\u0442\u0443\u0437\u0438\u0430\u0437\u043c\u0430 \u0432 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0438\u043c\u0435\u043b\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u043f\u0440\u043e\u0441\u043d\u0443\u0432\u0449\u0438\u0441\u044c \u0432 \u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435 \u0434\u043d\u0435\u043c (~17 MSK) \u044f \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043b \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e embedded \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e LCD.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e embedded-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e ARM, \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0430 \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u2014 \u043f\u0440\u043e\u0448\u0443 \u043f\u043e\u0434 \u043a\u0430\u0442.<br \/>  <a name=\"habracut\"><\/a><\/p>\n<h4>\u0416\u0435\u043b\u0435\u0437\u043e<\/h4>\n<p>  \u0412 \u043c\u043e\u0435\u043c \u0440\u0430\u0441\u043f\u043e\u0440\u044f\u0436\u0435\u043d\u0438\u0438 \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430 \u0438\u0437 \u041f\u043e\u0434\u043d\u0435\u0431\u0435\u0441\u043d\u043e\u0439 (\u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u043e\u043a\u043e\u043b\u043e $20) \u043d\u0430 \u0431\u0430\u0437\u0435 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 <a href=\"http:\/\/www.st.com\/web\/en\/resource\/technical\/document\/datasheet\/CD00161566.pdf\" title=\"ST STM32F103xB datasheet\">ST STM32F103RB<\/a> \u0441 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u043c \u043c\u043e\u0441\u0442\u043e\u043c USB-to-UART <a href=\"http:\/\/www.prolific.com.tw\/UserFiles\/files\/ds_pl2303HXD_v1_4_4.pdf\" title=\"Prolific PL-2303HX datasheet\">Prolific PL-2303HX<\/a>, \u043a\u0443\u0447\u0435\u0439 \u043c\u0435\u043b\u043a\u043e\u0439 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438 \u0438 TFT LCD \u0441 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c <a href=\"http:\/\/www.densitron.com\/uploadedFiles\/Displays\/Support\/ILI9320AN_V0.92.pdf\" title=\"Ilitek ILI9320 datasheet\">Ilitek ILI9320<\/a> \u0441 \u043d\u0435\u0432\u0435\u0434\u043e\u043c\u043e\u0439 \u0441\u0445\u0435\u043c\u043e\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u043d\u0443\u0442\u0440\u0438\u0441\u0445\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0442\u043e\u0440\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f <a href=\"https:\/\/www.olimex.com\/Products\/ARM\/JTAG\/ARM-USB-TINY-H\/\">Olimex JTAG ARM-TINY-USB-H<\/a>. \u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u0434\u0435\u0432\u0430\u0439\u0441, \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 <a href=\"http:\/\/openocd.sourceforge.net\/\">OpenOCD<\/a>.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">devboard<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/4ed\/606\/9bb\/4ed6069bb4c56bc82605f71b16c04e0d.jpg\" alt=\"devboard\"\/><\/div>\n<\/div>\n<p>  \u0422\u043e\u0447\u043d\u0435\u0435 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0434\u0430\u0436\u0435 \u043d\u0435 \u0431\u044b\u043b\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0447\u0442\u043e \u0437\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0441\u0442\u043e\u0438\u0442 \u043d\u0430 LCD. \u0412\u0441\u0435, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u0438\u0437 \u0434\u0438\u0441\u043f\u043b\u0435\u0439\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f, \u0447\u0442\u043e \u043e\u043d \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u043f\u043e 16-bit \u0448\u0438\u043d\u0435, \u0438\u043c\u0435\u0435\u0442 \u0441\u0438\u0433\u043d\u0430\u043b\u044b <code>nCS<\/code>, <code>nWR<\/code>, <code>nRD<\/code>, <code>BL_EN<\/code> \u0438 <code>RS<\/code>, <br \/>  \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u044b\u043b\u043e \u0443\u0433\u0430\u0434\u0430\u0442\u044c \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e:  <\/p>\n<ul>\n<li><code>nCS<\/code> \u2014 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f \u0448\u0438\u043d\u044b \u0434\u0438\u0441\u043f\u043b\u0435\u044f (\u0437\u0434\u0435\u0441\u044c \u0438 \u0434\u0430\u043b\u0435\u0435 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 <code>n<\/code> \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u2014 0)<\/li>\n<li><code>BL_EN<\/code> \u2014 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u043e\u0439<\/li>\n<li><code>nWR<\/code> \u2014 \u0437\u0430\u043f\u0438\u0441\u0438<\/li>\n<li><code>nRD<\/code> \u2014 \u0447\u0442\u0435\u043d\u0438\u0435<\/li>\n<li><code>RS<\/code> \u2014 \u0432\u044b\u0431\u043e\u0440 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430<\/li>\n<\/ul>\n<p>  \u0412 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u0430\u0440\u0445\u0438\u0432\u043e\u0432 \u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0440\u0430\u0445 \u041a\u0438\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0431\u044b\u043b\u0430 \u0441\u0445\u043e\u0436\u0430\u044f \u043f\u043b\u0430\u0442\u0430 \u0441 <br \/>  \u043c\u043e\u0434\u0443\u043b\u0435\u043c Ilitek 932x.<\/p>\n<h4>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b<\/h4>\n<p>  <\/p>\n<h5>\u041d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<\/h5>\n<p>  \u0422\u0430\u043a \u043a\u0430\u043a \u0432 \u0440\u0443\u043d\u0435\u0442\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u044d\u0442\u0438\u043c LCD-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c \u043d\u0435 \u043c\u043d\u043e\u0433\u043e, \u044f, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u043e\u043f\u0438\u0448\u0443 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441.<\/p>\n<p>  \u0418\u0445 \u0443 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u043f\u043e \u0441\u0443\u0442\u0438 3: i80-system (\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, a-la \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c, \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 HD44780), SPI \u0438 RGB (\u0441 \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0435\u0439). \u0412 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d i80-system \u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, SPI (\u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b).<\/p>\n<p>  \u0422. \u043a. \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0442\u043e\u043b\u044c\u043a\u043e system, \u0442\u043e \u0435\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438 \u0437\u0430\u0439\u043c\u0435\u043c\u0441\u044f. \u0414\u0430\u0431\u044b \u0441\u0438\u043b\u044c\u043d\u043e \u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0432 \u0441\u0442\u0430\u0442\u044c\u044e \u2014 \u0431\u0443\u0434\u0435\u0442 \u0432 \u0441\u043f\u043e\u0439\u043b\u0435\u0440\u0435.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u042d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 ILI9320<\/b><\/p>\n<div class=\"spoiler_text\">\u041d\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0442\u0435\u0445\u043d\u0438\u043a\u043e\u0439 \u043e\u0431\u044b\u0447\u043d\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f timing-\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430\u043c\u0438. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0441\u0442\u044c \u043f\u044f\u0442\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0438 16-\u0442\u0438 \u0431\u0438\u0442\u043d\u0430\u044f \u0448\u0438\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>  \u041f\u0435\u0440\u0435\u0434 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0443 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c <code>nCS<\/code>, \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0432 \u0435\u0433\u043e \u0432 0.<\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435, \u043f\u0440\u0438 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u043c \u0432 0 <code>RS<\/code> \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0430\u0434\u0440\u0435\u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f (\u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0435\u0439 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 <code>nWR<\/code>. \u0421\u0438\u0433\u043d\u0430\u043b <code>RS<\/code> \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 1.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 (\u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>nRD<\/code> \u0438 <code>nWR<\/code> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e).<\/p>\n<p>  \u0414\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u044d\u0442\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:  <\/p>\n<table>\n<tbody>\n<tr>\n<td>read<\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/ae8\/3db\/ac5\/ae83dbac57fa56e86a7390847bc7920e.png\" alt=\"LCD read op\" title=\"LCD read timing diagram\"\/><\/td>\n<\/tr>\n<tr>\n<td>write<\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/d1f\/234\/d79\/d1f234d797cf255bb678056b6ea0cd18.png\" alt=\"LCD write op\" title=\"LCD write timing diagram\"\/><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>  \u041f\u0440\u0438 \u0437\u0430\u043f\u0438\u0441\u0438\/\u0447\u0442\u0435\u043d\u0438\u0438 \u0438\u0437 GRAM \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 <code>0x22<\/code>. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442<br \/>  \u0430\u0434\u0440\u0435\u0441\u0430 GRAM, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u044c\/\u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0451 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e.<\/p>\n<p>  \u0414\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b:  <\/p>\n<table>\n<tbody>\n<tr>\n<td>GRAM read<\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/4a3\/a19\/e43\/4a3a19e4325502dd381375643db7aebd.png\" alt=\"LCD GRAM read op\" title=\"LCD GRAM read timing diagram\"\/><\/td>\n<\/tr>\n<tr>\n<td>GRAM write<\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/271\/26a\/45e\/27126a45e7c8157ea133ecaa642509cc.png\" alt=\"LCD GRAM write op\" title=\"LCD GRAM write timing diagram\"\/><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 <code>nCS<\/code> \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 1.<\/p>\n<p>  \u0414\u043b\u044f \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u044f timing-\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c \u043d\u0430\u0448\u0435\u043b \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 <a href=\"https:\/\/code.google.com\/p\/wavedrom\/\" title=\"Wavedrom timing diagram editor\">wavedrom<\/a>, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435. \u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c <a href=\"http:\/\/wavedrom.googlecode.com\/svn\/trunk\/editor.html\" title=\"Wavedrom timing diagram editor\">\u0442\u0443\u0442<\/a> (\u0437\u0434\u0435\u0441\u044c \u0436\u0435 \u0431\u044b\u043b\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u044b \u0441\u0445\u0435\u043c\u044b \u0432\u044b\u0448\u0435).<\/div>\n<\/div>\n<p>  \u041d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0431\u044b\u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">lcd_ll_funcs<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">void _lcd_select(void) { GPIO_ResetBits(GPIOC, GPIO_Pin_9); } void _lcd_deselect(void) { GPIO_SetBits(GPIOC, GPIO_Pin_9); } void _lcd_rs_set(void) { GPIO_SetBits(GPIOC, GPIO_Pin_8); } void _lcd_rs_reset(void) { GPIO_ResetBits(GPIOC, GPIO_Pin_8); } void _lcd_rd_en(void) { GPIO_ResetBits(GPIOC, GPIO_Pin_11); } void _lcd_rd_dis(void) { GPIO_SetBits(GPIOC, GPIO_Pin_11); } void _lcd_wr_en(void) { GPIO_ResetBits(GPIOC, GPIO_Pin_10); } void _lcd_wr_dis(void) { GPIO_SetBits(GPIOC, GPIO_Pin_10); }  void _lcd_bl_en(void) { GPIO_SetBits(GPIOC, GPIO_Pin_12); } void _lcd_bl_dis(void) { GPIO_ResetBits(GPIOC, GPIO_Pin_12); }  \/\/ changes DB[15:0] GPIO pins mode void lcd_gpio_conf(GPIOMode_TypeDef mode);  void _lcd_put_data(u16 data) {     \/\/ data[0-7] -&gt; GPIOC[0-7], data[8-15] -&gt; GPIOB[8-15]     GPIOB-&gt;ODR = (GPIOB-&gt;ODR&amp;0x00ff)|(data&amp;0xff00);     GPIOC-&gt;ODR = (GPIOC-&gt;ODR&amp;0xff00)|(data&amp;0x00ff); }  u16 _lcd_read_data(void) {     lcd_gpio_conf(GPIO_Mode_IN_FLOATING);     u16 result = (GPIOB-&gt;IDR&amp;0xff00)|(GPIOC-&gt;IDR&amp;0x00ff);     lcd_gpio_conf(GPIO_Mode_Out_PP);     return result; }  \/\/ assume that lcd_select() was done before it void _lcd_tx_reg(u8 addr) {     _lcd_put_data(addr);     _lcd_rs_reset();     _lcd_wr_en();     _lcd_wr_dis();     _lcd_rs_set(); }  \/\/ assume that _lcd_tx_reg(u8) was done before it void _lcd_tx_data(u16 data) {     _lcd_put_data(data);     _lcd_wr_en();     _lcd_wr_dis(); }  \/\/ assume that _lcd_tx_reg(u8) was done before it u16 _lcd_rx_data(void) {     _lcd_rd_en();     u16 result = _lcd_read_data();     _lcd_rd_dis();     return result; } <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0414\u043b\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0438\u043d\u043b\u0430\u0439\u043d\u0438\u0442\u044c \u044d\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043c\u0430\u043a\u0440\u043e\u0441\u044b (\u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 Eclipse \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0434\u0440\u0443\u0436\u0438\u0442, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e).<\/p>\n<p>  \u041d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u044d\u0442\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440, \u0447\u0442\u0435\u043d\u0438\u044f \u0438\u0437 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430, \u0431\u043b\u0438\u0442\u0442\u0438\u043d\u0433 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f.<\/p>\n<h5>\u0412\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441<\/h5>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u0438 LCD-\u0434\u0438\u0441\u043f\u043b\u0435\u044f \u0434\u043b\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0447\u0435\u0440\u0435\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 API:<\/p>\n<pre><code class=\"cpp\">u16 lcd_init(void);  void lcd_set_cursor(u16 x, u16 y); void lcd_set_window(u16 left, u16 top, u16 right, u16 bottom);  void lcd_fill(u32 color); void lcd_rect(u16 left, u16 top, u16 right, u16 bottom); void lcd_put_char_at(u32 data, u16 x, u16 y);  u32 lcd_get_fg(void); u32 lcd_get_bg(void); void lcd_set_fg(u32 color); void lcd_set_bg(u32 color); <\/code><\/pre>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u044d\u0442\u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0432\u043e\u0438\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439.<\/p>\n<p>  \u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0440\u0438\u0441\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u0442. \u043a. \u0437\u0430 \u043d\u0435\u0439 \u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0441\u043e \u0448\u0440\u0438\u0444\u0442\u0430\u043c\u0438. \u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043e\u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">lcd_put_char_at<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">void lcd_put_char_at(u32 data, u16 x, u16 y) {     u8 xsize, ysize;     u8 *char_img;     lcd_get_char(data, &amp;xsize, &amp;ysize, &amp;char_img);      lcd_set_cursor(x, y);     lcd_set_window(x, y, x + xsize, y + ysize);      _lcd_select();     _lcd_tx_reg(0x22);     \/\/ works only for 8xN fonts     for(u8 i = 0; i &lt; ysize; i++) {         u8 str = char_img[i];         for(u8 j = 0; j &lt; xsize; j++) {             _lcd_tx_data((str&amp;(1&lt;&lt;(xsize-j-1)))?fg_color:bg_color);         }     }     _lcd_deselect(); } <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0431\u0438\u0442\u043c\u0430\u043f \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0438 \u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>lcd_get_char<\/code> \u043f\u043e \u043a\u043e\u0434\u0443 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 (\u043e\u043d 32\u0445\u0431\u0438\u0442\u043d\u044b\u0439, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c\u0438 \u043d\u0435 \u0442\u0440\u043e\u0433\u0440\u0430\u0442\u044c ASCII-\u0447\u0430\u0441\u0442\u044c).<\/p>\n<p>  \u0412 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0448\u0440\u0438\u0444\u0442, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u043d\u0438\u0436\u043d\u044e\u044e \u0447\u0430\u0441\u0442\u044c ASCII-\u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u043f\u043b\u044e\u0441 \u00ab\u0451\u043b\u043e\u0447\u043a\u0430\u00bb. \u0416\u0435\u043b\u0430\u044e\u0449\u0438\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0435\u0451 \u043d\u0430\u0439\u0442\u0438 ,)<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">debug<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/650\/510\/3ec\/6505103eca23a2a81774d364e36d4fed.jpg\" alt=\"debug\"\/><\/div>\n<\/div>\n<p>  \u041d\u0430\u0438\u043c\u0435\u043d\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u0438 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0437\u0430\u0442\u0440\u0430\u0442\u043d\u043e\u0439 (\u0432 \u0441\u043c\u044b\u0441\u043b\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f) \u044f\u0432\u043b\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0438\u0441\u043f\u043b\u0435\u044f:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">lcd_init: \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u0438\u0441\u043f\u0443\u0433\u0430\u0442\u044c\u0441\u044f<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">u16 lcd_init(void) {     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC, ENABLE);      GPIO_InitTypeDef gpio_conf;      gpio_conf.GPIO_Speed = GPIO_Speed_50MHz;     gpio_conf.GPIO_Mode = GPIO_Mode_Out_PP;     gpio_conf.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12;     GPIO_Init(GPIOC, &amp;gpio_conf);      lcd_gpio_conf(GPIO_Mode_Out_PP);      \/\/ to init state (0xffff on db0-15, backlit is disabled, nCS, nWR, nRD and RS are high)     _lcd_bl_dis();     _lcd_put_data(0xffff);     _lcd_deselect();     _lcd_wr_dis();     _lcd_rd_dis();     _lcd_rs_set();      \/\/ osc enable     _lcd_bl_dis();     lcd_write_reg(0x00, 0x0001);     delay_ms(100);     u16 lcd_code = lcd_read_reg(0x00);     delay_ms(100);      \/\/ driver output control (S720-S1)     lcd_write_reg(0x01, 0x0100);      \/\/ driving wave control (line inv)     lcd_write_reg(0x02, 0x0700);      \/\/ entry mode (horiz, dir(h+,v+), hwm-, bgr+)     lcd_write_reg(0x03, 0x1030);      \/\/ resize (off)     lcd_write_reg(0x04, 0x0000);      \/\/ display control 2 (skip 2 lines on front porch and on back porch)     lcd_write_reg(0x08, 0x0202);      \/\/ display control 3-4 (scan mode normal, fmark off)     lcd_write_reg(0x09, 0x0000);     lcd_write_reg(0x0a, 0x0000);      \/\/ RGB disp iface control (int clock, sys int, 16bit)     lcd_write_reg(0x0c, 0x0001);      \/\/ frame marker  position (isn&#39;t used)     lcd_write_reg(0x0d, 0x0000);      \/\/ RGB disp iface control 2 (all def, we don&#39;t use rgb)     lcd_write_reg(0x0f, 0x0000);      \/\/ power on seq     lcd_write_reg(0x07, 0x0021);     delay_ms(10);      \/\/ turn on power supply and configure it (enable sources, set contrast, power supply on)     lcd_write_reg(0x10, 0x16b0);     \/\/ set normal voltage and max dcdc freq     lcd_write_reg(0x11, 0x0007);     \/\/ internal vcomh (see 0x29), pon, gray level (0x08)     lcd_write_reg(0x12, 0x0118);     \/\/ set vcom to 0.92 * vreg1out     lcd_write_reg(0x13, 0x0b00);     \/\/ vcomh = 0.69 * vreg1out     lcd_write_reg(0x29, 0x0000);      \/\/ set x and y range     lcd_write_reg(0x50, 0);     lcd_write_reg(0x51, LCD_WIDTH-1);     lcd_write_reg(0x52, 0);     lcd_write_reg(0x53, LCD_HEIGHT-1);      \/\/ gate scan control (scan direction, display size)     lcd_write_reg(0x60, 0x2700);     lcd_write_reg(0x61, 0x0001);     lcd_write_reg(0x6a, 0x0000);      \/\/ partial displays off     for(u8 addr = 0x80; addr &lt; 0x86; addr++) {         lcd_write_reg(addr, 0x0000);     }      \/\/ panel iface control (19 clock\/line)     lcd_write_reg(0x90, 0x0013);      \/\/ lcd timings     lcd_write_reg(0x92, 0x0000);     lcd_write_reg(0x93, 0x0001);     lcd_write_reg(0x95, 0x0110);     lcd_write_reg(0x97, 0x0000);     lcd_write_reg(0x98, 0x0000);      lcd_write_reg(0x07, 0x0133);      \/\/ turn on backlit after init done     _lcd_bl_en();      return lcd_code; } <\/code><\/pre>\n<\/div>\n<\/div>\n<h4>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430<\/h4>\n<p>  \u042d\u0442\u0430 \u0447\u0430\u0441\u0442\u044c \u043d\u0438\u0447\u0435\u043c \u043e\u0441\u043e\u0431\u044b\u043c \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u0430. \u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d unbuffered-\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b, \u0441 \u0447\u0430\u0441\u0442\u044c\u044e \u043a\u043e\u0434\u043e\u0432 \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">escape sequences<\/b><\/p>\n<div class=\"spoiler_text\">Escape-\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438:  <\/p>\n<ul>\n<li>\\033[A = \u041f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043a\u0443\u0440\u0441\u043e\u0440 \u043d\u0430 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432\u0432\u0435\u0440\u0445<\/li>\n<li>\\033[B = \u041f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043a\u0443\u0440\u0441\u043e\u0440 \u043d\u0430 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432\u043d\u0438\u0437<\/li>\n<li>\\033[C = \u0421\u0434\u0432\u0438\u043d\u0443\u0442\u044c \u043a\u0443\u0440\u0441\u043e\u0440 \u043d\u0430 \u043e\u0434\u043d\u0443 \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0432\u043f\u0440\u0430\u0432\u043e<\/li>\n<li>\\033[D = \u0421\u0434\u0432\u0438\u043d\u0443\u0442\u044c \u043a\u0443\u0440\u0441\u043e\u0440 \u043d\u0430 \u043e\u0434\u043d\u0443 \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0432\u043b\u0435\u0432\u043e<\/li>\n<li>\\033[H = \u041f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043a\u0443\u0440\u0441\u043e\u0440 \u0432 \u043b\u0435\u0432\u044b\u0439 \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u0443\u0433\u043e\u043b \u2014 \u0434\u043e\u043c\u043e\u0439 (\u043f\u043e\u0437\u0438\u0446\u0438\u044f 0,0)<\/li>\n<li>\\033[J = \u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0432\u0441\u0451, \u041d\u0415 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043a\u0443\u0440\u0441\u043e\u0440 \u0434\u043e\u043c\u043e\u0439!<\/li>\n<li>\\033[K = \u0421\u0442\u0438\u0440\u0430\u0435\u0442 \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u0441\u0442\u0440\u043e\u043a\u0438, \u041d\u0415 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043a\u0443\u0440\u0441\u043e\u0440 \u0434\u043e\u043c\u043e\u0439!<\/li>\n<li>\\033[M = \u041d\u043e\u0432\u0430\u044f \u043a\u0430\u0440\u0442\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u2014 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430<\/li>\n<li>\\033[Y = \u041f\u043e\u0437\u0438\u0446\u0438\u044f, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 Y-X<\/li>\n<li>\\033[X = \u041f\u043e\u0437\u0438\u0446\u0438\u044f, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 X-Y<\/li>\n<li>\\033[R = CGRAM \u0412\u044b\u0431\u043e\u0440 \u044f\u0447\u0435\u0439\u043a\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u2014 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430, \u0442. \u043a. \u043d\u0435\u0442 CGRAM<\/li>\n<li>\\033[V = \u041f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u2014 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430<\/li>\n<li>\\033[W = \u041f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0430 \u0432\u044b\u043b\u044e\u0447\u0435\u043d\u0430 \u2014 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430<\/li>\n<li>\\033[b = \u041f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430-\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u2014 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430<\/li>\n<\/ul>\n<p>  \u0414\u0440\u0443\u0433\u0438\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u043a\u043e\u0434\u044b:  <\/p>\n<ul>\n<li>\\r = \u0412\u043e\u0437\u0432\u0440\u0430\u0442 \u043a\u0430\u0440\u0435\u0442\u043a\u0438 (\u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u043a\u0443\u0440\u0441\u043e\u0440 \u0432 \u043f\u043e\u0437\u0438\u0446\u0438\u044e 0 \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043b\u0438\u043d\u0438\u0438!)<\/li>\n<li>\\n = \u041d\u043e\u0432\u0430\u044f \u043b\u0438\u043d\u0438\u044f<\/li>\n<li>\\t = \u0422\u0430\u0431\u0443\u043b\u044f\u0446\u0438\u044f (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 3 \u0441\u0438\u043c\u0432\u043e\u043b\u0430)<\/li>\n<\/ul>\n<p>  <\/div>\n<\/div>\n<h4>\u041a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0438<\/h4>\n<p>  \u0414\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u043c\u0438\u0440\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <code>USART1<\/code> \u0432 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c USB-to-UART <code>PL-2303HX<\/code>.<\/p>\n<p>  \u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0445\u043e\u0441\u0442\u0430 \u0441 Linux \u043d\u0430 \u0431\u043e\u0440\u0442\u0443 \u044d\u0442\u043e <code>\/dev\/ttyUSBx<\/code>. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0434\u043b\u044f <code>pl2303<\/code> \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u043c\u0438. \u041d\u043e, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u0446\u0435\u043f\u044f\u0442\u0441\u044f, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u043e.<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c UART \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435 (\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0443\u0441\u0442\u043e\u0439), \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043d\u0438\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f\u0445.<\/p>\n<p>  \u0421 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 USART1 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0432 <abbr title=\"Nested Vectored Interrupt Controller\">NVIC<\/abbr>.<\/p>\n<p>  \u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u044d\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:  <\/p>\n<pre><code class=\"cpp\">NVIC_InitTypeDef nvic_conf; nvic_conf.NVIC_IRQChannel = USART1_IRQn; nvic_conf.NVIC_IRQChannelPreemptionPriority = 0; nvic_conf.NVIC_IRQChannelSubPriority = 2; nvic_conf.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&amp;nvic_conf);  USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); <\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043a\u043e\u043c\u043c\u0430\u043d\u0434\u043e\u0439 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 USART1.<\/p>\n<p>  \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:  <\/p>\n<pre><code class=\"cpp\">void USART1_IRQHandler(void) {     u8 data = USART1-&gt;DR;     uart_write_byte(data);     handle_byte(data); } <\/code><\/pre>\n<p>  \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0431\u0430\u0439\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e (echo) \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u043e\u043c.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">handle_byte(u8)<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">\/\/ escape sequence handling vars u8 escape_seq = 0; u8 buf[10];  void handle_byte(u8 data) {     if((!escape_seq) &amp;&amp; (data == 0x1b)) {         escape_seq = 1;     } else if (escape_seq == 1) {         buf[escape_seq] = data;         escape_seq++;         if(data != &#39;[&#39;) {             escape_seq = 0;         }     } else if (escape_seq == 2) {         switch(data) {         case &#39;A&#39;:             lcd_term_set_cursor(lcd_term_row()-1, lcd_term_col());             break;         case &#39;B&#39;:             lcd_term_set_cursor(lcd_term_row()+1, lcd_term_col());             break;         case &#39;C&#39;:             lcd_term_set_cursor(lcd_term_row(), lcd_term_col()+1);             break;         case &#39;D&#39;:             lcd_term_set_cursor(lcd_term_row(), lcd_term_col()-1);             break;         case &#39;H&#39;:             lcd_term_set_cursor(0, 0);             break;         case &#39;J&#39;:             lcd_term_clear();             break;         case &#39;K&#39;:             lcd_term_flush_str();             break;         case &#39;X&#39;:         case &#39;Y&#39;:             buf[escape_seq] = data;             escape_seq++;             return;         }         escape_seq = 0;     } else if(escape_seq == 3) {         buf[escape_seq] = data;         escape_seq++;     } else if(escape_seq == 4) {         u8 row = (buf[2] == &#39;Y&#39;) ? buf[3] - 037 : data - 037;         u8 col = (buf[2] == &#39;Y&#39;) ? data - 037 : buf[3] - 037;         lcd_term_set_cursor(row, col);         escape_seq = 0;     } else {         lcd_term_put_str(&amp;data, 1);     } } <\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u0412\u0435\u0441\u044c \u043a\u043e\u0434 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043d\u0430 <a href=\"https:\/\/github.com\/grossws\/stm32-lcd\/\">\u0433\u0438\u0442\u0445\u0430\u0431\u0435<\/a>.<\/p>\n<h4>P. S.<\/h4>\n<p>  \u041d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0441\u0442\u0430 \u0437\u0430\u043d\u044f\u043b\u043e \u043f\u043e\u0447\u0442\u0438 6 \u0447\u0430\u0441\u043e\u0432. \u041d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0430 \u0436\u0435\u043b\u0435\u0437\u044f\u0447\u043d\u043e-\u0441\u043e\u0444\u0442\u043e\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u2014 \u043e\u043a\u043e\u043b\u043e 13 \u0447\u0430\u0441\u043e\u0432.<\/p>\n<p>  \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0432\u0441\u0435\u043c, \u043a\u0442\u043e \u0434\u043e\u0447\u0438\u0442\u0430\u043b. \u041e \u0432\u0441\u044f\u043a\u0438\u0445 \u043e\u0447\u0435\u043f\u044f\u0442\u043a\u0430\u0445 \u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u043d\u0430\u0441\u0435\u043a\u043e\u043c\u044b\u0445 \u043f\u0438\u0448\u0438\u0442\u0435 \u0432 \u043b\u0438\u0447\u043a\u0443.    \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/207136\/\"> http:\/\/habrahabr.ru\/post\/207136\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">\n<h4>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h4>\n<p>  <img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/30c\/3bc\/362\/30c3bc362c114ba88e0b591830fef111.jpg\" alt=\"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\" align=\"right\"\/><br \/>  \u0423\u0432\u0438\u0434\u0435\u0432 \u043f\u043e\u0441\u0442\u044b \u043e\u0442 <a href=\"http:\/\/habrahabr.ru\/users\/dlinyj\/\" class=\"user_link\">dlinyj<\/a>, <a href=\"http:\/\/habrahabr.ru\/users\/goodic\/\" class=\"user_link\">goodic<\/a> \u0438 <a href=\"http:\/\/habrahabr.ru\/users\/hoshi\/\" class=\"user_link\">Hoshi<\/a> \u044f \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0440\u0430\u0437 \u043e\u0449\u0443\u0442\u0438\u043b, \u0447\u0442\u043e \u0425\u0430\u0431\u0440 \u2014 \u0442\u043e\u0440\u0442.<\/p>\n<p>  \u041f\u0435\u0440\u0432\u044b\u0439 \u043f\u043e\u0441\u0442 \u043a\u0430\u0441\u0430\u043b\u0441\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u0438\u0441\u043f\u043b\u0435\u044f \u043d\u0430 \u0431\u0430\u0437\u0435 HD44780 \u0434\u043b\u044f Linux (<a href=\"http:\/\/habrahabr.ru\/post\/206148\/\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u0432 \u043f\u043e\u0434 Linux<\/a> \u043e\u0442 <a href=\"http:\/\/habrahabr.ru\/users\/dlinyj\/\" class=\"user_link\">dlinyj<\/a>); \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043e\u0442\u0432\u0435\u0442\u0430\u043c\u0438 \u043d\u0430 \u043d\u0435\u0433\u043e \u043f\u043e\u0441\u043b\u0443\u0436\u0438\u043b\u0438 \u043f\u043e\u0441\u0442\u044b \u0445\u0430\u0431\u0440\u0430\u044e\u0437\u0435\u0440\u043e\u0432 <a href=\"http:\/\/habrahabr.ru\/users\/goodic\/\" class=\"user_link\">goodic<\/a> (<a href=\"http:\/\/habrahabr.ru\/post\/206692\/\">\u041f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e \u0433\u0438\u043a\u043e\u0432\u0441\u043a\u0438, \u0431\u0435\u0437 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0434\u0440\u043e\u0432<\/a>) \u0438 <a href=\"http:\/\/habrahabr.ru\/users\/hoshi\/\" class=\"user_link\">Hoshi<\/a> (<a href=\"http:\/\/habrahabr.ru\/post\/206782\/\">\u041d\u043e\u0432\u043e\u0433\u043e\u0434\u043d\u044f\u044f \u043c\u0430\u043b\u0438\u043d\u0430 \u2014 \u043f\u0440\u0438\u043a\u0440\u0443\u0447\u0438\u0432\u0430\u0435\u043c \u044d\u043a\u0440\u0430\u043d HD44780 \u043a Raspberry Pi<\/a>).<\/p>\n<p>  \u041c\u043d\u0435 \u0442\u043e\u0436\u0435 \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u043e\u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u0430\u0437\u0434\u043d\u0438\u043a\u0435 \u0436\u0438\u0437\u043d\u0438 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 <code>vt52-like<\/code> \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b. \u0421\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u0438\u0441\u043f\u043b\u0435\u044f \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u043d\u043e \u0431\u044b\u043b \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u0439 dev-board \u043d\u0430 \u0431\u0430\u0437\u0435 ARM Cortex-M3 \u0441 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u043c TFT-\u0434\u0438\u0441\u043f\u043b\u0435\u0435\u043c 240\u0445320, \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439.<\/p>\n<p>  \u0417\u0430\u043f\u0430\u0441 \u044d\u043d\u0442\u0443\u0437\u0438\u0430\u0437\u043c\u0430 \u0432 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0438\u043c\u0435\u043b\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u043f\u0440\u043e\u0441\u043d\u0443\u0432\u0449\u0438\u0441\u044c \u0432 \u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435 \u0434\u043d\u0435\u043c (~17 MSK) \u044f \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043b \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e embedded \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e LCD.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e embedded-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e ARM, \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0430 \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u2014 \u043f\u0440\u043e\u0448\u0443 \u043f\u043e\u0434 \u043a\u0430\u0442.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-207136","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/207136","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=207136"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/207136\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=207136"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=207136"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=207136"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}