{"id":365665,"date":"2024-05-21T02:42:57","date_gmt":"2024-05-21T02:42:57","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=365665"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2024-05-21T02:42:57","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=365665","title":{"rendered":"<span>STM32. \u041f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0441\u0440\u0435\u0434\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432 Linux<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\u0412 \u043d\u0435\u0434\u0430\u0432\u043d\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0442\u0430\u043a, \u0447\u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043f\u0430\u0440\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0433\u0434\u0435 \u043e\u0434\u043d\u0430 \u0438\u0437 \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u044b\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 \u2014 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 STM32. \u0418 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u0440\u0438 \u0441\u043c\u0435\u043d\u0435 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0430 \u0438\u043b\u0438 \u041e\u0421 \u043d\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u043c \u043a\u043e\u043c\u043f\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u0430\u043a \u0432 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437. \u041f\u043b\u044e\u0441\u043e\u043c, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0434\u0435\u043b\u0430\u043b \u0434\u043b\u044f STM32 \u2014 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b \u0432 Windows, \u0432 \u0434\u0435\u043c\u043e-\u0432\u0435\u0440\u0441\u0438\u0438 Keil uVision. \u041d\u043e \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044f \u0434\u0430\u0432\u043d\u043e \u043f\u0435\u0440\u0435\u0435\u0445\u0430\u043b \u0432 Linux \u2014 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0438 \u0438\u0437\u043b\u043e\u0436\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0439.<\/p>\n<p>  \u0412\u0441\u0435\u043c, \u043a\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u2014 \u0434\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434 \u043a\u0430\u0442.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/q2\/iy\/_z\/q2iy_zykye4ndiypgsk311rpgss.png\" data-src=\"https:\/\/habrastorage.org\/webt\/q2\/iy\/_z\/q2iy_zykye4ndiypgsk311rpgss.png\"\/><a name=\"habracut\"><\/a><\/p>\n<p>  <b>\u0414\u0438\u0441\u043a\u043b\u0435\u0439\u043c\u0435\u0440.<\/b> \u0412\u043e \u0438\u0437\u0431\u0435\u0436\u0430\u043d\u0438\u0435 \u0441\u0440\u0430\u0447\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u043d\u0430 \u0444\u043e\u043d\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0432\u043e\u0437\u0437\u0440\u0435\u043d\u0438\u0439 \u043d\u0430 \u043b\u0443\u0447\u0448\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0440\u0435\u0434\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432 Linux \u2014 \u044f \u043f\u043e\u0441\u043f\u0435\u0448\u0443 \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u043c\u043e\u0438\u0445 \u0432\u043a\u0443\u0441\u043e\u0432, \u0432\u043e\u0437\u0437\u0440\u0435\u043d\u0438\u0439 \u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0435\u043d\u0438\u0439, \u0431\u0435\u0437 \u043f\u0440\u0435\u0442\u0435\u043d\u0437\u0438\u0439 \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0438 \u0438\u0441\u0442\u0438\u043d\u0443 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0438\u043d\u0441\u0442\u0430\u043d\u0446\u0438\u0438.<\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u0427\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c?<\/font><\/h2>\n<p>  \u0418\u0442\u0430\u043a. \u041d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0447\u0443\u044e, \u044e\u0437\u0430\u0431\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0440\u0435\u0434\u0443 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u043e\u0434 STM32. \u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0441\u043a\u043e\u043f \u0437\u0430\u0434\u0430\u0447, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c:<\/p>\n<ul>\n<li>\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0431\u043e\u0442\u044b;<\/li>\n<li>\u041d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432: \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440, \u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a, \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440, \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u0438 \u0442.\u043f.<\/li>\n<li>\u0421\u043e\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 ST-Link;<\/li>\n<li>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 GDB;<\/li>\n<li>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c STM32CubeMX \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430;<\/li>\n<li>\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c IDE \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a \u043d\u0438\u043c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0438 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a;<\/li>\n<li>\u0421\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043b\u044f \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f;<\/li>\n<li>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e \u0438 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/li>\n<\/ul>\n<p>  \u0421\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439. \u042f \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e \u043a\u0430\u043a \u0438 \u0432 \u0441\u0442\u0430\u0442\u044c\u044f\u0445 \u043f\u0440\u043e Zynq \u2014 \u043f\u0440\u043e\u0432\u0435\u0440\u044e \u0432\u0441\u0435 \u043d\u0430 \u0441\u0432\u0435\u0436\u0435\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 megalloid-pc 22.04.3 LTS, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0437\u0430\u0431\u044b\u0442\u044c \u0440\u043e\u0432\u043d\u044b\u043c \u0441\u0447\u0451\u0442\u043e\u043c \u043d\u0438\u0447\u0435\u0433\u043e, \u0438 \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0441\u0447\u0435\u0440\u043f\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043c\u0430\u043d\u0443\u0430\u043b \u043f\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435. \u041f\u043e\u0435\u0445\u0430\u043b\u0438.<\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0431\u043e\u0442\u044b<\/font><\/h2>\n<p>  \u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0443\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0431\u043e\u0442\u044b. \u0418\u0442\u043e\u0433\u043e, \u0441\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code class=\"bash\">sudo wget -qO \/etc\/apt\/trusted.gpg.d\/kitware-key.asc https:\/\/apt.kitware.com\/keys\/kitware-archive-latest.asc echo \"deb https:\/\/apt.kitware.com\/ubuntu\/ $(lsb_release -sc) main\" | sudo tee \/etc\/apt\/sources.list.d\/kitware.list sudo add-apt-repository -y ppa:git-core\/ppa  sudo apt update sudo apt upgrade  sudo apt install -y build-essential make libtool pkg-config cmake curl automake autoconf gcc git texinfo python3-dev libpython3-dev liblzma5 libncurses5 libncurses5-dev libusb-1.0-0-dev libgtk-3-dev libstlink-dev libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev xz-utils tk-dev<\/code><\/pre>\n<p>  <\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u041d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432: \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440, \u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a, \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440, \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u0438 \u0442.\u043f.<\/font><\/h2>\n<p>  \u0418\u0442\u0430\u043a. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c\u0441\u044f \u0441 \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u044f \u043a\u043e\u0440\u043e\u0442\u043a\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0435. \u041d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u0434 \u0432 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435. <\/p>\n<p>  \u041d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f:<\/p>\n<ul>\n<li>\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440;<\/li>\n<li>\u041a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a;<\/li>\n<li>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.<\/li>\n<\/ul>\n<p>  \u0412\u0441\u0435 \u044d\u0442\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0442\u0441\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043a\u043e\u0434\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u043f\u0438\u0448\u0435\u0442\u0435 \u0432 \u0432\u0430\u0448\u0435\u0439 IDE. \u0427\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 GNU \u0438 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u044d\u0442\u043e \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0441\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u044b\u043c. \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 GNU \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435:<\/p>\n<ul>\n<li>GNU Binutils, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u043b\u0438\u043d\u043a\u0435\u0440 ld, \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440 as \u0438 \u043f\u0440\u043e\u0447\u0435\u0435 (<a href=\"https:\/\/www.gnu.org\/software\/binutils\/\">\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435<\/a>);<\/li>\n<li>\u041d\u0430\u0431\u043e\u0440 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432 GNU GCC, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043a\u043e\u0434\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u044e\u0449\u0438\u0439 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442 \u0435\u0433\u043e \u043d\u0430 \u0432\u0445\u043e\u0434 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 GNU (<a href=\"https:\/\/gcc.gnu.org\/\">\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435<\/a>);<\/li>\n<li>\u041d\u0430\u0431\u043e\u0440 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a.<\/li>\n<\/ul>\n<p>  \u041d\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0443\u0433\u043b\u0443\u0431\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u0434\u0435\u0431\u0440\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438, \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u0438.<\/p>\n<p>  \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0430:<\/p>\n<pre><code class=\"plaintext\">ARM_TOOLCHAIN_VERSION=$(curl -s https:\/\/developer.arm.com\/downloads\/-\/arm-gnu-toolchain-downloads | grep -Po '&lt;h4>Version \\K.+(?=&lt;\/h4>)')<\/code><\/pre>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0441\u0430\u043c \u0442\u0443\u043b\u0447\u0435\u0439\u043d:<\/p>\n<pre><code class=\"plaintext\">curl -Lo gcc-arm-none-eabi.tar.xz \"https:\/\/developer.arm.com\/-\/media\/Files\/downloads\/gnu\/${ARM_TOOLCHAIN_VERSION}\/binrel\/arm-gnu-toolchain-${ARM_TOOLCHAIN_VERSION}-x86_64-arm-none-eabi.tar.xz\"<\/code><\/pre>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e, \u0433\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0442\u0443\u043b\u0447\u0435\u0439\u043d:<\/p>\n<pre><code class=\"plaintext\">sudo mkdir \/opt\/gcc-arm-none-eabi<\/code><\/pre>\n<p>  \u0418\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u043c \u0430\u0440\u0445\u0438\u0432 \u0432 \u044d\u0442\u0443 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e:<\/p>\n<pre><code class=\"plaintext\">sudo tar xf gcc-arm-none-eabi.tar.xz --strip-components=1 -C \/opt\/gcc-arm-none-eabi<\/code><\/pre>\n<p>  \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u044d\u0442\u0443 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0432 PATH-\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e:<\/p>\n<pre><code class=\"plaintext\">echo 'export PATH=$PATH:\/opt\/gcc-arm-none-eabi\/bin' | sudo tee -a \/home\/megalloid\/.bashrc<\/code><\/pre>\n<p>  \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e:<\/p>\n<pre><code class=\"plaintext\">source \/home\/megalloid\/.bashrc<\/code><\/pre>\n<p>  \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0432\u0435\u0440\u0441\u0438\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432:<\/p>\n<pre><code class=\"plaintext\">megalloid@megalloid-pc:~$ arm-none-eabi-gcc --version arm-none-eabi-gcc (Arm GNU Toolchain 13.2.rel1 (Build arm-13.7)) 13.2.1 20231009 Copyright (C) 2023 Free Software Foundation, Inc. This is free software; see the source for copying conditions.  There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  megalloid@megalloid-pc:~$ arm-none-eabi-g++ --version arm-none-eabi-g++ (Arm GNU Toolchain 13.2.rel1 (Build arm-13.7)) 13.2.1 20231009 Copyright (C) 2023 Free Software Foundation, Inc. This is free software; see the source for copying conditions.  There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.<\/code><\/pre>\n<p>  \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0442\u0443\u043b\u0447\u0435\u0439\u043d \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438:<\/p>\n<pre><code class=\"plaintext\">touch main.c; vim main.c<\/code><\/pre>\n<p>  \u0412\u0441\u0442\u0430\u0432\u0438\u043c \u0432 \u0444\u0430\u0439\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435:<\/p>\n<pre><code class=\"plaintext\">#include &lt;stdio.h>  int main() {     return 0; }<\/code><\/pre>\n<p>  \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0438 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e:<\/p>\n<pre><code class=\"plaintext\">arm-none-eabi-gcc main.c -o test<\/code><\/pre>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c. \u0411\u0443\u0434\u0435\u0442 \u043a\u0443\u0447\u0430 \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430:<\/p>\n<pre><code class=\"plaintext\">arm-none-eabi-gcc main.c -o test \/opt\/gcc-arm-none-eabi\/bin\/..\/lib\/gcc\/arm-none-eabi\/13.2.1\/..\/..\/..\/..\/arm-none-eabi\/bin\/ld: \/opt\/gcc-arm-none-eabi\/bin\/..\/lib\/gcc\/arm-none-eabi\/13.2.1\/..\/..\/..\/..\/arm-none-eabi\/lib\/libc.a(libc_a-exit.o): in function `exit': exit.c:(.text.exit+0x28): undefined reference to `_exit' \/opt\/gcc-arm-none-eabi\/bin\/..\/lib\/gcc\/arm-none-eabi\/13.2.1\/..\/..\/..\/..\/arm-none-eabi\/bin\/ld: \/opt\/gcc-arm-none-eabi\/bin\/..\/lib\/gcc\/arm-none-eabi\/13.2.1\/..\/..\/..\/..\/arm-none-eabi\/lib\/libc.a(libc_a-writer.o): in function `_write_r': writer.c:(.text._write_r+0x24): undefined reference to `_write' \/opt\/gcc-arm-none-eabi\/bin\/..\/lib\/gcc\/arm-none-eabi\/13.2.1\/..\/..\/..\/..\/arm-none-eabi\/bin\/ld: \/opt\/gcc-arm-none-eabi\/bin\/..\/lib\/gcc\/arm-none-eabi\/13.2.1\/..\/..\/..\/..\/arm-none-eabi\/lib\/libc.a(libc_a-closer.o): in function `_close_r': closer.c:(.text._close_r+0x18): undefined reference to `_close' \/opt\/gcc-arm-none-eabi\/bin\/..\/lib\/gcc\/arm-none-eabi\/13.2.1\/..\/..\/..\/..\/arm-none-eabi\/bin\/ld: \/opt\/gcc-arm-none-eabi\/bin\/..\/lib\/gcc\/arm-none-eabi\/13.2.1\/..\/..\/..\/..\/arm-none-eabi\/lib\/libc.a(libc_a-lseekr.o): in function `_lseek_r': lseekr.c:(.text._lseek_r+0x24): undefined reference to `_lseek' \/opt\/gcc-arm-none-eabi\/bin\/..\/lib\/gcc\/arm-none-eabi\/13.2.1\/..\/..\/..\/..\/arm-none-eabi\/bin\/ld: \/opt\/gcc-arm-none-eabi\/bin\/..\/lib\/gcc\/arm-none-eabi\/13.2.1\/..\/..\/..\/..\/arm-none-eabi\/lib\/libc.a(libc_a-readr.o): in function `_read_r': readr.c:(.text._read_r+0x24): undefined reference to `_read' \/opt\/gcc-arm-none-eabi\/bin\/..\/lib\/gcc\/arm-none-eabi\/13.2.1\/..\/..\/..\/..\/arm-none-eabi\/bin\/ld: \/opt\/gcc-arm-none-eabi\/bin\/..\/lib\/gcc\/arm-none-eabi\/13.2.1\/..\/..\/..\/..\/arm-none-eabi\/lib\/libc.a(libc_a-sbrkr.o): in function `_sbrk_r': sbrkr.c:(.text._sbrk_r+0x18): undefined reference to `_sbrk' collect2: error: ld returned 1 exit status<\/code><\/pre>\n<p>  \u041d\u043e \u0435\u0441\u043b\u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u043e\u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0443\u043a\u0430\u0437\u0430\u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u043b\u0430\u0433\u0438 \u2014 \u0432\u0441\u0435 \u0431\u0443\u0434\u0435\u0442 \u0433\u043e\u0442\u043e\u0432\u043e:<\/p>\n<pre><code class=\"plaintext\">arm-none-eabi-gcc --specs=rdimon.specs main.c -o test<\/code><\/pre>\n<p>  \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0444\u0430\u0439\u043b:<\/p>\n<pre><code class=\"plaintext\">megalloid@megalloid-pc:~\/sources$ file test test: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, not stripped<\/code><\/pre>\n<p>  \u041e\u0442\u043b\u0438\u0447\u043d\u043e. \u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0418\u0434\u0451\u043c \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u0423\u0442\u0438\u043b\u0438\u0442\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 ST-Link<\/font><\/h2>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u0442\u0435\u043c, \u043a\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0443\u0442\u0438\u043b\u0438\u0442\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 ST-Link:<\/p>\n<pre><code class=\"plaintext\">cd ~\/sources git clone https:\/\/github.com\/stlink-org\/stlink.git cd stlink make clean make release sudo make install<\/code><\/pre>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044e \u0447\u0435\u0440\u0435\u0437 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u043f\u0440\u0430\u0432\u0438\u043b udev:<\/p>\n<pre><code class=\"plaintext\">sudo cp -a config\/udev\/rules.d\/* \/lib\/udev\/rules.d\/ sudo udevadm control --reload-rules &amp;&amp; sudo udevadm trigger<\/code><\/pre>\n<p>  \u0422\u0430\u043a \u0436\u0435 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0441\u0441\u044b\u043b\u043e\u043a:<\/p>\n<ul>\n<li>\u0422\u0443\u0442\u043e\u0440\u0438\u0430\u043b \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 stlink \u0438 FAQ \u043f\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044e \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c: <a href=\"https:\/\/github.com\/stlink-org\/stlink\/blob\/testing\/doc\/tutorial.md\">\u0441\u0441\u044b\u043b\u043a\u0430<\/a>;<\/li>\n<li>\u041c\u0430\u043d\u0443\u0430\u043b \u043f\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438\u0437 \u0441\u044b\u0440\u0446\u043e\u0432: <a href=\"https:\/\/github.com\/stlink-org\/stlink\/blob\/testing\/doc\/compiling.md\">\u0441\u0441\u044b\u043b\u043a\u0430<\/a>;<\/li>\n<li>\u0421\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432: <a href=\"https:\/\/github.com\/stlink-org\/stlink\/blob\/testing\/doc\/supported_devices.md\">\u0441\u0441\u044b\u043b\u043a\u0430<\/a>.<\/li>\n<\/ul>\n<p>  \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c ST-Link, \u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b \u043f\u043b\u0430\u0442\u0443 STM32F0-Discovery \u043a \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0443 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code class=\"plaintext\">megalloid@megalloid-pc:~$ lsusb | grep STM Bus 001 Device 011: ID 0483:3748 STMicroelectronics ST-LINK\/V2  megalloid@megalloid-pc:~$ st-info --probe Found 1 stlink programmers   version:    V2J37   serial:     XXXXXXXXXXXXXXXXXXXXXXXX   flash:      65536 (pagesize: 1024)   sram:       8192   chipid:     0x440   dev-type:   STM32F05x<\/code><\/pre>\n<p>  \u0418\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0442\u0430\u043a\u0436\u0435 \u0447\u0435\u0440\u0435\u0437 GUI \u0442\u0443\u043b\u0437\u0443:<\/p>\n<pre><code class=\"plaintext\">megalloid@megalloid-pc:~$ stlink-gui<\/code><\/pre>\n<p>  \u0412 \u0438\u0442\u043e\u0433\u0435 \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/10\/qg\/s2\/10qgs2w0koonmxixsdhoa2s94vc.png\" data-src=\"https:\/\/habrastorage.org\/webt\/10\/qg\/s2\/10qgs2w0koonmxixsdhoa2s94vc.png\"\/><\/div>\n<p>  \u0427\u0442\u043e \u0436. \u042d\u0442\u043e\u0442 \u044d\u0442\u0430\u043f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d. \u0418\u0434\u0451\u043c \u0434\u0430\u043b\u0435\u0435.<\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 ST CubeMX<\/font><\/h2>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0435\u0439 \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f CubeMX \u0432\u0435\u0440\u0441\u0438\u044f \u0434\u043b\u044f Linux. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u2014 6.10.0. <\/p>\n<p>  \u0421\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0441\u0435\u043c \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 ST \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044e CubeMX \u0441 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0438\u0441\u043a\u0430\u0442\u044c \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043f\u0443\u0442\u0438. \u042f \u043d\u0430\u0448\u0435\u043b \u044d\u0442\u0443 \u0432\u0435\u0440\u0441\u0438\u044e <a href=\"http:\/\/www.stm32res.ru\/ru\/newsarhivprog\">\u0442\u0443\u0442<\/a>. \u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0432\u0435\u0440\u0441\u0438\u044e \u0434\u043b\u044f Linux:<\/p>\n<pre><code class=\"plaintext\">wget http:\/\/www.stm32res.ru\/sites\/default\/files\/mi_files\/Prog_stm32\/en.stm32cubemx-lin-v6-10-0.zip mkdir cubemx;  unzip en.stm32cubemx-lin-v6-10-0.zip -d cubemx\/ cd cubemx; .\/SetupSTM32CubeMX-6.10.0<\/code><\/pre>\n<p>  \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0447\u0435\u0440\u0435\u0437 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430:<\/p>\n<pre><code class=\"plaintext\">megalloid@megalloid-pc:~$ ~\/STM32CubeMX$ .\/STM32CubeMX <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u043f\u0440\u043e\u0435\u043a\u0442\u0430:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/rm\/g_\/lc\/rmg_lcuwiauomugyatswkdvd-gk.png\" data-src=\"https:\/\/habrastorage.org\/webt\/rm\/g_\/lc\/rmg_lcuwiauomugyatswkdvd-gk.png\"\/><\/p>\n<p>  \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043d\u0443\u0436\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/wj\/3p\/to\/wj3pto2_yhnye0-qe3lgfdtl2pc.png\" data-src=\"https:\/\/habrastorage.org\/webt\/wj\/3p\/to\/wj3pto2_yhnye0-qe3lgfdtl2pc.png\"\/><\/p>\n<p>  \u041d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 RCC:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/_y\/wp\/yq\/_ywpyqny4sbofahj43iyrbex9qc.png\" data-src=\"https:\/\/habrastorage.org\/webt\/_y\/wp\/yq\/_ywpyqny4sbofahj43iyrbex9qc.png\"\/><\/p>\n<p>  \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0433\u0430\u043b\u043e\u0447\u043a\u0443 \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e\u0440\u0442\u0430 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u0448\u0438\u043d\u044b, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u044b\u0432\u043e\u0434\u044b \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u043d\u0430 \u0432\u0445\u043e\u0434:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gf\/xl\/gb\/gfxlgbdmnbehwpsrkqyhewszbwe.png\" data-src=\"https:\/\/habrastorage.org\/webt\/gf\/xl\/gb\/gfxlgbdmnbehwpsrkqyhewszbwe.png\"\/><\/p>\n<p>  \u041d\u0430\u0441\u0442\u0440\u043e\u0438\u043c GPIO-\u043f\u0438\u043d\u044b \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u044b:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/jt\/cp\/tr\/jtcptrinnk06ggjrwojuzjnp72s.png\" data-src=\"https:\/\/habrastorage.org\/webt\/jt\/cp\/tr\/jtcptrinnk06ggjrwojuzjnp72s.png\"\/><\/div>\n<p>  \u041e\u0442\u043c\u0435\u0442\u0438\u043c \u0438\u0445 \u043d\u0430 \u0441\u0445\u0435\u043c\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432\u044b\u0432\u043e\u0434\u043e\u0432:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/as\/rj\/tv\/asrjtvd9zkqpdc3kfqyshzi6ci4.png\" data-src=\"https:\/\/habrastorage.org\/webt\/as\/rj\/tv\/asrjtvd9zkqpdc3kfqyshzi6ci4.png\"\/><\/div>\n<p>  \u0418 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/mm\/mq\/oa\/mmmqoajeezywgrzuqzwyn3lmg0o.png\" data-src=\"https:\/\/habrastorage.org\/webt\/mm\/mq\/oa\/mmmqoajeezywgrzuqzwyn3lmg0o.png\"\/><\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u043a\u043e\u0434\u043e\u0433\u0435\u043d\u0435\u0440\u0430\u0440\u0430\u0442\u043e\u0440\u0430 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c IDE \u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 Makefile:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/31\/hk\/qi\/31hkqizdd-bd8msmwubq2nowdvk.png\" data-src=\"https:\/\/habrastorage.org\/webt\/31\/hk\/qi\/31hkqizdd-bd8msmwubq2nowdvk.png\"\/><\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0432\u0432\u0435\u0441\u0442\u0438 \u043b\u043e\u0433\u0438\u043d \u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u043e\u0442 \u0443\u0447\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 <a href=\"http:\/\/st.com\/\">st.com<\/a> \u2014 \u043d\u043e \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u0440\u043e\u0439\u0442\u0438 \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c. \u041f\u043e\u0441\u043b\u0435 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043d\u0430\u0431\u043e\u0440 \u0444\u0430\u0439\u043b\u043e\u0432:<\/p>\n<pre><code class=\"plaintext\">megalloid@megalloid-pc:~\/STM32\/F051\/Blink$ ll total 56 drwxrwxr-x 4 megalloid megalloid 4096 \u044f\u043d\u0432  8 22:33 .\/ drwxrwxr-x 3 megalloid megalloid 4096 \u044f\u043d\u0432  8 22:33 ..\/ -rw-rw-r-- 1 megalloid megalloid 3380 \u044f\u043d\u0432  8 22:33 Blink.ioc drwxrwxr-x 4 megalloid megalloid 4096 \u044f\u043d\u0432  8 22:33 Core\/ drwxrwxr-x 4 megalloid megalloid 4096 \u044f\u043d\u0432  8 22:33 Drivers\/ -rw-rw-r-- 1 megalloid megalloid 5492 \u044f\u043d\u0432  8 22:33 Makefile -rw-rw-r-- 1 megalloid megalloid 7613 \u044f\u043d\u0432  8 22:33 .mxproject -rw-rw-r-- 1 megalloid megalloid 9569 \u044f\u043d\u0432  8 22:33 startup_stm32f051x8.s -rw-rw-r-- 1 megalloid megalloid 5900 \u044f\u043d\u0432  8 22:33 STM32F051R8Tx_FLASH.ld<\/code><\/pre>\n<p>  \u0414\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f SVD-\u0444\u0430\u0439\u043b \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430. \u0414\u043b\u044f STM32F051R8T6 \u044f \u0432\u0437\u044f\u043b \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b <a href=\"https:\/\/www.st.com\/en\/microcontrollers-microprocessors\/stm32f051r6.html#cad-resources\">\u0442\u0443\u0442<\/a>. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0444\u0430\u0439\u043b <b>STM32F0 System View Description<\/b>:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ok\/se\/s4\/okses4p9fsonidijcdkdyutcvmk.png\" data-src=\"https:\/\/habrastorage.org\/webt\/ok\/se\/s4\/okses4p9fsonidijcdkdyutcvmk.png\"\/><\/p>\n<p>  \u0412 \u0430\u0440\u0445\u0438\u0432\u0435 \u0435\u0441\u0442\u044c \u0444\u0430\u0439\u043b STM32F0x1.svd, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043a\u043b\u0430\u0434\u0435\u043c \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u0432 IDE.<\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u0432\u044b\u0431\u043e\u0440 IDE \u0434\u043b\u044f<\/font><\/h2>\n<p>  \u041c\u044b \u043f\u043e\u0434\u043e\u0448\u043b\u0438 \u043a \u0441\u0430\u043c\u043e\u043c\u0443 \u0441\u043f\u043e\u0440\u043d\u043e\u043c\u0443 \u0432\u043e\u043f\u0440\u043e\u0441\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c: \u043a\u0430\u043a\u0443\u044e IDE \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u0415\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043d\u0430 \u0432\u044b\u0431\u043e\u0440:<\/p>\n<ul>\n<li>Visual Studio Code;<\/li>\n<li>Eclipse IDE;<\/li>\n<li>QT Creator.<\/li>\n<\/ul>\n<p>  \u0418 \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u043d\u0435 \u0431\u0443\u0434\u0443 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0432 \u0441\u0442\u0430\u0442\u044c\u0435: ST CubeIDE.<\/p>\n<p>  \u0422\u0443\u0442 \u043a\u043e\u043c\u0443 \u0447\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0438 \u043f\u043e \u0441\u0443\u0442\u0438 \u044d\u0442\u043e \u0434\u0435\u043b\u043e \u0432\u043a\u0443\u0441\u0430. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u043f\u0435\u0440\u0432\u044b\u0445 \u0434\u0432\u0443\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432.<\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Visual Studio Code \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 STM32<\/font><\/h2>\n<p>  \u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u0441\u043a\u0430\u0447\u0430\u0435\u043c \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c VSCode:<\/p>\n<pre><code class=\"plaintext\">sudo apt-get install wget gpg apt-transport-https wget -qO- https:\/\/packages.microsoft.com\/keys\/microsoft.asc | gpg --dearmor > packages.microsoft.gpg sudo install -D -o root -g root -m 644 packages.microsoft.gpg \/etc\/apt\/keyrings\/packages.microsoft.gpg sudo sh -c 'echo \"deb [arch=amd64,arm64,armhf signed-by=\/etc\/apt\/keyrings\/packages.microsoft.gpg] https:\/\/packages.microsoft.com\/repos\/code stable main\" > \/etc\/apt\/sources.list.d\/vscode.list' rm -f packages.microsoft.gpg sudo apt update sudo apt install code<\/code><\/pre>\n<p>  \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c <b>VSCode<\/b> \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \u0441\u043e \u0441\u0432\u0435\u0436\u0435\u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u0438\u0437 CubeMX:<\/p>\n<pre><code class=\"plaintext\">megalloid@megalloid-pc:~\/STM32\/F051\/Blink$ code .<\/code><\/pre>\n<p>  \u0412 \u0440\u0430\u0431\u043e\u0442\u0435 \u043d\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432:<\/p>\n<ul>\n<li><b>C\/C++ Extension Pack<\/b> \u2013 \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0434\u0435\u0431\u0430\u0433\u0430;<\/li>\n<li><b>Code Spell Checker<\/b> \u2013 \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u043e\u043f\u0435\u0447\u0430\u0442\u043e\u043a \u0432 \u043a\u043e\u0434\u0435 \u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445;<\/li>\n<li><b>Makefile Tool<\/b> \u2014 \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 \u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Make-\u0444\u0430\u0439\u043b\u0430\u043c\u0438;<\/li>\n<li><b>Cortex-Debug<\/b> \u2014 ARM Cortex-M GDB Debugger \u0434\u043b\u044f VSCode, \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c Peripherals, Core registers, Function Disassembly, Memory View \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435 (\u043f\u0440\u0430\u0432\u0434\u0430, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043d\u0430 \u0445\u043e\u0441\u0442\u043e\u0432\u043e\u0439 \u041e\u0421 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d arm-none-eabi-gdb);<\/li>\n<li><b>Memory View<\/b> \u2014 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0432 \u0434\u0435\u0431\u0430\u0433\u0433\u0435\u0440\u0435;<\/li>\n<li><b>Head-File-Guard<\/b> \u2014 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c\u0438 #ifndef\u2026 #define\u2026 #endif;<\/li>\n<li><b>Linker Script<\/b> \u2014 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0438 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a\u0430;<\/li>\n<li><b>Command Variable<\/b> \u2014 \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/li>\n<li><b>Tasks<\/b> \u2014 \u043f\u043b\u0430\u0433\u0438\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0435\u0442 \u043a\u043d\u043e\u043f\u043a\u0438 \u0437\u0430\u0434\u0430\u0447 \u043d\u0430 \u043d\u0438\u0436\u043d\u044e\u044e \u043f\u0430\u043d\u0435\u043b\u044c \u043e\u043a\u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (\u0447\u0443\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435 \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u043e \u0447\u0435\u043c \u0440\u0435\u0447\u044c);<\/li>\n<li><b>TODO Highlight<\/b> \u2014 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u0430 \u0434\u043b\u044f \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043d\u0430\u043f\u043e\u0434\u043e\u0431\u0438\u0435 TODO \u0438\u043b\u0438 FIXME, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0432\u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0432\u0441\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043d\u0430 \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<\/li>\n<\/ul>\n<p>  \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u044d\u0442\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <b>Extensions<\/b>:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/cz\/fw\/oo\/czfwootk5tvqcpd0zwnblpq4guq.png\" data-src=\"https:\/\/habrastorage.org\/webt\/cz\/fw\/oo\/czfwootk5tvqcpd0zwnblpq4guq.png\"\/><\/div>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u0441\u0430\u043c\u043e\u043c\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0443. \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 VSCode \u0432 \u043f\u0430\u043f\u043a\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u0442 \u0430\u043d\u0430\u043b\u0438\u0437 Makefile, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d CubeMX \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442 IntelliSense. <\/p>\n<p>  \u041f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u0432\u0441\u0435 \u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u043d\u0443\u0436\u043d\u043e. \u0414\u043e\u043a\u0438\u043d\u0435\u043c \u0432 <b>main.c<\/b> \u043a\u043e\u0434 \u043c\u043e\u0440\u0433\u0430\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c:<\/p>\n<pre><code class=\"plaintext\">while (1)   {     \/* USER CODE END WHILE *\/     HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_8|GPIO_PIN_9);     HAL_Delay(1000);     \/* USER CODE BEGIN 3 *\/   }<\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c, \u0435\u0441\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432 <b>Terminal<\/b> \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <b>make<\/b> \u2014 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0448\u0438\u0442\u044c:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/s5\/mr\/ho\/s5mrhoo2p5f-sxwx__-eopw5xoi.png\" data-src=\"https:\/\/habrastorage.org\/webt\/s5\/mr\/ho\/s5mrhoo2p5f-sxwx__-eopw5xoi.png\"\/><\/p>\n<p>  \u041c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0448\u0438\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0443 \u0432 \u044d\u0442\u043e\u043c \u0436\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435:<\/p>\n<pre><code class=\"plaintext\">st-flash --connect-under-reset write .\/Blink.hex 0x08000000 st-flash reset<\/code><\/pre>\n<p>  \u041f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u0438 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u044b \u0437\u0430\u043c\u043e\u0440\u0433\u0430\u044e\u0442:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/dq\/qe\/9w\/dqqe9wyqjfl5zsat6zclgvwjgi8.png\" data-src=\"https:\/\/habrastorage.org\/webt\/dq\/qe\/9w\/dqqe9wyqjfl5zsat6zclgvwjgi8.png\"\/><\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438, \u0447\u0442\u043e \u0446\u0435\u043b\u044c \u0431\u0438\u043b\u0434\u0438\u0442\u0441\u044f, \u043d\u0430\u0434\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442. <\/p>\n<p>  \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u0436\u0430\u0442\u044c \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448 <b>Ctrl+Shift+P<\/b> \u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043f\u0443\u043d\u043a\u0442 <b>Preferences: Open Workspace Settings (JSON)<\/b>. \u0412 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433 <b>.vscode<\/b> \u0438 \u043e\u0442\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b <b>settings.json<\/b>. \u0412 \u043d\u0435\u0433\u043e \u0432\u0441\u0442\u0430\u0432\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435:<\/p>\n<pre><code class=\"plaintext\">{         \"cortex-debug.gdbPath\": \"arm-none-eabi-gdb\" }<\/code><\/pre>\n<p>  \u0415\u0449\u0451 \u0440\u0430\u0437 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448 <b>Ctrl+Shift+P<\/b> \u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043f\u0443\u043d\u043a\u0442 <b>Tasks: Configure Task \u2014 Create tasks.json file from template \u2014 Others<\/b>. \u041e\u0442\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b tasks.json \u043d\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0432\u0441\u0442\u0430\u0432\u0438\u043c \u0432 \u043d\u0435\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435:<\/p>\n<pre><code class=\"plaintext\">{     \"version\": \"2.0.0\",     \"tasks\": [         {             \"label\": \"Build\",             \"type\": \"shell\",             \"group\": {                 \"kind\": \"build\",                 \"isDefault\": true             },             \"command\": \"make\",             \"problemMatcher\": [],             \"detail\": \"Build project\"         },         {             \"label\": \"Clean\",             \"type\": \"shell\",             \"group\": \"build\",             \"command\": \"make clean\",             \"problemMatcher\": [],             \"detail\": \"Clean project\"         },         {             \"type\": \"shell\",             \"label\": \"Flash\",             \"command\": \"st-flash\",             \"args\": [               \"--reset\",               \"write\",               \"${input:workspaceFolderForwardSlash}\/build\/${workspaceFolderBasename}.bin\",               \"0x8000000\"             ],             \"options\": {               \"cwd\": \"${workspaceFolder}\/build\"             },             \"problemMatcher\": [],             \"group\": {               \"kind\": \"build\",               \"isDefault\": true             },             \"detail\": \"Builds project and flashes firmware\"                 },         {             \"type\": \"shell\",             \"label\": \"Erase\",             \"command\": \"st-flash\",             \"args\": [               \"--connect-under-reset\",               \"erase\"             ],             \"detail\": \"Mass erase of chip\"           }     ],     \"inputs\": [         {           \"id\": \"workspaceFolderForwardSlash\",           \"type\": \"command\",           \"command\": \"extension.commandvariable.transform\",           \"args\": {             \"text\": \"${workspaceFolder}\",             \"find\": \"\\\\\\\\\",             \"replace\": \"\/\",             \"flags\": \"g\"           }         }       ] }<\/code><\/pre>\n<p>  \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c. \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438\u0437 \u043c\u0435\u043d\u044e \u0432\u043d\u0438\u0437\u0443 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043e\u043a\u043d\u0430 IDE:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/rk\/ur\/zr\/rkurzrzidifvky1hss7v39hm-rs.png\" data-src=\"https:\/\/habrastorage.org\/webt\/rk\/ur\/zr\/rkurzrzidifvky1hss7v39hm-rs.png\"\/><\/div>\n<p>  \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u044d\u0442\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u0423 \u043c\u0435\u043d\u044f \u043e\u043d\u0438 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u043a\u0430\u043a \u043d\u0443\u0436\u043d\u043e \u0438 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u044b \u0440\u0430\u0434\u043e\u0441\u0442\u043d\u043e \u0437\u0430\u043c\u043e\u0440\u0433\u0430\u043b\u0438. \u0417\u043d\u0430\u0447\u0438\u0442, \u0432\u0441\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0432\u0435\u0440\u043d\u043e. <\/p>\n<p>  \u041d\u043e \u044d\u0442\u043e \u0435\u0449\u0435 \u043d\u0435 \u0432\u0441\u0451. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043b\u0430\u0434\u043a\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0430\u0441\u044c \u0438\u0437 IDE. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438 \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a + \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f IDE. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u0430 \u044f \u0432\u044b\u043d\u0435\u0441 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0433\u043b\u0430\u0432\u0443. <\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430 ST-LINK GDB<\/font><\/h2>\n<p>  \u0412 \u0441\u043e\u0441\u0442\u0430\u0432\u0435 \u043f\u0430\u043a\u0435\u0442\u0430 ST-Link, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b\u0438 \u0440\u0430\u043d\u0435\u0435 \u2014 \u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f GDB-\u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a st-util \u0438 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a st-trace. \u041d\u043e \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0435\u0437 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u2014 \u043e\u043d \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0441\u044f:<\/p>\n<pre><code class=\"plaintext\">megalloid@megalloid-pc:~$ arm-none-eabi-gdb  Could not find platform independent libraries &lt;prefix> Could not find platform dependent libraries &lt;exec_prefix> Consider setting $PYTHONHOME to &lt;prefix>[:&lt;exec_prefix>] Python path configuration:   PYTHONHOME = (not set)   PYTHONPATH = (not set)   program name = '\/usr\/local\/bld-tools\/bld-tools-virtual-env\/bin\/python'   isolated = 0   environment = 1   user site = 1   import site = 1   sys._base_executable = '\/usr\/local\/bld-tools\/bld-tools-virtual-env\/bin\/python'   sys.base_prefix = '\/usr'   sys.base_exec_prefix = '\/usr'   sys.executable = '\/usr\/local\/bld-tools\/bld-tools-virtual-env\/bin\/python'   sys.prefix = '\/usr'   sys.exec_prefix = '\/usr'   sys.path = [     '\/usr\/lib\/python38.zip',     '\/usr\/lib\/python3.8',     '\/usr\/lib\/lib-dynload',   ] Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding Python runtime state: core initialized ModuleNotFoundError: No module named 'encodings'  Current thread 0x00007f2d42114c00 (most recent call first): &lt;no Python frame><\/code><\/pre>\n<p>  \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c <b>pyenv<\/b> \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 Python \u0432\u0435\u0440\u0441\u0438\u0438 3.8, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 GDB:<\/p>\n<pre><code class=\"plaintext\">curl https:\/\/pyenv.run | bash<\/code><\/pre>\n<p>  \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c pyenv, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 <b>.bashrc<\/b>:<\/p>\n<pre><code class=\"plaintext\">echo 'export PYENV_ROOT=\"$HOME\/.pyenv\"' >> ~\/.bashrc echo 'command -v pyenv >\/dev\/null || export PATH=\"$PYENV_ROOT\/bin:$PATH\"' >> ~\/.bashrc echo 'eval \"$(pyenv init -)\"' >> ~\/.bashrc source ~\/.bashrc<\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c Python \u0432\u0435\u0440\u0441\u0438\u0438 3.8 \u0438 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443: <\/p>\n<pre><code class=\"plaintext\">pyenv install 3.8.18 sudo mkdir -p \/usr\/local\/bld-tools sudo ln -s $PYENV_ROOT\/versions\/3.8.18 \/usr\/local\/bld-tools\/bld-tools-virtual-env<\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u0447\u0442\u043e \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f:<\/p>\n<pre><code class=\"plaintext\">megalloid@megalloid-pc:~$ arm-none-eabi-gdb  GNU gdb (Arm GNU Toolchain 13.2.rel1 (Build arm-13.7)) 13.2.90.20231008-git Copyright (C) 2023 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later &lt;http:\/\/gnu.org\/licenses\/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type \"show copying\" and \"show warranty\" for details. This GDB was configured as \"--host=x86_64-pc-linux-gnu --target=arm-none-eabi\". Type \"show configuration\" for configuration details. For bug reporting instructions, please see: &lt;https:\/\/bugs.linaro.org\/>. Find the GDB manual and other documentation resources online at:     &lt;http:\/\/www.gnu.org\/software\/gdb\/documentation\/>.  For help, type \"help\". Type \"apropos word\" to search for commands related to \"word\". (gdb) <\/code><\/pre>\n<p>  \u041c\u043e\u0436\u043d\u043e \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430. \u0412 \u043e\u0434\u043d\u043e\u043c \u043e\u043a\u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c GDB-\u0441\u0435\u0440\u0432\u0435\u0440:<\/p>\n<pre><code class=\"plaintext\">megalloid@megalloid-pc:~$ st-util st-util 1.7.0-352-g8c581c3 2024-01-08T20:54:20 INFO common.c: STM32F05x: 8 KiB SRAM, 64 KiB flash in at least 1 KiB pages. 2024-01-08T20:54:20 INFO gdb-server.c: Listening at *:4242...<\/code><\/pre>\n<p>  \u0412 \u0434\u0440\u0443\u0433\u043e\u043c \u043e\u043a\u043d\u0435, \u0433\u0434\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d GDB-\u043a\u043b\u0438\u0435\u043d\u0442, \u043f\u0438\u0448\u0435\u043c:<\/p>\n<pre><code class=\"plaintext\">(gdb) target extended localhost:4242 Remote debugging using localhost:4242 warning: No executable has been specified and target does not support determining executable automatically.  Try using the \"file\" command. 0x080006ce in ?? ()<\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0434\u0435\u043c\u043e-\u0444\u0430\u0439\u043b \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u044b, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code class=\"plaintext\">(gdb) exec-file \/home\/megalloid\/STM32\/Blink\/Objects\/fw.axf A program is being debugged already. (gdb) load Loading section RW_IRAM1, size 0x8 lma 0x20000000 Loading section ER_IROM1, size 0xfc0 lma 0x8000000 Start address 0x080000bc, load size 4040 Transfer rate: 7 KB\/sec, 2020 bytes\/write.<\/code><\/pre>\n<p>  \u0412 \u043e\u043a\u043d\u0435 GDB-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"plaintext\">megalloid@megalloid-pc:~$ st-util st-util 1.7.0-352-g8c581c3 2024-01-08T20:54:20 INFO common.c: STM32F05x: 8 KiB SRAM, 64 KiB flash in at least 1 KiB pages. 2024-01-08T20:54:20 INFO gdb-server.c: Listening at *:4242... 2024-01-08T21:10:11 INFO common.c: STM32F05x: 8 KiB SRAM, 64 KiB flash in at least 1 KiB pages. 2024-01-08T21:10:11 INFO gdb-server.c: Found 4 hw breakpoint registers 2024-01-08T21:10:11 INFO gdb-server.c: GDB connected. 2024-01-08T21:17:51 INFO common.c: STM32F05x: 8 KiB SRAM, 64 KiB flash in at least 1 KiB pages. 2024-01-08T21:17:51 INFO gdb-server.c: flash_erase: block 08000000 -> 1000 2024-01-08T21:17:51 INFO gdb-server.c: flash_erase: page 08000000 2024-01-08T21:17:51 INFO gdb-server.c: flash_erase: page 08000400 2024-01-08T21:17:51 INFO gdb-server.c: flash_erase: page 08000800 2024-01-08T21:17:51 INFO gdb-server.c: flash_erase: page 08000c00 2024-01-08T21:17:51 INFO flash_loader.c: Starting Flash write for VL\/F0\/F3\/F1_XL 2024-01-08T21:17:51 INFO flash_loader.c: Successfully loaded flash loader in sram 2024-01-08T21:17:51 INFO flash_loader.c: Clear DFSR 2024-01-08T21:17:51 INFO gdb-server.c: flash_do: block 08000000 -> 1000 2024-01-08T21:17:51 INFO gdb-server.c: flash_do: page 08000000 2024-01-08T21:17:51 INFO gdb-server.c: flash_do: page 08000400 2024-01-08T21:17:51 INFO gdb-server.c: flash_do: page 08000800 2024-01-08T21:17:51 INFO gdb-server.c: flash_do: page 08000c00<\/code><\/pre>\n<p>  \u0422\u0430\u043a. \u041e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0412\u0441\u0435 \u0445\u043e\u0440\u043e\u0448\u043e. \u0418\u0434\u0451\u043c \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0434\u043b\u044f VS Code<\/font><\/h2>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 IDE. \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0437\u0443\u0447\u0438\u0432 \u0432\u043e\u043f\u0440\u043e\u0441, \u044f \u043d\u0430\u0448\u0435\u043b \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 (\u0438 \u043e\u043d, \u043a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439) <b>Cortex-Debug<\/b>. \u041f\u0440\u043e\u0447\u0438\u0442\u0430\u0432 \u0435\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430 <a href=\"https:\/\/github.com\/Marus\/cortex-debug\">\u0441\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/a>, \u043d\u0430\u0448\u0435\u043b \u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043e\u0449\u043d\u044b\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/_3\/kw\/jy\/_3kwjytdxaswkbm-qfuaqbjaw30.png\" data-src=\"https:\/\/habrastorage.org\/webt\/_3\/kw\/jy\/_3kwjytdxaswkbm-qfuaqbjaw30.png\"\/><\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u043b\u0430\u0433\u0438\u043d \u0432 VS Code \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u043a\u0430\u043a\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043e\u043d \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447. <\/p>\n<p>  \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u0432 \u043c\u0435\u043d\u044e <b>Run And Debug<\/b> \u0432 \u0431\u043e\u043a\u043e\u0432\u043e\u043c \u043c\u0435\u043d\u044e \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0444\u0430\u0439\u043b <b>launch.json<\/b>, \u0432\u044b\u0431\u0440\u0430\u0432 \u043f\u0443\u043d\u043a\u0442 <b>Cortex-Debug<\/b>:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/lr\/os\/8n\/lros8na1zjjtlylntd9ugkfa1me.png\" data-src=\"https:\/\/habrastorage.org\/webt\/lr\/os\/8n\/lros8na1zjjtlylntd9ugkfa1me.png\"\/><\/p>\n<p>  \u0422\u0443\u0434\u0430 \u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u043d \u043f\u0443\u0442\u044c \u0434\u043e \u0441\u043a\u0430\u0447\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u043d\u0435\u0435 SVD-\u0444\u0430\u0439\u043b\u0430:<\/p>\n<pre><code class=\"plaintext\">{         \"version\": \"0.2.0\",     \"configurations\": [         {             \"name\": \"Cortex Debug\",             \"cwd\": \"${workspaceFolder}\",             \"executable\": \"${workspaceRoot}\/build\/${workspaceFolderBasename}.elf\",             \"request\": \"launch\",             \"type\": \"cortex-debug\",             \"runToEntryPoint\": \"main\",             \"servertype\": \"stutil\",             \"preLaunchTask\" : \"Build\",             \"preRestartCommands\" : [ \"load\", \"enable breakpoint\", \"monitor reset\" ],             \"showDevDebugOutput\" : \"raw\",             \"svdFile\" : \"${workspaceRoot}\/STM32F0x1.svd\"         }     ] }<\/code><\/pre>\n<p>  \u0412\u043e\u0442! \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0443 \u0438 \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0441\u0440\u0430\u0437\u0443 \u0432\u0441\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043d\u0430\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430. \u041f\u0440\u043e\u0431\u0435\u0436\u0438\u043c\u0441\u044f \u043f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c.<\/p>\n<p>  <b>Variables<\/b>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0438 \u043f\u0440\u043e\u0447\u0435\u0435.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ti\/cw\/ov\/ticwovloieroyfwb8e3cfpatuik.png\" data-src=\"https:\/\/habrastorage.org\/webt\/ti\/cw\/ov\/ticwovloieroyfwb8e3cfpatuik.png\"\/><\/div>\n<p>  <b>Watch<\/b>, \u0441\u0435\u043a\u0446\u0438\u044f \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435 \u0437\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0432\u0437\u044f\u0442\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439: <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/a9\/_q\/iu\/a9_qiut-c-1lpracvovttjlwxxa.png\" data-src=\"https:\/\/habrastorage.org\/webt\/a9\/_q\/iu\/a9_qiut-c-1lpracvovttjlwxxa.png\"\/><\/div>\n<p>  <b>Breakpoints<\/b> \u2014 \u0432\u0441\u0435 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0432 \u043a\u043e\u0434\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b (\u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443), <b>Call Stack<\/b> \u0441 \u043e\u0447\u0435\u0440\u0435\u0434\u044c\u044e \u0432\u044b\u0437\u043e\u0432\u0430, <b>XPeripherials<\/b> \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gv\/84\/za\/gv84zauzsaepwwigiqfwfuqugva.png\" data-src=\"https:\/\/habrastorage.org\/webt\/gv\/84\/za\/gv84zauzsaepwwigiqfwfuqugva.png\"\/><\/p>\n<p>  \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u043d\u044e Memory \u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0432 \u043d\u0430 \u043f\u0430\u0443\u0437\u0443 \u0434\u0435\u0431\u0430\u0433\u0435\u0440 \u0438\u043b\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u0435\u0433\u043e \u043d\u0430 \u0442\u043e\u0447\u043a\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430, \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c \u0430\u0434\u0440\u0435\u0441\u0435: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/br\/jj\/j_\/brjjj_cfoql9sql5jsxuuv0_chk.png\" data-src=\"https:\/\/habrastorage.org\/webt\/br\/jj\/j_\/brjjj_cfoql9sql5jsxuuv0_chk.png\"\/><\/p>\n<p>  \u041e\u0442\u043b\u0438\u0447\u043d\u043e. \u0421 VSCode \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c. \u0418 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0442\u0443\u0442 \u0432\u0441\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043e\u0447\u0435\u043d\u044c \u0434\u0430\u0436\u0435 \u0443\u0434\u043e\u0431\u043d\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u041c\u041a. \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 Eclipse IDE, \u0447\u0442\u043e\u0431\u044b \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u043d \u044e\u0437\u0430\u0431\u0435\u043b\u044c\u043d\u0435\u0435.<\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Eclipse IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 STM32<\/font><\/h2>\n<p>  \u041f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 <b>Eclipse IDE<\/b>. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 \u0438 \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044e <b>IDE for C\/C++ developers<\/b> <a href=\"https:\/\/www.eclipse.org\/downloads\/download.php?file=\/oomph\/epp\/2023-12\/R\/eclipse-inst-jre-linux64.tar.gz\">\u0442\u0443\u0442<\/a>. <\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0440\u0430\u0441\u043f\u0430\u043a\u0443\u0435\u043c \u0430\u0440\u0445\u0438\u0432 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0442\u043e\u0440:<\/p>\n<pre><code class=\"plaintext\">tar xfzv eclipse-inst-jre-linux64.tar.gz cd eclipse-installer .\/eclipse-inst <\/code><\/pre>\n<p>  \u0422\u0443\u0442 \u044f \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439. \u0418\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0442\u043e\u0440 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0441\u044f \u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0441\u044f \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439:<\/p>\n<pre><code class=\"plaintext\">megalloid@megalloid-pc:~\/sources\/eclipse-installer$ .\/eclipse-inst  SLF4J: No SLF4J providers were found. SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See https:\/\/www.slf4j.org\/codes.html#noProviders for further details. EGLDisplay Initialization failed: EGL_BAD_ACCESS EGLDisplay Initialization failed: EGL_NOT_INITIALIZED Cannot create EGL context: invalid display (last error: EGL_SUCCESS) # # A fatal error has been detected by the Java Runtime Environment: # #  SIGSEGV (0xb) at pc=0x00007fc9f21b63ef, pid=266685, tid=266686 # # JRE version: OpenJDK Runtime Environment Temurin-17.0.9+9 (17.0.9+9) (build 17.0.9+9) # Java VM: OpenJDK 64-Bit Server VM Temurin-17.0.9+9 (17.0.9+9, mixed mode, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64) # Problematic frame: # C  [libwebkit2gtk-4.0.so.37+0x29b63ef] # # Core dump will be written. Default location: Core dumps may be processed with \"\/usr\/share\/apport\/apport -p%p -s%s -c%c -d%d -P%P -u%u -g%g -- %E\" (or dumping to \/home\/megalloid\/sources\/eclipse-installer\/core.266685) # # An error report file with more information is saved as: # \/tmp\/hs_err_pid266685.log # # If you would like to submit a bug report, please visit: #   https:\/\/github.com\/adoptium\/adoptium-support\/issues # The crash happened outside the Java Virtual Machine in native code. # See problematic frame for where to report the bug. #<\/code><\/pre>\n<p>  \u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u044d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u043c \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u043c \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b. \u041e\u0431\u043d\u043e\u0432\u0438\u043b \u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e:<\/p>\n<pre><code class=\"plaintext\">wget https:\/\/ru.download.nvidia.com\/XFree86\/Linux-x86_64\/535.146.02\/NVIDIA-Linux-x86_64-535.146.02.run chmod +x NVIDIA-Linux-x86_64-535.146.02.run<\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e <b>\u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u0441\u0435\u0441\u0441\u0438\u044e \u043e\u043a\u043e\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 X Window<\/b> \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0438\u0437 \u043e\u043a\u043d\u0430 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430. \u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0432\u0448\u0438\u0441\u044c \u0442\u0443\u0434\u0430 \u0447\u0435\u0440\u0435\u0437 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448 <b>Ctrl+Alt+F1<\/b>. \u041d\u043e \u044d\u0442\u043e \u043e\u0444\u0444\u0442\u043e\u043f. \u041e\u0431 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0442\u043e\u043c \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445. <\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0441 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u043e\u043c \u2014 \u0442\u0430\u043a\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0441\u044f \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0442\u043e\u0440:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/kx\/xr\/sw\/kxxrswmgv_lnutdacj1d9muztbs.png\" data-src=\"https:\/\/habrastorage.org\/webt\/kx\/xr\/sw\/kxxrswmgv_lnutdacj1d9muztbs.png\"\/><\/div>\n<p>  \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c <b>Eclipse IDE for Embedded C\/C++ Developers<\/b>. \u0418 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0443 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 <b>Install<\/b>. \u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c <b>Launch<\/b>. <\/p>\n<p>  \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0443\u0434\u043e\u0431\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0434\u043b\u044f Workspace Eclipse. \u042f \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/cj\/sn\/h6\/cjsnh6wa5bjjlahvhdq5hbfcazk.png\" data-src=\"https:\/\/habrastorage.org\/webt\/cj\/sn\/h6\/cjsnh6wa5bjjlahvhdq5hbfcazk.png\"\/><\/div>\n<p>  \u041e\u0442\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043e\u043a\u043d\u043e IDE. \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442. \u0417\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c Welcome-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u043c\u0435\u043d\u044e <b>Window \u2014 Preferences<\/b>, \u0433\u0434\u0435 \u043c\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0442\u0443\u043b\u0447\u0435\u0439\u043d. <\/p>\n<p>  \u041e\u0431\u044b\u0447\u043d\u043e \u043f\u0435\u0440\u0432\u044b\u043c \u0448\u0430\u0433\u043e\u043c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f <b>\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f PATH<\/b>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u043d\u0443\u0436\u043d\u0430 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 Makefile-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c. \u042d\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043c\u0435\u043d\u044e <b>C\/C++ \u2014 Build \u2014 Environment<\/b> \u0438 \u0442\u0443\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0443\u0442\u044c \u0434\u043e \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0430. \u0410 \u0440\u0430\u0437 \u043c\u044b \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0432\u044b\u0448\u0435, \u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0442\u0443\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e. <\/p>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u0432 \u043c\u0435\u043d\u044e <b>File \u2014 New \u2014 C\/C++ Projects<\/b> \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c <b>C Managed Build<\/b>:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ye\/vc\/wm\/yevcwm4vgc9q5iyeswckfwfhddw.png\" data-src=\"https:\/\/habrastorage.org\/webt\/ye\/vc\/wm\/yevcwm4vgc9q5iyeswckfwfhddw.png\"\/><\/div>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0443\u043a\u0430\u0436\u0435\u043c \u0438\u043c\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0432 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 <b>STM32F0-Blink<\/b>. \u0418\u0437 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u0443\u043d\u043a\u0442 <b>STM32F0xx C\/C++ Project<\/b>:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/wz\/yd\/er\/wzyderjvuatzprza5yxayv2s-zs.png\" data-src=\"https:\/\/habrastorage.org\/webt\/wz\/yd\/er\/wzyderjvuatzprza5yxayv2s-zs.png\"\/><\/div>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c Next \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u043b\u0430\u0442\u0435 <b>STM32F051x8<\/b>:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/iv\/u-\/m1\/ivu-m1wburhmylhaf-twyto9rrm.png\" data-src=\"https:\/\/habrastorage.org\/webt\/iv\/u-\/m1\/ivu-m1wburhmylhaf-twyto9rrm.png\"\/><\/div>\n<p>  \u041d\u0430\u0436\u0438\u043c\u0430\u0435\u043c Next, \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u043c \u0438 \u0438\u0434\u0435\u043c \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u043c\u0435\u043d\u044e:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ko\/sq\/oa\/kosqoalbicu4pjm4wsg1np5lz-i.png\" data-src=\"https:\/\/habrastorage.org\/webt\/ko\/sq\/oa\/kosqoalbicu4pjm4wsg1np5lz-i.png\"\/><\/div>\n<p>  \u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043c\u0435\u043d\u044e \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0432\u0441\u0435 \u043a\u0430\u043a \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/az\/vc\/n2\/azvcn20ykkecbf7rm6advzkbhne.png\" data-src=\"https:\/\/habrastorage.org\/webt\/az\/vc\/n2\/azvcn20ykkecbf7rm6advzkbhne.png\"\/><\/div>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d \u0432\u044b\u0431\u043e\u0440 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0430 \u0438 \u043f\u0443\u0442\u0438 \u043a \u043d\u0435\u043c\u0443 \u2014 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/po\/g9\/rn\/pog9rnu7p09yirdlrggguwopyjg.png\" data-src=\"https:\/\/habrastorage.org\/webt\/po\/g9\/rn\/pog9rnu7p09yirdlrggguwopyjg.png\"\/><\/div>\n<p>  \u041d\u0430\u0436\u0438\u043c\u0430\u0435\u043c Finish. \u0418 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d \u0448\u0430\u0431\u043b\u043e\u043d \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435. \u0414\u043e\u0436\u0438\u0434\u0430\u0435\u043c\u0441\u044f \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043e\u043a\u043d\u0435: <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/-r\/de\/dz\/-rdedzyhnt_c0c5jq7egdrd8dtu.png\" data-src=\"https:\/\/habrastorage.org\/webt\/-r\/de\/dz\/-rdedzyhnt_c0c5jq7egdrd8dtu.png\"\/><\/div>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043e\u043a\u043d\u043e IDE \u0438 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0432\u0441\u0435 \u0433\u043e\u0442\u043e\u0432\u043e \u043a \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c, \u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u044f \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u2014 \u0432\u044b\u0448\u043b\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0448\u0438\u0431\u043e\u043a: <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/9u\/p9\/0m\/9up90m16-raoyqwydwrlhz4wtnk.png\" data-src=\"https:\/\/habrastorage.org\/webt\/9u\/p9\/0m\/9up90m16-raoyqwydwrlhz4wtnk.png\"\/><\/div>\n<p>  \u041d\u0435 \u0437\u043d\u0430\u044e \u043f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a. \u041d\u043e \u043d\u0430\u0434\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0434\u0440\u0435\u0432\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0444\u0430\u0439\u043b <b>cxx.cpp<\/b> \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043d\u0435\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 stdlib.h:<\/p>\n<pre><code class=\"plaintext\">#include &lt;stdlib.h><\/code><\/pre>\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<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/0x\/az\/qo\/0xazqo74mcl2lonjoup53qza1d4.png\" data-src=\"https:\/\/habrastorage.org\/webt\/0x\/az\/qo\/0xazqo74mcl2lonjoup53qza1d4.png\"\/><\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0431\u043e\u0440\u043a\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u043e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043e\u043a\u043e\u043d\u0447\u0438\u0442\u044c\u0441\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0448\u0438\u0442\u044c \u0432 \u043f\u043b\u0430\u0442\u0443. \u041f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0434\u0432\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438: <b>Debug<\/b> \u0438 <b>Release<\/b> (\u043e\u0442\u043c\u043e\u0442\u0430\u0439\u0442\u0435 \u0432\u044b\u0448\u0435). \u041c\u0435\u0436\u0434\u0443 \u044d\u0442\u0438\u043c\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043a\u043b\u0438\u043a\u043d\u0443\u0432 \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u0432 <b>Project Explorer<\/b> \u043d\u0430 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/oh\/vw\/gg\/ohvwggvvcyytktenczywbityuhw.png\" data-src=\"https:\/\/habrastorage.org\/webt\/oh\/vw\/gg\/ohvwggvvcyytktenczywbityuhw.png\"\/><\/div>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c\u0441\u044f \u0441 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u043d\u0438\u0445. \u0421\u0431\u043e\u0440\u043a\u0430 <b>Debug<\/b> \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u0438 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438, \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430. \u0410 \u0441\u0431\u043e\u0440\u043a\u0430 <b>Release<\/b> \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0438 \u0441\u0440\u0430\u0437\u0443 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0432 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440. \u041d\u043e \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u044d\u0442\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 Eclipse \u043f\u043b\u043e\u0442\u043d\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0441 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u043e\u043c OpenOCD \u2014 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0435\u0433\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c. \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 OpenOCD \u044f \u0432\u044b\u043d\u0435\u0441 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0433\u043b\u0430\u0432\u0443.<\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430 OpenOCD<\/font><\/h2>\n<p>  \u041e\u0434\u0438\u043d \u0438\u0437 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u043c\u0438 \u2014 \u044d\u0442\u043e OpenOCD. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0432 \u0441\u0440\u0435\u0434\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 Eclipse \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430. <\/p>\n<p>  \u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0441 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f:<\/p>\n<pre><code class=\"plaintext\">git clone https:\/\/github.com\/openocd-org\/openocd cd openocd\/ .\/bootstrap .\/configure make -j$(nproc) sudo make install<\/code><\/pre>\n<p>  \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u0447\u0442\u043e \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442:<\/p>\n<pre><code class=\"plaintext\">megalloid@megalloid-pc:~\/sources\/openocd$ openocd --version Open On-Chip Debugger 0.12.0+dev-01472-gadcc8ef87 (2024-01-11-22:57) Licensed under GNU GPL v2 For bug reports, read http:\/\/openocd.org\/doc\/doxygen\/bugs.html<\/code><\/pre>\n<p>  \u041e\u0442\u043b\u0438\u0447\u043d\u043e. \u041e\u0442\u043b\u0430\u0434\u0447\u0438\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0435\u0433\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0435\u043c\u0443 \u0443\u043a\u0430\u0437\u0430\u0442\u044c <b>\u043f\u0443\u0442\u044c \u0434\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 ST-Link \u0438 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430<\/b>. \u0422. \u043a. \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043f\u043b\u0430\u0442\u0443 STM32F0-Discovery, \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"plaintext\">openocd -f \/usr\/local\/share\/openocd\/scripts\/interface\/stlink.cfg -f \/usr\/local\/share\/openocd\/scripts\/board\/stm32f0discovery.cfg<\/code><\/pre>\n<p>  \u041d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0442\u0430\u043c \u043d\u0435\u0442 \u0438 \u0443\u0432\u0435\u0440\u0435\u043d, \u0447\u0442\u043e \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u043a\u043e\u043d\u0444\u0438\u0433 \u0438 \u0434\u043b\u044f \u0441\u0432\u043e\u0435\u0439 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b. <\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043d\u0435\u0447\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435\u0435:<\/p>\n<pre><code class=\"plaintext\">Open On-Chip Debugger 0.12.0+dev-01472-gadcc8ef87 (2024-01-11-22:57) Licensed under GNU GPL v2 For bug reports, read http:\/\/openocd.org\/doc\/doxygen\/bugs.html Warn : Interface already configured, ignoring Error: already specified hl_layout stlink Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG\/SWD srst_only separate srst_nogate srst_open_drain connect_deassert_srst Info : Listening on port 6666 for tcl connections Info : Listening on port 4444 for telnet connections Info : clock speed 1000 kHz Info : STLINK V2J37S0 (API v2) VID:PID 0483:3748 Info : Target voltage: 2.869226 Info : [stm32f0x.cpu] Cortex-M0 r0p0 processor detected Info : [stm32f0x.cpu] target has 4 breakpoints, 2 watchpoints Info : [stm32f0x.cpu] Examination succeed Info : starting gdb server for stm32f0x.cpu on 3333 Info : Listening on port 3333 for gdb connections<\/code><\/pre>\n<p>  \u0425\u043e\u0440\u043e\u0448\u043e. \u0412\u0438\u0434\u0438\u043c, \u0447\u0442\u043e GDB-\u0441\u0435\u0440\u0432\u0435\u0440 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 localhost:3333. \u0418\u0434\u0451\u043c \u0434\u0430\u043b\u044c\u0448\u0435. \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u0432 Eclipse IDE \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c OpenOCD \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a\u0430. \u0414\u043b\u044f \u044d\u0442\u043e \u0438\u0434\u0435\u043c \u0432 \u043c\u0435\u043d\u044e <b>Window \u2014 Preferences \u2014 MCU \u2014 Global OpenOCD Path<\/b> \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ij\/a1\/hh\/ija1hhly4kowkd8oqcwx0x4e9xm.png\" data-src=\"https:\/\/habrastorage.org\/webt\/ij\/a1\/hh\/ija1hhly4kowkd8oqcwx0x4e9xm.png\"\/><\/div>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 <b>Debug Configuration<\/b> \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u043d\u044e <b>Project Explorer \u2014 Debug As \u2014 Debug Configuration<\/b>:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/xf\/yi\/ix\/xfyiixgzbxsreyvgafr6ctgphta.png\" data-src=\"https:\/\/habrastorage.org\/webt\/xf\/yi\/ix\/xfyiixgzbxsreyvgafr6ctgphta.png\"\/><\/div>\n<p>  \u0412 \u043e\u0442\u043a\u0440\u044b\u0432\u0448\u0435\u043c\u0441\u044f \u043e\u043a\u043d\u0435 \u0434\u0432\u043e\u0439\u043d\u044b\u043c \u043a\u043b\u0438\u043a\u043e\u043c \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043d\u0430 \u043f\u0443\u043d\u043a\u0442 <b>GDB OpenOCD Debugging<\/b> \u0438 \u043e\u0442\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u0448\u0430\u0431\u043b\u043e\u043d \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/qa\/cd\/xt\/qacdxts6ilziultj54u93koiji4.png\" data-src=\"https:\/\/habrastorage.org\/webt\/qa\/cd\/xt\/qacdxts6ilziultj54u93koiji4.png\"\/><\/div>\n<p>  \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 <b>Debugger<\/b> \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430 OpenOCD \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438 \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435. \u0412 \u043f\u043e\u043b\u0435 <b>Config options<\/b> \u043f\u0438\u0448\u0435\u043c:<\/p>\n<pre><code class=\"plaintext\">-f \/usr\/local\/share\/openocd\/scripts\/interface\/stlink.cfg -f \/usr\/local\/share\/openocd\/scripts\/board\/stm32f0discovery.cfg<\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0436\u0430\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 Debug \u0438 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u0430 \u043e\u0442\u043b\u0430\u0434\u043a\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u043b\u0430\u0442\u0430 \u0431\u044b\u043b\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043a \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0443. \u0411\u0443\u0434\u0435\u0442 \u0432\u044b\u0434\u0430\u043d\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u0432 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c. \u041d\u0430\u0436\u0438\u043c\u0430\u0435 \u0433\u0430\u043b\u043e\u0447\u043a\u0443 \u043f\u043e\u043c\u043d\u0438\u0442\u044c \u043d\u0430\u0448\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0438 \u043d\u0435 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/me\/kn\/a7\/mekna7l350gf3fw3monac_alxx0.png\" data-src=\"https:\/\/habrastorage.org\/webt\/me\/kn\/a7\/mekna7l350gf3fw3monac_alxx0.png\"\/><\/div>\n<p>  \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0432\u0438\u0434\u043d\u043e, \u043a\u0430\u043a \u0437\u0435\u043b\u0435\u043d\u044b\u0439 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \u043d\u0430\u0447\u0430\u043b \u043c\u0438\u0433\u0430\u0442\u044c \u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/xc\/nl\/ak\/xcnlakqsn8n6ft8ncxy27zobjok.png\" data-src=\"https:\/\/habrastorage.org\/webt\/xc\/nl\/ak\/xcnlakqsn8n6ft8ncxy27zobjok.png\"\/><\/div>\n<p>  \u041e\u0441\u043c\u043e\u0442\u0440\u0438\u043c\u0441\u044f, \u043a\u0430\u043a\u0438\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0432 Eclipse IDE. \u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043e\u0431\u0440\u0430\u0442\u0438\u043c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 <b>Disassembly<\/b> \u043e\u043a\u043d\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a\u043d\u043e\u043f\u043a\u043e\u0439 <b>Instruction Stepping Mode<\/b>: <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ir\/av\/dp\/iravdpqxgl_ghqx70cbtziy8amc.png\" data-src=\"https:\/\/habrastorage.org\/webt\/ir\/av\/dp\/iravdpqxgl_ghqx70cbtziy8amc.png\"\/><\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u0438\u0449\u0435\u043c, \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f <b>\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u044f\u0434\u0440\u0430 Cortex<\/b>:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/oo\/1e\/fh\/oo1efhwcknaqagk2vlmn6kxrh-g.png\" data-src=\"https:\/\/habrastorage.org\/webt\/oo\/1e\/fh\/oo1efhwcknaqagk2vlmn6kxrh-g.png\"\/><\/div>\n<p>  \u0414\u043e\u043b\u0433\u043e \u043a\u043e\u0432\u044b\u0440\u044f\u044f\u0441\u044c \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u044f \u043d\u0435 \u043c\u043e\u0433 \u043d\u0430\u0439\u0442\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438. \u0412 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u043e\u043c \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043e\u043a\u043d\u0435 \u0431\u044b\u043b\u043e \u043f\u0443\u0441\u0442\u043e. \u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c\u0441\u044f, \u043a\u0430\u043a \u044d\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c. \u041f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043a\u043b\u0438\u043a\u043d\u0443\u0432 \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043f\u043e \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 <b>Project Manager \u2014 Preferences \u2014 C\/C++ Build \u2014 Settings<\/b>. \u0412\u044b\u0431\u0435\u0440\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e <b>Debug<\/b> \u0438 \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u0432 \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0443 <b>Devices<\/b> \u0438 \u0443\u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u043d\u0438 \u043e\u0434\u0438\u043d CMSIS-\u043f\u0430\u043a. \u0427\u0442\u043e \u0436, \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u0434\u0435\u0431\u0430\u0433. <\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u043c\u0435\u043d\u044e <b>Window \u2014 Perspective \u2014 Open Perspective \u2014 Other\u2026 \u2014 CMSIS Packs<\/b>. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u0436\u0430\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 <b>Refresh<\/b>, \u0437\u0430\u0433\u0440\u0443\u0437\u044f\u0442\u0441\u044f \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f. \u042d\u0442\u043e \u0437\u0430\u0439\u043c\u0435\u0442 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u0447\u0430\u0441\u0442\u044c \u043f\u0430\u043a\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043a \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435. <\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432, \u0443 \u043c\u0435\u043d\u044f \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 <b>STM32F0<\/b>. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0435\u0433\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c, \u043d\u0430\u0436\u0430\u0432 \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u0443\u043d\u043a\u0442 <b>Install<\/b>. <\/p>\n<p>  \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/zh\/cr\/zt\/zhcrzt_6qupmh_leme6-ba7slf0.png\" data-src=\"https:\/\/habrastorage.org\/webt\/zh\/cr\/zt\/zhcrzt_6qupmh_leme6-ba7slf0.png\"\/><\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u0432 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u0438 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u043e \u0443\u0436\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u043c\u0443 \u043d\u0430\u043c \u043f\u0443\u0442\u0438: <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/qr\/pa\/wo\/qrpawomgm2iy2v8te8nq-pmxomu.png\" data-src=\"https:\/\/habrastorage.org\/webt\/qr\/pa\/wo\/qrpawomgm2iy2v8te8nq-pmxomu.png\"\/><\/div>\n<p>  \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043c\u0435\u043d\u044e <b>C\/C++ Build \u2014 Settings \u2014 Devices<\/b> \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/jr\/r2\/8v\/jrr28vrkzybeyrgbb4rlivnpgdy.png\" data-src=\"https:\/\/habrastorage.org\/webt\/jr\/r2\/8v\/jrr28vrkzybeyrgbb4rlivnpgdy.png\"\/><\/div>\n<p>  \u0412\u0441\u0435. \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u043c\u0435\u0441\u0442\u0443 \u0433\u0434\u0435 \u043c\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c. \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u2014 \u0432 \u043e\u043a\u043d\u0435 <b>Peripherials<\/b> \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0432\u0441\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430\u044f \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u044f:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/8v\/tf\/ai\/8vtfais4lnger53010ek9h6lpie.png\" data-src=\"https:\/\/habrastorage.org\/webt\/8v\/tf\/ai\/8vtfais4lnger53010ek9h6lpie.png\"\/><\/div>\n<p>  \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0431\u0435\u0436\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 \u043e\u043a\u043d\u0430 \u2014 \u0441\u0443\u0434\u044f \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u0432\u0441\u0435 \u043e\u043f\u0446\u0438\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442. \u0421\u0443\u043f\u0435\u0440. \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c Release-\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0438 \u043d\u0430 \u044d\u0442\u043e\u043c \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u0430 \u0432 \u0438 \u0442\u0430\u043a \u0440\u0430\u0437\u0434\u0443\u0432\u0448\u0435\u0439\u0441\u044f \u0441\u0442\u0430\u0442\u044c\u0435 ?.<\/p>\n<p>  \u041e\u0442\u043a\u0440\u043e\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u043c\u0435\u043d\u044e <b>C\/C++ Build \u2014 Settings \u2014 GNU Arm Cross Create Flash Image \u2014 General<\/b> \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c <b>Configuration: Release<\/b>:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/rk\/s3\/hn\/rks3hnqpbibupiv5uu6ioxfj8a4.png\" data-src=\"https:\/\/habrastorage.org\/webt\/rk\/s3\/hn\/rks3hnqpbibupiv5uu6ioxfj8a4.png\"\/><\/div>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043f\u0440\u043e\u0448\u0438\u0432\u0430\u043b\u044c\u0449\u0438\u043a \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u0431\u0438\u043d\u0430\u0440\u044f \u0432 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440. <\/p>\n<p>  \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u043c\u0435\u043d\u044e <b>Run \u2014 External Tools \u2014 External Tools Configuration<\/b>. \u0414\u0432\u043e\u0439\u043d\u044b\u043c \u043a\u043b\u0438\u043a\u043e\u043c \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c <b>Program<\/b> \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e. <\/p>\n<ul>\n<li>\u041e\u0431\u0437\u043e\u0432\u0435\u043c \u0435\u0435 <b>ST-Link Flash<\/b>;<\/li>\n<li>\u0412 \u043f\u043e\u043b\u0435 Location \u0443\u043a\u0430\u0436\u0435\u043c \u043f\u0443\u0442\u044c \u0434\u043e st-flash: <b>\/usr\/local\/bin\/st-flash<\/b>;<\/li>\n<li>\u0412 \u043f\u043e\u043b\u0435 Arguments \u0443\u043a\u0430\u0436\u0435\u043c <b>write<\/b> <b><i>{project_loc}\/Release\/<\/i><\/b><b>{project_name}.bin 0x08000000<\/b>.<\/li>\n<\/ul>\n<p>  \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435: <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/oz\/vc\/y5\/ozvcy507fwtz_ij66f9kvxuglaq.png\" data-src=\"https:\/\/habrastorage.org\/webt\/oz\/vc\/y5\/ozvcy507fwtz_ij66f9kvxuglaq.png\"\/><\/div>\n<p>  \u041d\u0430\u0436\u0438\u043c\u0430\u0435\u043c <b>Run<\/b> \u0438 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u0430 \u043d\u0430 \u041c\u041a \u0438 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u044b \u0437\u0430\u043c\u0438\u0433\u0430\u044e\u0442:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/yx\/gl\/oq\/yxgloqrlkl7jmprqpcojjbjheps.png\" data-src=\"https:\/\/habrastorage.org\/webt\/yx\/gl\/oq\/yxgloqrlkl7jmprqpcojjbjheps.png\"\/><\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u0438\u0437 Release \u2014 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u0436\u0430\u0442\u044c \u044d\u0442\u0443 \u043a\u043d\u043e\u043f\u043a\u0443 \u0438\u0437 \u043c\u0435\u043d\u044e: <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/4p\/7y\/cy\/4p7ycyopvclcuebkmruekdx3jcc.png\" data-src=\"https:\/\/habrastorage.org\/webt\/4p\/7y\/cy\/4p7ycyopvclcuebkmruekdx3jcc.png\"\/><\/div>\n<p>  \u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u043d\u0430 \u044d\u0442\u043e\u043c \u0432\u0441\u0451. <\/p>\n<h2><font color=\"#1c22be\">\u276f<\/font> <font color=\"#454cee\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/font><\/h2>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0441\u0430\u043c\u044b\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 IDE \u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u043b\u044f STM32 \u2014 <b>\u0432\u044b\u0431\u043e\u0440 \u0437\u0430 \u0432\u0430\u043c\u0438<\/b>. \u0421\u043e\u0433\u043b\u0430\u0441\u0435\u043d, \u0447\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432\u0435\u0441\u044c\u043c\u0430 \u043e\u0431\u044a\u0435\u043c\u043d\u0430\u044f, \u043d\u043e \u0432\u0441\u0435 \u0436\u0435 \u043e\u043d\u0430 \u043d\u0435 \u043b\u0438\u0448\u0435\u043d\u0430 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u0438 \u0432 \u0432\u044b\u0431\u043e\u0440\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438 \u043e\u043f\u0446\u0438\u0439. \u041d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u044f \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u043e\u043f\u0446\u0438\u0438 \u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043b \u2014 \u043d\u043e \u0435\u0441\u043b\u0438 \u043c\u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e \u0447\u0435\u043c \u0432\u0430\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0442\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u044e. <\/p>\n<p>  \u0414\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0438 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445! ?<\/p>\n<hr\/>\n<p>  <\/p>\n<h4><font color=\"#454cee\">\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0437\u0430\u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0438 \u044d\u0442\u043e:<\/font><\/p>\n<ul>\n<li>\u27a4 <a href=\"https:\/\/habr.com\/ru\/companies\/timeweb\/articles\/785746\/\">\u0421\u043e\u0437\u0434\u0430\u0435\u043c I2C Master Controller \u043d\u0430 Verilog. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0443 \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0436\u0435\u043b\u0435\u0437\u0435<\/a><\/li>\n<li>\u27a4 <a href=\"https:\/\/habr.com\/ru\/companies\/timeweb\/articles\/786212\/\">\u0418\u0433\u0440\u043e\u0432\u0430\u044f \u043b\u0435\u0433\u0435\u043d\u0434\u0430 \u0438\u0437 \u043d\u0443\u043b\u0435\u0432\u044b\u0445: \u043a\u0430\u043a\u0438\u043c \u0431\u044b\u043b Nokia N-Gage QD? \u041e\u0431\u0437\u043e\u0440, \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u0440\u0435\u043c\u043e\u043d\u0442 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0434 Symbian<\/a><\/li>\n<li>\u27a4 <a href=\"https:\/\/habr.com\/ru\/companies\/timeweb\/articles\/782856\/\">\u041c\u04216205. \u041f\u043b\u0430\u0437\u043c\u0435\u043d\u043d\u044b\u0439 \u0434\u0438\u0441\u043f\u043b\u0435\u0439 \u0441\u043e\u0432\u0435\u0442\u0441\u043a\u043e\u0439 \u044d\u043f\u043e\u0445\u0438<\/a><\/li>\n<li>\u27a4 <a href=\"https:\/\/habr.com\/ru\/companies\/timeweb\/articles\/780970\/\">\u041e\u0431\u0437\u043e\u0440 \u043e\u0434\u043d\u043e\u0446\u0435\u043b\u0435\u0432\u044b\u0445 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u043e\u0432 Linux<\/a><\/li>\n<li>\u27a4 <a href=\"https:\/\/habr.com\/ru\/companies\/timeweb\/articles\/784446\/\">\u041f\u043e\u043b\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u0432\u0441\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u00ab\u0413\u0430\u0440\u0440\u0438 \u041f\u043e\u0442\u0442\u0435\u0440\u0430\u00bb \u2014 \u00ab\u0417\u043e\u043b\u043e\u0442\u043e\u0435 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0435\u00bb<\/a><\/li>\n<\/ul>\n<p>  <a href=\"https:\/\/timeweb.cloud\/vds-vps?utm_source=habr&amp;utm_medium=banner&amp;utm_campaign\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/b5\/pj\/of\/b5pjofdoxth14ro-rjsrn7sbmiy.png\" data-src=\"https:\/\/habrastorage.org\/webt\/b5\/pj\/of\/b5pjofdoxth14ro-rjsrn7sbmiy.png\"\/><\/a><\/h4>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/787328\/\"> https:\/\/habr.com\/ru\/articles\/787328\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\u0412 \u043d\u0435\u0434\u0430\u0432\u043d\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0442\u0430\u043a, \u0447\u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043f\u0430\u0440\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0433\u0434\u0435 \u043e\u0434\u043d\u0430 \u0438\u0437 \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u044b\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 \u2014 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 STM32. \u0418 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u0440\u0438 \u0441\u043c\u0435\u043d\u0435 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0430 \u0438\u043b\u0438 \u041e\u0421 \u043d\u0430 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u043c \u043a\u043e\u043c\u043f\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u0430\u043a \u0432 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437. \u041f\u043b\u044e\u0441\u043e\u043c, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0434\u0435\u043b\u0430\u043b \u0434\u043b\u044f STM32 \u2014 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b \u0432 Windows, \u0432 \u0434\u0435\u043c\u043e-\u0432\u0435\u0440\u0441\u0438\u0438 Keil uVision. \u041d\u043e \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044f \u0434\u0430\u0432\u043d\u043e \u043f\u0435\u0440\u0435\u0435\u0445\u0430\u043b \u0432 Linux \u2014 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0438 \u0438\u0437\u043b\u043e\u0436\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0431\u0443\u0434\u0443\u0449\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0439.<\/p>\n<p>  \u0412\u0441\u0435\u043c, \u043a\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u2014 \u0434\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434 \u043a\u0430\u0442.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/q2\/iy\/_z\/q2iy_zykye4ndiypgsk311rpgss.png\" data-src=\"https:\/\/habrastorage.org\/webt\/q2\/iy\/_z\/q2iy_zykye4ndiypgsk311rpgss.png\"\/><\/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-365665","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/365665","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=365665"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/365665\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=365665"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=365665"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=365665"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}