{"id":272032,"date":"2016-01-13T09:32:02","date_gmt":"2016-01-13T06:32:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=272032"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=272032","title":{"rendered":"STM32F4: GNU AS: \u041c\u0438\u0433\u0430\u0435\u043c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c (\u0412\u0435\u0440\u0441\u0438\u044f \u0434\u043b\u044f STM32F4 Discovery, \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f) (\u0427\u0430\u0441\u0442\u044c 3)"},"content":{"rendered":"<p>       \u041d\u0443 \u0447\u0442\u043e \u0436\u0435, \u043d\u043e\u0432\u043e\u0433\u043e\u0434\u043d\u0438\u0435 \u043f\u0440\u0430\u0437\u0434\u043d\u0438\u043a\u0438 \u043a\u043e\u043d\u0447\u0438\u043b\u0438\u0441\u044c, \u0438 \u043d\u0430\u0447\u0430\u043b\u0438\u0441\u044c \u0442\u0440\u0443\u0434\u043e\u0432\u044b\u0435 \u0431\u0443\u0434\u043d\u0438 \ud83d\ude42 \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043e\u043c \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 <b>STM32F4<\/b><\/p>\n<p>  \u0421\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u044b\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438:<br \/>  <a href=\"http:\/\/habrahabr.ru\/post\/274541\/\">STM32: GNU AS: \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 (\u0427\u0430\u0441\u0442\u044c 1)<\/a><br \/>  <a href=\"http:\/\/habrahabr.ru\/post\/274579\/\">STM32F4: GNU AS: \u041c\u0438\u0433\u0430\u0435\u043c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c (\u041e\u0436\u0438\u0432\u043b\u0435\u043d\u0438\u0435) (\u0427\u0430\u0441\u0442\u044c 2)<\/a><\/p>\n<p>  \u0412 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043e\u0442\u043f\u0438\u0441\u0430\u043b\u0441\u044f \u043e \u0442\u043e\u043c \u0447\u0442\u043e \u0435\u043c\u0443 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u00ab\u043c\u0438\u0433\u0430\u043b\u043a\u0443\u00bb \u043d\u0430 <b>STM32F4 Discovery<\/b> \u2014 \u0437\u043d\u0430\u0447\u0438\u0442 \u043b\u0438\u0431\u043e \u043d\u0435 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b\u0438, \u043b\u0438\u0431\u043e \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c. \u0418\u0441\u043f\u0440\u0430\u0432\u0438\u043c \u044d\u0442\u0443 \u043c\u0435\u043b\u043e\u0447\u044c:<br \/>  <a name=\"habracut\"><\/a><\/p>\n<p>  1) \u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u043f\u0438\u0441\u0430\u043b \u0432 <a href=\"http:\/\/habrahabr.ru\/post\/274579\/\">\u043f\u0440\u043e\u0448\u043b\u043e\u0439<\/a> \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u043c\u043e\u0435\u0439 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u043e\u0439 \u0438 <a href=\"http:\/\/www.st.com\/web\/catalog\/tools\/FM116\/SC959\/SS1532\/PF252419?sc=internet\/evalboard\/product\/252419.jsp\">STM32F4 Discovery<\/a> \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0432\u044b\u0432\u043e\u0434\u0430\u0445 \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. \u0422\u043e \u0435\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0440\u0442 <b>GPIOx<\/b> \u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u044b\u0445\u043e\u0434 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0440\u0442\u0430.<br \/>  \u0423\u0437\u043d\u0430\u0442\u044c \u043a\u0443\u0434\u0430 \u0436\u0435 \u0432\u0441\u0435 \u0442\u0430\u043a\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u044b \u043c\u043e\u0436\u043d\u043e \u0438\u0437 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b <a href=\"http:\/\/www.st.com\/st-web-ui\/static\/active\/en\/resource\/technical\/document\/user_manual\/DM00039084.pdf\">Discovery kit for STM32F407\/417 lines<\/a>. <br \/>  \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f\u0445 \u0435\u0441\u0442\u044c \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0432 \u0442\u0440\u0435\u0445 \u043c\u0435\u0441\u0442\u0430\u0445:  <\/p>\n<ol>\n<li>\u0432 \u043f\u0430\u0440\u0430\u0433\u0440\u0430\u0444\u0435 4.4 LEDs, \u0441\u0442\u0440. 16<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/29a\/e86\/395\/29ae863956a64a868fc28c2666d52feb.jpg\"\/><\/li>\n<li>\u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c Table 5. MCU pin description versus board function \u0441\u0442\u0440. 21-32, \u043d\u0443\u0436\u043d\u0430\u044f \u043d\u0430\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043d\u0430 \u0441\u0442\u0440. 30<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/1a5\/69f\/964\/1a569f9643314de9834e27b1c1e1ab9e.jpg\"\/><\/li>\n<li>\u043d\u0430 \u043b\u0438\u0441\u0442\u0435 Figure 16. Peripherals, \u0441\u0442\u0440. 40<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/251\/228\/edb\/251228edbd234a8b980f77fdbfa66f7d.jpg\" alt=\"image\"\/><\/li>\n<\/ol>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0432\u0441\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u043c \u00ab\u0434\u043e \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u0433\u043e\u00bb: 4 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043a <b>GPIOD<\/b> \u0432\u044b\u0432\u043e\u0434\u0430\u043c <b>12, 13, 14, 15<\/b>.<br \/>  \u041a\u0430\u043a \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0441\u044f \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043b\u044e\u0431\u043e\u0439, \u043f\u0443\u0441\u0442\u044c \u0432 \u00ab\u043c\u0438\u0433\u0430\u043b\u043a\u0435\u00bb \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \u0441\u0438\u043d\u0435\u0433\u043e \u0446\u0432\u0435\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0439 \u043a <b>GPIOD 15<\/b><\/p>\n<p>  2) \u0418\u0437\u043c\u0435\u043d\u044f\u0435\u043c <a href=\"http:\/\/habrahabr.ru\/post\/274579\/#pr01\">\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443<\/a> \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f <b>GPIOD<\/b> (\u0432\u043c\u0435\u0441\u0442\u043e <b>GPIOH<\/b>) \u0438 \u0432\u044b\u0432\u043e\u0434\u0430 <b>15<\/b> (\u0432\u043c\u0435\u0441\u0442\u043e <b>2<\/b>)<br \/>  \u041f\u0435\u0440\u0432\u043e\u0435 \u0447\u0442\u043e \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u2014 \u044d\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 <b>GPIOD<\/b>, \u0442\u0443\u0442 \u0434\u0430\u0436\u0435 \u043d\u0435 \u0431\u0443\u0434\u0443 \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442, \u043d\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0435\u0441\u0442\u044c \u043d\u0430 \u0441\u0442\u0430\u0440\u043e\u043c:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/3a8\/7a1\/f53\/3a87a1f533fc415ba083dbb1ceca2d83.jpg\" alt=\"image\"\/><br \/>  \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f <b>GPIOH<\/b>, \u0430 \u0434\u043b\u044f <b>GPIOD<\/b> \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c: <b>RCC_AHB1ENR_GPIODEN<\/b> \u2014 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0441 \u0443\u0436\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0440\u0430\u043d\u0435\u0435 \u0432 \u043e\u0434\u043d\u043e\u0439 \u0431\u0443\u043a\u0432\u0435!!!  <\/p>\n<pre><code class=\"xml\">Reset: \t\t@ \u0432\u043a\u043b\u044e\u0447\u0438\u043c \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 GPIOD \t\tMOV32\tR0, PERIPH_BASE + RCC_BASE + RCC_AHB1ENR  @ \u0430\u0434\u0440\u0435\u0441 \t\tMOV32   R1, RCC_AHB1ENR_GPIODEN                   @ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \t\tLDR\tR2, [R0]       @ \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \t\tORR\tR1, R1, R2     @ \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435, \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u0435 \u0418\u041b\u0418: R1= R1 \u0418\u041b\u0418 R2 \t\tSTR\tR1, [R0]       @ \u0437\u0430\u043f\u0438\u0441\u044c R1 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 R0 <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0432\u044b\u0432\u043e\u0434\u0430 <b>15<\/b> <b>GPIOD<\/b> \u043d\u0430 \u0432\u044b\u0445\u043e\u0434: \u0442\u0443\u0442 \u043c\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0442\u0430\u043a\u043e\u0435 \u00ab\u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0435\u00bb \u2014 \u0434\u0435\u043b\u043e \u0432 \u0442\u043e\u043c \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 <b>GPIO<\/b> \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0438 \u0442\u0435\u043c \u0436\u0435 \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u0441 \u043e\u0434\u043d\u0438\u043c\u0438 \u0438 \u0442\u0435\u043c\u0438 \u0436\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438(!), \u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u0438\u043c \u0432\u044b\u0437\u0432\u0430\u043d\u0430 \u0442\u0430\u043a\u0430\u044f \u00ab\u0441\u0442\u0440\u0430\u043d\u043d\u0430\u044f\u00bb \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0430\u0434\u0440\u0435\u0441\u0430 \u0442\u043e\u0433\u043e \u0438\u043b\u0438 \u0438\u043d\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430<br \/>  \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u0441 \u0438\u043c\u0435\u043d\u0435\u043c GPIO_MODER_MODER<b>2<\/b>_0 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c GPIO_MODER_MODER<b>15<\/b>_0 \u0438 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u0432 \u0440\u0430\u0441\u0447\u0435\u0442\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 <b>MODER<\/b> \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 <b>GPIOD_BASE<\/b> (\u0440\u0430\u043d\u044c\u0448\u0435 \u0442\u0430\u043c \u0441\u0442\u043e\u044f\u043b\u043e <b>GPIOH_BASE<\/b>)  <\/p>\n<pre><code class=\"xml\">\t\t@ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0440\u0435\u0436\u0438\u043c \u0432\u044b\u0432\u043e\u0434\u0430 15 \u043f\u043e\u0440\u0442\u0430 GPIOD &quot;\u043d\u0430 \u0432\u044b\u0445\u043e\u0434&quot; \t\tMOV32\tR0, PERIPH_BASE + GPIOD_BASE + GPIO_MODER  @ \u0430\u0434\u0440\u0435\u0441 \t\tMOV32   R1, GPIO_MODER_MODER15_0                   @ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \t\tLDR\tR2, [R0]       @ \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \t\tORR\tR1, R1, R2     @ \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435, \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u0435 \u0418\u041b\u0418: R1= R1 \u0418\u041b\u0418 R2 \t\tSTR\tR1, [R0]       @ \u0437\u0430\u043f\u0438\u0441\u044c R1 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 R0  <\/code><\/pre>\n<p>  \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0431\u043b\u043e\u043a\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u00ab\u043c\u0438\u0433\u0430\u043d\u0438\u044f\u00bb: \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c \u0431\u0430\u0437\u0443 <b>GPIO<\/b> \u043d\u0430 <b>GPIOD_BASE<\/b> (\u0432\u043c\u0435\u0441\u0442\u043e <b>GPIOH_BASE<\/b>), \u0438 \u0432 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u043c \u0432\u0438\u0434\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c \u043a\u043e\u0434 \u043d\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0430 \u043f\u043e\u0440\u0442\u0430, \u043f\u043e\u0432\u0442\u043e\u0440\u044e\u0441\u044c: \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043c\u043b\u0430\u0434\u0448\u0438\u0435 16 \u0431\u0438\u0442 \u0441\u043b\u043e\u0432\u0430, \u0434\u043b\u044f \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0440\u0448\u0438\u0435 16 \u0431\u0438\u0442, \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u043e\u0432 \u043f\u043e\u0440\u0442\u043e\u0432 \u0438\u0434\u0435\u0442 \u043e\u0442 0, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0430\u043c\u044b\u0439 \u0441\u0442\u0430\u0440\u0448\u0438\u0439 15 \u0431\u0438\u0442 \u043f\u043e \u00ab\u0441\u0447\u0435\u0442\u0443\u00bb \u0431\u0443\u0434\u0435\u0442 16-\u044b\u043c  <\/p>\n<pre><code class=\"xml\">BLINK_LOOP: \t\t@ \u0432\u043a\u043b\u044e\u0447\u0438\u043c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \t\tMOV32\tR0, PERIPH_BASE + GPIOD_BASE + GPIO_BSRR  @ \u0430\u0434\u0440\u0435\u0441 \t\tMOV32   R1, 0x8000    @ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u043c \u0432\u0438\u0434\u0435 1000 0000 0000 0000 \t\tSTR\tR1, [R0]      @ \u0437\u0430\u043f\u0438\u0441\u044c R1 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 R0 \t \t\tBL\tDELAY         @   \u043f\u0430\u0443\u0437\u0430 \t \t\t@ \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u043c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \t\tMOV32\tR0, PERIPH_BASE + GPIOD_BASE + GPIO_BSRR  @ \u0430\u0434\u0440\u0435\u0441 \t\tMOV32   R1, 0x8000 &lt;&lt; 16   @ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u043b\u0443\u0441\u043b\u043e\u0432\u043e \t\tSTR\tR1, [R0]           @ \u0437\u0430\u043f\u0438\u0441\u044c R1 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 R0 <\/code><\/pre>\n<p>  \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"xml\">@GNU AS  @ \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 .syntax unified   @ \u0442\u0438\u043f \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 .thumb            @ \u0442\u0438\u043f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 Thumb .cpu cortex-m4    @ \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440  .include &quot;stm32f40x.inc&quot;   @ \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430  @ \u043c\u0430\u043a\u0440\u043e\u0441 \u043f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u043c\u0430\u043d\u0434\u044b MOV32 .macro\tMOV32 regnum,number \tMOVW \\regnum,:lower16:\\number \tMOVT \\regnum,:upper16:\\number .endm  @ \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 .section .text  .word\t0x20020000\t@ \u0412\u0435\u0440\u0448\u0438\u043d\u0430 \u0441\u0442\u0435\u043a\u0430 .word\tReset+1\t\t@ \u0412\u0435\u043a\u0442\u043e\u0440 \u0441\u0431\u0440\u043e\u0441\u0430  Reset: \t\t@ \u0432\u043a\u043b\u044e\u0447\u0438\u043c \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 GPIO_D \t\tMOV32\tR0, PERIPH_BASE + RCC_BASE + RCC_AHB1ENR  @ \u0430\u0434\u0440\u0435\u0441 \t\tMOV32   R1, RCC_AHB1ENR_GPIODEN                   @ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \t\tLDR\tR2, [R0]    @ \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \t\tORR\tR1, R1, R2  @ \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435, \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u0435 \u0418\u041b\u0418: R1= R1 \u0418\u041b\u0418 R2 \t\tSTR\tR1, [R0]    @ \u0437\u0430\u043f\u0438\u0441\u044c R1 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 R0  \t\t@ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0440\u0435\u0436\u0438\u043c GPIO_D pin_15 \t\tMOV32\tR0, PERIPH_BASE + GPIOD_BASE + GPIO_MODER  @ \u0430\u0434\u0440\u0435\u0441 \t\tMOV32   R1, GPIO_MODER_MODER15_0                   @ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \t\tLDR\tR2, [R0]    @ \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \t\tORR\tR1, R1, R2  @ \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435, \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u0435 \u0418\u041b\u0418: R1= R1 \u0418\u041b\u0418 R2 \t\tSTR\tR1, [R0]    @ \u0437\u0430\u043f\u0438\u0441\u044c R1 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 R0  BLINK_LOOP: \t\t@ \u0432\u043a\u043b\u044e\u0447\u0438\u043c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \t\tMOV32\tR0, PERIPH_BASE + GPIOD_BASE + GPIO_BSRR   @ \u0430\u0434\u0440\u0435\u0441 \t\tMOV32   R1, 0x8000  @ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 1000 0000  0000 0000 \t\tSTR\tR1, [R0]    @ \u0437\u0430\u043f\u0438\u0441\u044c R1 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 R0 \t \t\tBL\tDELAY       @  \u043f\u0430\u0443\u0437\u0430 \t \t\t@ \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u043c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \t\tMOV32\tR0, PERIPH_BASE + GPIOD_BASE + GPIO_BSRR  @ \u0430\u0434\u0440\u0435\u0441 \t\tMOV32   R1, 0x8000 &lt;&lt; 16  @ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435  \t\tSTR\tR1, [R0]          @ \u0437\u0430\u043f\u0438\u0441\u044c R1 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 R0  \t\tBL\tDELAY       @  \u043f\u0430\u0443\u0437\u0430\t  \t\tB\tBLINK_LOOP  @ \u0434\u0435\u043b\u0430\u0435\u043c \u0446\u0438\u043a\u043b  DELAY: \t\tMOV32\tR2, 0x00100000    @ \u043f\u043e\u0432\u0442\u043e\u0440 \u0446\u0438\u043a\u043b\u0430 0x0010 0000 \u0440\u0430\u0437. Delay_loop:\t \t\tSUBS\tR2, R2, 1 \t\tBNE\tDelay_loop \t\tBX\tLR  <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0441\u043a\u0430\u0447\u0430\u0442\u044c <a href=\"https:\/\/yadi.sk\/d\/bdQH8yqWmh8XM\">\u043f\u0440\u043e\u0435\u043a\u0442<\/a> (\u041a\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442 \u043d\u0430 STM32F4 Discovery &quot;+1&quot; \u0432 \u0440\u0435\u043f\u0443\u0442\u0430\u0446\u0438\u044e \u043e\u0442 \u043c\u0435\u043d\u044f (\u0443 \u043c\u0435\u043d\u044f \u043f\u043b\u0430\u0442\u044b STM32F4 Discovery \u043d\u0435\u0442)<\/p>\n<p>  \u044f \u043d\u0430\u0434\u0435\u044e\u0441\u044c \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u00ab\u043c\u0438\u0433\u0430\u043b\u043a\u0443\u00bb \u043d\u0430 \u043b\u044e\u0431\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u0432 \u043a \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0443 STM32F4xx \u0443 \u0432\u0430\u0441 \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0435\u0442.<\/p>\n<hr\/>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0442\u043e\u0438\u0442 \u0432\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0447\u0442\u043e \u0436\u0435 \u0432\u0441\u0435 \u0442\u0430\u043a\u0438 \u0443 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438.<\/p>\n<blockquote><p>\u0412 \u043d\u043e\u0432\u043e\u043c <a href=\"https:\/\/yadi.sk\/d\/bdQH8yqWmh8XM\">\u043f\u0440\u043e\u0435\u043a\u0442\u0435<\/a> \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438 \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 <b>\/compile\/temp<\/b> \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u044b \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c &quot;.\u043e&quot; \u0438 \u0444\u0430\u0439\u043b \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 &quot;.elf&quot;, \u043d\u043e \u0438 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u044b\u0435:  <\/p>\n<ol>\n<li><b>labels.lst<\/b> \u2014 \u0444\u0430\u0439\u043b \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0432\u0441\u0435\u0445 \u043c\u0435\u0442\u043e\u043a \u0441 \u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u043e\u0441\u043b\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a\u043e\u043c (\u0440\u0430\u043d\u044c\u0448\u0435 \u044f \u0435\u0433\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u043b \u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a\u043e\u043c)<\/li>\n<li><b>sections.lst<\/b> \u2014 \u0444\u0430\u0439\u043b \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0441\u0435\u043a\u0446\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/li>\n<li><b>main_text.lst<\/b> \u2014 \u0444\u0430\u0439\u043b \u0441\u043a\u043e\u043c\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 \u0441\u0435\u043a\u0446\u0438\u0438 <b>.text<\/b> <\/li>\n<\/ol>\n<p>  \u0412 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c, \u043a\u043e\u0433\u0434\u0430 \u0447\u0442\u043e-\u0442\u043e \u0438\u0434\u0435\u0442 \u043d\u0435 \u0442\u0430\u043a \u043a\u0430\u043a \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b, \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0444\u0430\u0439\u043b\u044b <b>labels.lst<\/b> \u2014 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442, \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u043c\u0435\u0442\u043e\u043a, \u0438 <b>main_text.lst<\/b> \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0437\u0430 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438<\/p><\/blockquote>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0436\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0430\u0448\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u0435\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a<\/p>\n<p>  \u041f\u0435\u0440\u0432\u044b\u043c \u0431\u043b\u043e\u043a\u043e\u043c \u0438\u0434\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043a\u0430\u043a \u044f \u0443\u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u2014 \u043a\u043e\u0434 ARM \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c\u044b\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0430\u0434\u0440\u0435\u0441\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 (\u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e <b>PC<\/b>)  <\/p>\n<pre><code class=\"xml\">compile\\temp\\sys.o:     file format elf32-littlearm  SYMBOL TABLE: 00000000 l    d  .text\t00000000 .text 00000008 l       .text\t00000000 Reset 00000038 l       .text\t00000000 BLINK_LOOP 00000066 l       .text\t00000000 DELAY 0000006e l       .text\t00000000 Delay_loop <\/code><\/pre>\n<p>  \u0411\u043b\u043e\u043a \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439, \u0432 \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0445 \u043e\u043d \u0438\u0434\u0435\u0442 \u0432\u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0435\u043a\u0446\u0438\u0438 <b>.text<\/b>  <\/p>\n<pre><code class=\"xml\">Disassembly of section .text:  00000000 &lt;Reset-0x8&gt;:    0:\t20020000 \t.word\t0x20020000    4:\t00000009 \t.word\t0x00000009 <\/code><\/pre>\n<p>  \u0414\u0430\u043b\u044c\u0448\u0435 \u0438\u0434\u0435\u0442 \u0431\u043b\u043e\u043a \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u043d\u044b\u043c\u0438 \u043a\u043e\u0434\u0430\u043c\u0438 \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439.<\/p>\n<pre><code class=\"xml\">00000008 &lt;Reset&gt;:    8:\tf643 0030 \tmovw\tr0, #14384\t; 0x3830    c:\tf2c4 0002 \tmovt\tr0, #16386\t; 0x4002   10:\tf240 0108 \tmovw\tr1, #8   14:\tf2c0 0100 \tmovt\tr1, #0   18:\t6802      \tldr\tr2, [r0, #0]   1a:\tea41 0102 \torr.w\tr1, r1, r2   1e:\t6001      \tstr\tr1, [r0, #0]   20:\tf640 4000 \tmovw\tr0, #3072\t; 0xc00   24:\tf2c4 0002 \tmovt\tr0, #16386\t; 0x4002   28:\tf240 0100 \tmovw\tr1, #0   2c:\tf2c4 0100 \tmovt\tr1, #16384\t; 0x4000   30:\t6802      \tldr\tr2, [r0, #0]   32:\tea41 0102 \torr.w\tr1, r1, r2   36:\t6001      \tstr\tr1, [r0, #0]  00000038 &lt;BLINK_LOOP&gt;:   38:\tf640 4018 \tmovw\tr0, #3096\t; 0xc18   3c:\tf2c4 0002 \tmovt\tr0, #16386\t; 0x4002   40:\tf248 0100 \tmovw\tr1, #32768\t; 0x8000   44:\tf2c0 0100 \tmovt\tr1, #0   48:\t6001      \tstr\tr1, [r0, #0]   4a:\tf000 f80c \tbl\t66 &lt;DELAY&gt;   4e:\tf640 4018 \tmovw\tr0, #3096\t; 0xc18   52:\tf2c4 0002 \tmovt\tr0, #16386\t; 0x4002   56:\tf240 0100 \tmovw\tr1, #0   5a:\tf2c8 0100 \tmovt\tr1, #32768\t; 0x8000   5e:\t6001      \tstr\tr1, [r0, #0]   60:\tf000 f801 \tbl\t66 &lt;DELAY&gt;   64:\te7e8      \tb.n\t38 &lt;BLINK_LOOP&gt;  00000066 &lt;DELAY&gt;:   66:\tf240 0200 \tmovw\tr2, #0   6a:\tf2c0 0210 \tmovt\tr2, #16  0000006e &lt;Delay_loop&gt;:   6e:\t3a01      \tsubs\tr2, #1   70:\td1fd      \tbne.n\t6e &lt;Delay_loop&gt;   72:\t4770      \tbx\tlr <\/code><\/pre>\n<p>  \u0418\u043c\u0435\u043d\u043d\u043e \u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043a\u043e\u0434\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 16 \u0431\u0438\u0442, \u0430 \u043a\u0430\u043a\u0438\u0435 \u0442\u0440\u0435\u0431\u0443\u044e\u0442 32 \u0431\u0438\u0442\u0430.<\/p>\n<p>  \u041f\u0435\u0440\u0432\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043c\u0430\u043a\u0440\u043e\u0441\u0430 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u043e\u0441\u044c \u0432 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043d\u0435\u043c \u0434\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432\u0435\u0440\u0445\u043d\u0438\u0445 \u0438 \u043d\u0438\u0436\u043d\u0438\u0445 16 \u0431\u0438\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 32 \u0431\u0438\u0442\u0430   <\/p>\n<pre><code class=\"xml\"> 8:\tf643 0030 \tmovw     r0, #14384\t; 0x3830  c:\tf2c4 0002 \tmovt     r0, #16386\t; 0x4002 <\/code><\/pre>\n<p>   \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043d\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043e\u0434\u043d\u043e\u0433\u043e 32-\u0443\u0445 \u0431\u0438\u0442\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u043e\u0441\u044c 8 \u0431\u0430\u0439\u0442 (64 \u0431\u0438\u0442\u0430) \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b<br \/>  \u0412\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u043b \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 32-\u0443\u0445 \u0431\u0438\u0442\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 <b>LDR Rx,=#value32bit<\/b> \u2014 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0435 \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 LDR<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"xml\">@GNU AS  @ \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 .syntax unified   @ \u0442\u0438\u043f \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 .thumb            @ \u0442\u0438\u043f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 Thumb .cpu cortex-m4    @ \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440  .include &quot;stm32f40x.inc&quot;   @ \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430  @ \u043c\u0430\u043a\u0440\u043e\u0441 \u043f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u043c\u0430\u043d\u0434\u044b MOV32 \u043d\u0430\u043c \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0435 \u043d\u0443\u0436\u0435\u043d, \u044f \u0443\u0431\u0440\u0430\u043b \u0435\u0433\u043e  @ \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 .section .text  .word\t0x20020000\t@ \u0412\u0435\u0440\u0448\u0438\u043d\u0430 \u0441\u0442\u0435\u043a\u0430 .word\tReset+1\t\t@ \u0412\u0435\u043a\u0442\u043e\u0440 \u0441\u0431\u0440\u043e\u0441\u0430  Reset: \t\t@ \u0432\u043a\u043b\u044e\u0447\u0438\u043c \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 GPIO_D \t\tLDR   R0, =(PERIPH_BASE + RCC_BASE + RCC_AHB1ENR)  @ \u0430\u0434\u0440\u0435\u0441 \t\tLDR   R1, =RCC_AHB1ENR_GPIODEN                     @ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \t\tLDR\tR2, [R0]    @ \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \t\tORR\tR1, R1, R2  @ \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435, \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u0435 \u0418\u041b\u0418: R1= R1 \u0418\u041b\u0418 R2 \t\tSTR\tR1, [R0]    @ \u0437\u0430\u043f\u0438\u0441\u044c R1 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 R0  \t\t@ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0440\u0435\u0436\u0438\u043c GPIO_D pin_15 \t\tLDR   R0, =(PERIPH_BASE + GPIOD_BASE + GPIO_MODER)  @ \u0430\u0434\u0440\u0435\u0441 \t\tLDR   R1, =GPIO_MODER_MODER15_0                     @ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \t\tLDR   R2, [R0]      @ \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \t\tORR   R1, R1, R2    @ \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435, \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u0435 \u0418\u041b\u0418: R1= R1 \u0418\u041b\u0418 R2 \t\tSTR   R1, [R0]      @ \u0437\u0430\u043f\u0438\u0441\u044c R1 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 R0  BLINK_LOOP: \t\t@ \u0432\u043a\u043b\u044e\u0447\u0438\u043c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \t\tLDR   R0, =(PERIPH_BASE + GPIOD_BASE + GPIO_BSRR)  @ \u0430\u0434\u0440\u0435\u0441 \t\tLDR   R1, =0x8000   @ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 1000 0000  0000 0000 \t\tSTR   R1, [R0]      @ \u0437\u0430\u043f\u0438\u0441\u044c R1 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 R0 \t \t\tBL    DELAY       @  \u043f\u0430\u0443\u0437\u0430 \t \t\t@ \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u043c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \t\tLDR   R0, =(PERIPH_BASE + GPIOD_BASE + GPIO_BSRR)  @ \u0430\u0434\u0440\u0435\u0441 \t\tLDR   R1, =(0x8000 &lt;&lt; 16) @ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435  \t\tSTR   R1, [R0]            @ \u0437\u0430\u043f\u0438\u0441\u044c R1 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 R0  \t\tBL    DELAY       @  \u043f\u0430\u0443\u0437\u0430\t  \t\tB     BLINK_LOOP  @ \u0434\u0435\u043b\u0430\u0435\u043c \u0446\u0438\u043a\u043b  DELAY: \t\tLDR   R2, =0x00100000     @ \u043f\u043e\u0432\u0442\u043e\u0440 \u0446\u0438\u043a\u043b\u0430 0x0010 0000 \u0440\u0430\u0437. Delay_loop:\t \t\tSUBS  R2, R2, 1 \t\tBNE   Delay_loop \t\tBX    LR  <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u043e\u0442\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442 (\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c make_project.bat), \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 (\u0444\u0430\u0439\u043b \/compile\/temp\/main_text.lst) \u2014 \u043a\u0441\u0442\u0430\u0442\u0438, \u0432\u044b \u0443\u0436\u0435 \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438 \u0447\u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u00ab\u043a\u0430\u043a\u0438\u043c \u0442\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u043c\u00bb \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u043b\u0441\u044f \u0441\u043e 116 \u0434\u043e 96 \u0431\u0430\u0439\u0442, \u0432\u0441\u0435 \u0434\u0435\u043b\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 <b>LDR Rx, =#value32bit<\/b><br \/>  \u042f \u0443\u0431\u0435\u0440\u0443 \u0432\u0435\u0441\u044c \u043a\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u044d\u0442\u0438\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c <\/p>\n<pre><code class=\"xml\">. . . 00000008 &lt;Reset&gt;:    8:\t480d      \tldr\tr0, [pc, #52]\t; (40 &lt;Delay_loop+0x8&gt;)    a:\t490e      \tldr\tr1, [pc, #56]\t; (44 &lt;Delay_loop+0xc&gt;)  . . .   14:\t480c      \tldr\tr0, [pc, #48]\t; (48 &lt;Delay_loop+0x10&gt;)   16:\t490d      \tldr\tr1, [pc, #52]\t; (4c &lt;Delay_loop+0x14&gt;) . . . 00000020 &lt;BLINK_LOOP&gt;:   20:\t480b      \tldr\tr0, [pc, #44]\t; (50 &lt;Delay_loop+0x18&gt;)   22:\t490c      \tldr\tr1, [pc, #48]\t; (54 &lt;Delay_loop+0x1c&gt;) . . .   2a:\t4809      \tldr\tr0, [pc, #36]\t; (50 &lt;Delay_loop+0x18&gt;)   2c:\t490a      \tldr\tr1, [pc, #40]\t; (58 &lt;Delay_loop+0x20&gt;) . . .   36:\t4a09      \tldr\tr2, [pc, #36]\t; (5c &lt;Delay_loop+0x24&gt;) . . .   3e:\t0000      \t.short\t0x0000 . . .   40:\t40023830 \t.word\t0x40023830   44:\t00000008 \t.word\t0x00000008   48:\t40020c00 \t.word\t0x40020c00   4c:\t40000000 \t.word\t0x40000000   50:\t40020c18 \t.word\t0x40020c18   54:\t00008000 \t.word\t0x00008000   58:\t80000000 \t.word\t0x80000000   5c:\t00100000 \t.word\t0x00100000 <\/code><\/pre>\n<p>  \u0444\u043e\u0440\u043c\u0430\u0442 \u0441\u0442\u0440\u043e\u043a: &lt;c\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438&gt; <b>:<\/b> &lt;\u043a\u043e\u0434 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438&gt; &lt;\u0442\u0435\u043a\u0441\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438&gt; <b>;<\/b> &lt;\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430&gt;<br \/>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u0443\u044e \u043f\u043e\u0434 \u0430\u0434\u0440\u0435\u0441\u043e\u043c 8  <\/p>\n<pre><code class=\"xml\">   8:\t480d      \tldr\tr0, [pc, #52]\t; (40 &lt;Delay_loop+0x8&gt;) <\/code><\/pre>\n<p>  \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u0447\u0442\u043e \u0432 <b>R0<\/b> \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <b>PC<\/b> \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u043d\u043e\u0435 \u043d\u0430 <b>#52<\/b> (\u0434\u0435\u0441\u044f\u0442\u0438\u0447\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435!), \u0432 \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0447\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0430\u0434\u0440\u0435\u0441 \u0431\u0443\u0434\u0435\u0442 <b>40<\/b> (\u044d\u0442\u043e \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435)<br \/>  \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u0435\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435:<br \/>  \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f <b>PC<\/b> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432 \u0441\u0435\u0431\u0435<b> [\u0430\u0434\u0440\u0435\u0441 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438+4]<\/b>, \u0442\u043e \u0435\u0441\u0442\u044c <b>PC = 0x08 + 0x04=0x0C<\/b>, <b>\u0430\u0434\u0440\u0435\u0441 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 = PC + #52 = 0x0C+#52 = #64 (0x40)<\/b><\/p>\n<blockquote><p><b>\u0417\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c! <\/b>\u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043a\u043e\u0434\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0438\u0437 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 (\u043d\u0435 \u043f\u0438\u0448\u0443 FLASH \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u0430 \u0438 \u0432 CCM_RAM \u2014 \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c \u0442\u0435\u043a\u0441\u0442 \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438(!) ) \u2014 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <b>PC<\/b> \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 <b>4<\/b> \u0432\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e 16-\u0442\u0438 \u0431\u0438\u0442\u043d\u0430\u044f \u0438\u043b\u0438 32-\u0443\u0445 \u0431\u0438\u0442\u043d\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0431\u044b\u043b\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u0430 !<\/p><\/blockquote>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0432 <b>main_text.lst<\/b> \u0434\u0430\u043c\u043f\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u043b \u0432 \u043a\u043e\u043d\u0435\u0446 \u0441\u0435\u043a\u0446\u0438\u0438 <b>.text<\/b>, \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043d\u0430\u043c \u0432\u0430\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u0447\u0442\u043e \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u0430\u043a\u0440\u043e\u0441\u0430 <b>mov32<\/b> \u043d\u0435 \u043f\u0440\u0438\u043d\u043e\u0441\u0438\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0432\u044b\u0433\u043e\u0434 \u043d\u0438 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0442\u0435\u0441\u044c \u0447\u0442\u043e \u0432 \u043a\u043e\u0434\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0441\u0442\u0440\u043e\u043a\u0438 \u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u043d\u0435 \u0445\u0443\u0436\u0435 \u0438 \u043d\u0435 \u043b\u0443\u0447\u0448\u0435 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430  <\/p>\n<pre><code class=\"xml\">MOV32  R0, 0x10101010 LDR   R0, =0x10101010 <\/code><\/pre>\n<p>  \u043d\u0438 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f (\u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043a \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043c\u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043b\u0438 \u043d\u0430 \u0442\u043e \u0447\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430 <b>LDR<\/b> \u0441 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439 \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0442\u0430\u043a \u0436\u0435 \u0437\u0430 2 \u0442\u0430\u043a\u0442\u0430), \u043d\u043e \u0432\u044b\u0438\u0433\u0440\u0430\u0435\u043c \u0432 \u0440\u0430\u0437\u043c\u0435\u0440\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u0421 \u0443\u0447\u0435\u0442\u043e\u043c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0434\u0430\u0436\u0435 \u0432 \u043d\u0430\u0448\u0435\u0439, \u043f\u0440\u044f\u043c\u043e \u0441\u043a\u0430\u0436\u0435\u043c \u043c\u0438\u043a\u0440\u043e\u0441\u043a\u043e\u043f\u0438\u0447\u0435\u0441\u043a\u043e\u0439, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043c\u0438\u0433\u0430\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c 32-\u0443\u0445 \u0431\u0438\u0442\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 (\u0430\u0434\u0440\u0435\u0441\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u044b) \u2014 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u043d\u0430 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043c\u0435\u0445\u043e\u0442\u0432\u043e\u0440\u043d\u043e\u0439 \u043a\u0430\u043a \u044d\u0442\u043e \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434\u2026<\/p>\n<p>  \u042f \u043d\u0435 \u0431\u0443\u0434\u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0430\u0440\u0445\u0438\u0432 \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 <b>LDR <\/b> \u2014 \u0434\u0443\u043c\u0430\u044e \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043c \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0432\u044b \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u0441\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e.<\/p>\n<hr\/>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0431 \u0435\u0449\u0435 \u043e\u0434\u043d\u043e\u0439 \u00ab\u0444\u0438\u0447\u0435\u00bb \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 ARM \u2014 \u0431\u0438\u0442\u0431\u0430\u043d\u0434\u0438\u043d\u0433\u0435 <b>(bitbanding)<\/b><br \/>  \u041a\u0440\u0430\u0442\u043a\u043e \u2014 \u044d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u0431\u0438\u0442\u0430\u043c \u043e\u0431\u0440\u0430\u0449\u0430\u044f\u0441\u044c \u044f\u0447\u0435\u0439\u043a\u0430\u043c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c \u0432 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u044f\u0445 \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430. \u0414\u043e\u0441\u0442\u0443\u043f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438 \u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435 \u0438 \u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0431\u0438\u0442\u0430.<\/p>\n<p>  \u0412 &quot;<b>PM0214 Cortex-M4 Programming manual<\/b>&quot; \u043d\u0430 \u0441\u0442\u0440. 27 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 <b>STM32F4<\/b><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/9f3\/d6f\/ea0\/9f3d6fea0a0d436e988c95ad3f51e2e1.jpg\"\/><\/p>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c\u0441\u044f \u0441\u043e \u0441\u0445\u0435\u043c\u043e\u0439:  <\/p>\n<ol>\n<li><b>Bitband region<\/b> \u2014 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0433\u0434\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0438\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0431\u0438\u0442. \u041f\u043e \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u0433\u043e\u0432\u043e\u0440\u044f \u0431\u0438\u0442 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u044b \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0438\u043c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u043b\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0445\u043e\u0442\u0438\u043c \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u044d\u0442\u043e\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 \u0430\u0434\u0440\u0435\u0441\u043e\u0432<\/li>\n<li><b>Bitband alias<\/b> \u2014 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u043f\u0440\u043e\u0435\u0446\u0438\u0440\u0443\u0435\u043c\u0430\u044f \u043d\u0430 <b>bitband region<\/b>. \u0413\u043e\u0432\u043e\u0440\u044f \u0440\u0443\u0441\u0441\u043a\u0438\u043c \u044f\u0437\u044b\u043a\u043e\u043c, \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u043a \u0430\u0434\u0440\u0435\u0441\u0430\u043c \u0438\u0437 \u044d\u0442\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0431\u0438\u0442\u0430 \u0438\u0437 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 <b>bitband region<\/b> \u0438\u043b\u0438 \u0437\u0430\u043f\u0438\u0441\u0430\u0432 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u044d\u0442\u0443 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0431\u0438\u0442\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 <b>bitband region<\/b><\/li>\n<\/ol>\n<p>  \u041e\u0431\u043b\u0430\u0441\u0442\u0438 <b>bitband region<\/b> \u0438\u043c\u0435\u044e\u0442 \u043e\u0431\u044a\u0435\u043c 1 \u043c\u0431<br \/>  \u041e\u0431\u043b\u0430\u0441\u0442\u0438 <b>bitband alias<\/b> \u2014 32 \u043c\u0431<br \/>  \u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0432\u0438\u0434\u0435\u0442\u044c \u0438\u0437 \u0441\u0445\u0435\u043c\u044b \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0443 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 <b>STM32F4xx<\/b> \u0434\u0432\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 <b>bitband region<\/b> (\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043d\u0438\u043c\u0438 <b>bitband alias<\/b>):  <\/p>\n<ol>\n<li>\u0432 \u0430\u0434\u0440\u0435\u0441\u0430\u0445 <b>0x2000 0000 \u2014 0x200F FFFF<\/b> \u2014 \u0442\u043e \u0435\u0441\u0442\u044c \u044d\u0442\u0430 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 SRAM1 \u0438 SRAM2 (\u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c \u0430\u0434\u0440\u0435\u0441\u0430 SRAM \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438!)<\/li>\n<li>\u0432 \u0430\u0434\u0440\u0435\u0441\u0430\u0445 <b>0x4000 0000 \u2014 0x400F FFFF<\/b> \u2014 \u044d\u0442\u0430 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0430\u0434\u0440\u0435\u0441\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 + \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e <b>backup RAM<\/b><\/li>\n<\/ol>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0444\u043e\u0440\u043c\u0443\u043b\u0443 \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u0434\u0440\u0435\u0441 \u0431\u0438\u0442\u0430 \u0432 <b>bitband region<\/b> \u0430\u0434\u0440\u0435\u0441\u0443 \u0432 <b>bitband alias<\/b>, \u043e\u043d\u0430 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0430 \u043d\u0430 \u0441\u0442\u0440. 31 &quot;<b>PM0214 Cortex-M4 Programming manual<\/b>&quot;<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/600\/1a2\/8dd\/6001a28dd98746448b431167d2965f5d.jpg\"\/><\/p>\n<p>  \u0414\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0435\u0435 \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u0447\u043a\u0443:  <\/p>\n<pre><code class=\"xml\">bit_word_adr=bitband_base+ (byte_offset * 32) + bit_number * 4 <\/code><\/pre>\n<p>  \u0433\u0434\u0435,  <\/p>\n<ol>\n<li><b>bitband_base<\/b> \u2014 \u0430\u0434\u0440\u0435\u0441 <b>bitband_alias<\/b><\/li>\n<li><b>byte_offset<\/b> \u2014 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0447\u0430\u043b\u0430 <b>bitband_alias<\/b><\/li>\n<li><b>bit_number<\/b> \u2014 \u043d\u043e\u043c\u0435\u0440 \u0431\u0438\u0442\u0430 \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f<\/li>\n<\/ol>\n<p>  <b>\u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 bitband<\/b>:<\/p>\n<p>  \u0412\u043e\u0437\u044c\u043c\u0435\u043c \u043d\u0430\u0448\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u00ab\u043c\u0438\u0433\u0430\u043b\u043a\u0438\u00bb: \u043f\u0440\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0440\u0435\u0436\u0438\u043c\u043e\u0432 <b>GPIOD<\/b> \u043c\u044b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u044d\u0442\u043e\u0442 \u043f\u043e\u0440\u0442 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044f \u043d\u0443\u0436\u043d\u044b\u0439 \u043d\u0430\u043c \u0431\u0438\u0442 \u0432 \u00ab1\u00bb, \u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u043a\u043e\u0434\u0430:  <\/p>\n<pre><code class=\"xml\">\t\t@ \u0432\u043a\u043b\u044e\u0447\u0438\u043c \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 GPIO_D \t\tLDR     R0, =(PERIPH_BASE + RCC_BASE + RCC_AHB1ENR)  @ \u0430\u0434\u0440\u0435\u0441 \t\tLDR     R1, =RCC_AHB1ENR_GPIODEN                     @ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \t\tLDR     R2, [R0]      @ \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \t\tORR     R1, R1, R2    @ \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435, \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u0435 \u0418\u041b\u0418: R1= R1 \u0418\u041b\u0418 R2 \t\tSTR     R1, [R0]      @ \u0437\u0430\u043f\u0438\u0441\u044c R1 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 R0 <\/code><\/pre>\n<p>  \u0410\u0434\u0440\u0435\u0441 <b>PERIPH_BASE = 0x40000000<\/b> \u2014 \u0442\u043e \u0435\u0441\u0442\u044c \u043e\u043d \u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0434\u0438\u043d \u0438\u0437 <b>bitband region&#8217;\u043e\u0432<\/b><br \/>  \u0410\u0434\u0440\u0435\u0441 <b>bitband_alias<\/b> \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e <b>bitband region<\/b> \u0440\u0430\u0432\u0435\u043d <b>0x42000000<\/b> \u2014 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 <b>bitband_base<\/b> \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u043a \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c \u0432 \u0430\u0434\u0440\u0435\u0441\u0430\u0445 <b>0x40000000 \u2014 0x400FFFFF<\/b><\/p>\n<p>  \u0410 \u0430\u0434\u0440\u0435\u0441 <b>byte_offset<\/b> \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0430\u043a \u0436\u0435 \u043a\u0430\u043a \u0438 \u0430\u0434\u0440\u0435\u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u043f\u0440\u0438 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 (\u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 <b>RCC_BASE + RCC_AHB1ENR<\/b>).<\/p>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0430\u0434\u0440\u0435\u0441 \u0431\u0438\u0442\u0430 \u043f\u043e\u0434\u043b\u0435\u0436\u0430\u0449\u0435\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044e, \u0432\u044b\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0444\u043e\u0440\u043c\u0443\u043b\u0435:  <\/p>\n<pre><code class=\"xml\">BIT_ADR=PERIPH_BB_BASE + (RCC_BASE + RCC_AHB1ENR) * 32 + RCC_AHB1ENR_GPIODEN_N * 4 <\/code><\/pre>\n<p>  \u0433\u0434\u0435: <br \/>   \u2014 <b>PERIPH_BB_BASE<\/b> \u2014 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <b>0x42000000<\/b>, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 <b>stm32f40x.inc<\/b> \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/db1\/9de\/565\/db19de5659854a49bcdc07ba400788ba.jpg\"\/><br \/>   \u2014 <b>RCC_BASE + RCC_AHB1ENR<\/b> \u2014 \u044d\u0442\u043e \u0442\u043e\u0436\u0435 2 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0443\u0436\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u043b\u0438 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438<br \/>   \u2014 <b>RCC_AHB1ENR_GPIODEN_N <\/b> \u2014 \u043d\u043e\u043c\u0435\u0440 \u0431\u0438\u0442\u0430 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 <b>RCC_AHB1ENR<\/b>. \u042d\u0442\u043e\u0433\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u043d\u0435 \u0431\u044b\u043b\u043e, \u044f \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e, \u0434\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u0447\u0442\u043e \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0435 \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0430 \u043b\u0438\u0448\u044c \u043d\u0430 \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u044b\u0439 \u043d\u043e\u043c\u0435\u0440 \u0431\u0438\u0442\u0430 \u0432 \u0441\u043b\u043e\u0432\u0435 \u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e &quot;_N&quot; \u043a \u0438\u043c\u0435\u043d\u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b.<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/dcd\/8b0\/ada\/dcd8b0adaeea468aae7b95777e4a86a9.jpg\"\/><\/p>\n<p>  \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f <b>GPIOD<\/b>:  <\/p>\n<pre><code class=\"xml\">\t\t@ \u0432\u043a\u043b\u044e\u0447\u0438\u043c \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 GPIO_D \t\tLDR     R0, =(PERIPH_BB_BASE + (RCC_BASE + RCC_AHB1ENR) * 32 + RCC_AHB1ENR_GPIODEN_N * 4)  @ \u0430\u0434\u0440\u0435\u0441 \u0431\u0438\u0442\u0430 \t\tMOV     R1, 1        @ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0431\u0438\u0442\u0430 \t\tSTR     R1, [R0]     @ \u0437\u0430\u043f\u0438\u0441\u044c R1 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 R0 <\/code><\/pre>\n<p>  \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u0432 <b>R0<\/b> \u0430\u0434\u0440\u0435\u0441 \u0431\u0438\u0442\u0430 \u0432 <b>bitband_alias<\/b>, \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <b>STR R1, [R0]<\/b> \u043c\u044b \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043d\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 32-\u0443\u0445 \u0431\u0438\u0442\u043d\u043e\u0433\u043e \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 <b>R1<\/b> \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 <b>R0<\/b>, \u0430 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0431\u0438\u0442\u0430 \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c <b>3<\/b> \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 <b>RCC_AHB1ENR<\/b>.<\/p>\n<p>  \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e: \u0447\u0442\u0435\u043d\u0438\u0435 | \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u00ab\u0418\u041b\u0418\u00bb | \u0437\u0430\u043f\u0438\u0441\u044c, \u044d\u0442\u043e \u0432\u0441\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435.<br \/>  \u041a \u0441\u043b\u043e\u0432\u0443, \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0432 \u043e\u0434\u043d\u0443 \u043f\u0440\u0438 <b>bitbanding<\/b> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0430\u0436\u043d\u043e\u0439 \u043f\u0440\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u0445, \u043a\u043e\u0433\u0434\u0430 \u0432\u0430\u0436\u043d\u0430 \u00ab\u0430\u0442\u043e\u043c\u0430\u0440\u043d\u043e\u0441\u0442\u044c\u00bb (\u043d\u0435\u0434\u0435\u043b\u0438\u043c\u043e\u0441\u0442\u044c) \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0431\u0438\u0442\u0430 (\u043e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e \u043e\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u00ab\u0444\u043b\u0430\u0433\u0430\u043c\u0438\u00bb \u0438 \u00ab\u0441\u0435\u043c\u0430\u0444\u043e\u0440\u0430\u043c\u0438\u00bb \u0432 \u043c\u043d\u043e\u0433\u043e- \u0437\u0430\u0434\u0430\u0447\u043d\u044b\u0445 \u0438\u043b\u0438 \u043f\u0441\u0435\u0432\u0434\u043e- \u043c\u043d\u043e\u0433\u043e\u0437\u0430\u0434\u0430\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0445)<\/p>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0435\u0440\u0435\u043f\u0438\u0448\u0435\u043c \u043d\u0430\u0448\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u00ab\u043c\u0438\u0433\u0430\u043b\u043a\u0430\u00bb \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043c\u0435\u0442\u043e\u0434\u0430 <b>bitband<\/b>:<\/p>\n<pre><code class=\"xml\">@GNU AS  @ \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 .syntax unified   @ \u0442\u0438\u043f \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430 .thumb            @ \u0442\u0438\u043f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 Thumb .cpu cortex-m4    @ \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440  .include &quot;stm32f40x.inc&quot;   @ \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430  @ \u043c\u0430\u043a\u0440\u043e\u0441 \u043f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u043c\u0430\u043d\u0434\u044b MOV32 \u043d\u0430\u043c \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0435 \u043d\u0443\u0436\u0435\u043d, \u044f \u0443\u0431\u0440\u0430\u043b \u0435\u0433\u043e  @ \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 .section .text  .word\t0x20020000\t@ \u0412\u0435\u0440\u0448\u0438\u043d\u0430 \u0441\u0442\u0435\u043a\u0430 .word\tReset+1\t\t@ \u0412\u0435\u043a\u0442\u043e\u0440 \u0441\u0431\u0440\u043e\u0441\u0430  Reset:                 MOV     R0, 0  @ \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 0, \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f bitband \t\tMOV     R1, 1  @ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 1, \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f bitband  \t\t@ \u0432\u043a\u043b\u044e\u0447\u0438\u043c \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 GPIO_D \t\tLDR     R2, =(PERIPH_BB_BASE + (RCC_BASE + RCC_AHB1ENR) * 32 + RCC_AHB1ENR_GPIODEN_N * 4)  @ \u0430\u0434\u0440\u0435\u0441 \t\tSTR     R1, [R2]    @ \u0437\u0430\u043f\u0438\u0441\u044c R1 (&quot;1&quot;) \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0431\u0438\u0442\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 R2  \t\t@ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0440\u0435\u0436\u0438\u043c GPIO_D pin_15 \t\tLDR     R2, =(PERIPH_BASE + GPIOD_BASE + GPIO_MODER)  @ \u0430\u0434\u0440\u0435\u0441 \t\tLDR     R3, =GPIO_MODER_MODER15_0                     @ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \t\tLDR     R4, [R0]    @ \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \t\tORR     R3, R3, R4  @ \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435, \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u0435 \u0418\u041b\u0418 \t\tSTR     R3, [R2]    @ \u0437\u0430\u043f\u0438\u0441\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 GPIOD_MODER  \t\tLDR     R2, =(PERIPH_BB_BASE + (GPIOD_BASE + GPIO_ODR) * 32 + 15*4)  @ \u0430\u0434\u0440\u0435\u0441 \u0431\u0438\u0442\u0430  BLINK_LOOP: \t\t@ \u0432\u043a\u043b\u044e\u0447\u0438\u043c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \t\tSTR     R1, [R2]   @ \u0437\u0430\u043f\u0438\u0441\u044c R1 (&quot;1&quot;) \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 R2 \t \t\tBL      DELAY      @  \u043f\u0430\u0443\u0437\u0430 \t \t\t@ \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u043c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \t\tSTR     R0, [R2]   @ \u0437\u0430\u043f\u0438\u0441\u044c R0 (&quot;0&quot;) \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 R2  \t\tBL      DELAY      @  \u043f\u0430\u0443\u0437\u0430\t  \t\tB       BLINK_LOOP @ \u0434\u0435\u043b\u0430\u0435\u043c \u0446\u0438\u043a\u043b  DELAY: \t\tLDR     R3, =0x00100000   @ \u043f\u043e\u0432\u0442\u043e\u0440 \u0446\u0438\u043a\u043b\u0430 0x0010 0000 \u0440\u0430\u0437. Delay_loop:\t \t\tSUBS     R3, R3, 1 \t\tBNE     Delay_loop \t\tBX      LR  <\/code><\/pre>\n<p>  \u041d\u0435 \u043e\u0436\u0438\u0434\u0430\u043b\u0438 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439? \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0438\u0445 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c!<\/p>\n<p>  \u0412 \u043d\u0430\u0447\u0430\u043b\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u044f \u0432\u044b\u043d\u0435\u0441 \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0434\u0432\u0443\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043c <b>R0 = 0<\/b> \u0438 <b>R1 = 1<\/b> \u044d\u0442\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u0430 bitband, \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <b>MOV<\/b> \u0442\u043e\u0436\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u043e \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u2014 \u043f\u0440\u0438 \u0442\u0430\u043a\u043e\u043c \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u0438 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 16-\u0442\u0438 \u0431\u0438\u0442\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u043c\u043b\u0430\u0434\u0448\u0438\u0435 16 \u0431\u0438\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430, \u0441 \u043e\u0431\u043d\u0443\u043b\u0435\u043d\u0438\u0435\u043c \u0441\u0442\u0430\u0440\u0448\u0438\u0445 16 \u0431\u0438\u0442. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c <b>R0<\/b> (\u0432 32\u0443\u0445 \u0431\u0438\u0442\u0430\u0445) \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u0435\u043d \u00ab0\u00bb, \u0430<b> R1<\/b> (\u0432 32\u0443\u0445 \u0431\u0438\u0442\u0430\u0445) \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u0435\u043d \u00ab1\u00bb.  <\/p>\n<pre><code class=\"xml\">                MOV     R0, 0  @ \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 0, \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f bitband \t\tMOV     R1, 1  @ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 1, \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f bitband <\/code><\/pre>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0438\u0434\u0435\u0442 \u0443\u0436\u0435 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u043d\u0430\u043c\u0438 \u0431\u043b\u043e\u043a \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f <b>GPIOD<\/b> \u043c\u0435\u0442\u043e\u0434\u043e\u043c <b>bitband<\/b>, \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0440\u0435\u0433\u0438\u0441\u0442\u0440 <b>R2<\/b> \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 <b>R0<\/b> \u0438 <b>R1<\/b> \u0443\u0436\u0435 \u0437\u0430\u043d\u044f\u0442\u044b \u043d\u0430\u0448\u0438\u043c\u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430\u043c\u0438 (\u00ab0\u00bb, \u00ab1\u00bb \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e):  <\/p>\n<pre><code class=\"xml\">\t\t@ \u0432\u043a\u043b\u044e\u0447\u0438\u043c \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 GPIO_D \t\tLDR     R2, =(PERIPH_BB_BASE + (RCC_BASE + RCC_AHB1ENR) * 32 + RCC_AHB1ENR_GPIODEN_N * 4)  @ \u0430\u0434\u0440\u0435\u0441 \t\tSTR     R1, [R2]    @ \u0437\u0430\u043f\u0438\u0441\u044c R1 (&quot;1&quot;) \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0431\u0438\u0442\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 R2 <\/code><\/pre>\n<p>  \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b<b> 15 <\/b>\u0432\u044b\u0432\u043e\u0434\u0430 <b>GPIOD <\/b>\u043d\u0430 \u0432\u044b\u0445\u043e\u0434, \u043f\u043e\u043a\u0430, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u0443\u0442\u0430\u0442\u044c \u043f\u043e\u0432\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435, \u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 \u043f\u0440\u0435\u0436\u043d\u0435\u0439, \u0445\u043e\u0442\u044f \u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u043c <b>bitband <\/b>\u0442\u043e\u0433\u0434\u0430 \u043e\u043d\u0430 \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u0434\u043e 2\u0445 \u0441\u0442\u0440\u043e\u0447\u0435\u043a \u043a\u043e\u0434\u0430  <\/p>\n<pre><code class=\"xml\">\t\t@ \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0440\u0435\u0436\u0438\u043c GPIO_D pin_15 \t\tLDR     R2, =(PERIPH_BASE + GPIOD_BASE + GPIO_MODER)  @ \u0430\u0434\u0440\u0435\u0441 \t\tLDR     R3, =GPIO_MODER_MODER15_0                     @ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \t\tLDR     R4, [R2]    @ \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \t\tORR     R3, R3, R4  @ \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435, \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u0435 \u0418\u041b\u0418 \t\tSTR     R3, [R2]    @ \u0437\u0430\u043f\u0438\u0441\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 GPIOD_MODER  <\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 \u0446\u0438\u043a\u043b\u0435 \u00ab\u043c\u0438\u0433\u0430\u043d\u0438\u044f\u00bb \u0430\u0434\u0440\u0435\u0441 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u2014 \u044f \u0432\u044b\u043d\u0435\u0441 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u0446\u0438\u043a\u043b\u0430. \u0422\u0430\u043a \u0436\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0432\u044b\u0432\u043e\u0434\u0430 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0440\u0435\u0433\u0438\u0441\u0442\u0440 <b>GPIO_ODR<\/b> (\u0438\u0449\u0438\u0442\u0435 \u0432 <b>Reference manual<\/b> \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u043e <b>GPIOx_ODR<\/b>), \u0441 \u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0435\u0439 <b>15<\/b>-\u0433\u043e \u0431\u0438\u0442\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 <b>bitband<\/b> (\u043a 15-\u043c\u0443 \u0431\u0438\u0442\u0443 \u0443 \u043d\u0430\u0441 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434).   <\/p>\n<pre><code class=\"xml\">\t\tLDR     R2, =(PERIPH_BB_BASE + (GPIOD_BASE + GPIO_ODR) * 32 + 15*4)  @ \u0430\u0434\u0440\u0435\u0441 \u0431\u0438\u0442\u0430 <\/code><\/pre>\n<p>  \u0426\u0438\u043a\u043b \u043c\u0438\u0433\u0430\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442\u0441\u044f! \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0431\u0438\u0442\u0430 (\u043c\u0435\u0442\u043e\u0434\u043e\u043c bitband) \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u00ab0\u00bb \u0438\u043b\u0438 \u00ab1\u00bb \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430, \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u0437\u0430\u043f\u0438\u0441\u044c\u044e \u043f\u0430\u0443\u0437\u0443  <\/p>\n<pre><code class=\"xml\">BLINK_LOOP: \t\t@ \u0432\u043a\u043b\u044e\u0447\u0438\u043c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \t\tSTR     R1, [R2]   @ \u0437\u0430\u043f\u0438\u0441\u044c R1 (&quot;1&quot;) \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 R2 \t \t\tBL      DELAY      @  \u043f\u0430\u0443\u0437\u0430 \t \t\t@ \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u043c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \t\tSTR     R0, [R2]   @ \u0437\u0430\u043f\u0438\u0441\u044c R0 (&quot;0&quot;) \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 R2  \t\tBL      DELAY      @  \u043f\u0430\u0443\u0437\u0430\t  \t\tB       BLINK_LOOP @ \u0434\u0435\u043b\u0430\u0435\u043c \u0446\u0438\u043a\u043b <\/code><\/pre>\n<p>  \u0414\u043b\u044f \u043f\u0430\u0443\u0437\u044b \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 <b>R3<\/b> (<b>R0, R1, R2<\/b> \u0443\u0436\u0435 \u0437\u0430\u043d\u044f\u0442\u044b)  <\/p>\n<pre><code class=\"xml\">DELAY: \t\tLDR     R3, =0x00100000   @ \u043f\u043e\u0432\u0442\u043e\u0440 \u0446\u0438\u043a\u043b\u0430 0x0010 0000 \u0440\u0430\u0437. Delay_loop:\t \t\tSUBS     R3, R3, 1 \t\tBNE     Delay_loop \t\tBX      LR <\/code><\/pre>\n<p>  \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0432 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e \u0438 \u0441\u0431\u043e\u0440\u043a\u0443 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u2014 76 \u0431\u0430\u0439\u0442 (\u0435\u0441\u043b\u0438 \u043f\u043e\u043c\u043d\u0438\u0442\u0435, \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u00ab\u0432\u0435\u0441\u0438\u043b\u00bb \u2014 116 \u0431\u0430\u0439\u0442)<br \/>  \u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u043f\u043e <a href=\"https:\/\/yadi.sk\/d\/EAShhSnJmrQz3\">\u0441\u0441\u044b\u043b\u043a\u0435<\/a><\/p>\n<p>  <b>\u0412\u041d\u0418\u041c\u0410\u041d\u0418\u0415 !<\/b> <br \/>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0442 \u043f\u043b\u0430\u0442\u044b STM32F4 Discovery \u0432\u0441\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0432\u044b\u043b\u043e\u0436\u0435\u043d\u044b \u00ab\u043a\u0430\u043a \u0435\u0441\u0442\u044c\u00bb, \u0431\u0435\u0437 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0441\u043b\u0438 \u0447\u0442\u043e \u0442\u043e \u043d\u0435 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u2014 \u043f\u0438\u0448\u0438\u0442\u0435: \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043f\u043e\u0441\u043b\u0443\u0448\u0430\u0435\u043c, \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c\u0441\u044f (\u0441) \u00ab\u0411\u0435\u0440\u0435\u0433\u0438\u0441\u044c \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044f\u00bb.<\/p>\n<p>  \u0412 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0435\u0449\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u00ab\u043c\u0438\u0433\u0430\u043b\u043a\u0430\u00bb \u0438 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043a \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u043c \u0442\u0440\u0435\u0442\u044c\u044e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043c.                 <\/p>\n<div class=\"clear\"><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/274901\/\"> http:\/\/habrahabr.ru\/post\/274901\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>       \u041d\u0443 \u0447\u0442\u043e \u0436\u0435, \u043d\u043e\u0432\u043e\u0433\u043e\u0434\u043d\u0438\u0435 \u043f\u0440\u0430\u0437\u0434\u043d\u0438\u043a\u0438 \u043a\u043e\u043d\u0447\u0438\u043b\u0438\u0441\u044c, \u0438 \u043d\u0430\u0447\u0430\u043b\u0438\u0441\u044c \u0442\u0440\u0443\u0434\u043e\u0432\u044b\u0435 \u0431\u0443\u0434\u043d\u0438 \ud83d\ude42 \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043e\u043c \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 <b>STM32F4<\/b><\/p>\n<p>  \u0421\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u044b\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438:<br \/>  <a href=\"http:\/\/habrahabr.ru\/post\/274541\/\">STM32: GNU AS: \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 (\u0427\u0430\u0441\u0442\u044c 1)<\/a><br \/>  <a href=\"http:\/\/habrahabr.ru\/post\/274579\/\">STM32F4: GNU AS: \u041c\u0438\u0433\u0430\u0435\u043c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c (\u041e\u0436\u0438\u0432\u043b\u0435\u043d\u0438\u0435) (\u0427\u0430\u0441\u0442\u044c 2)<\/a><\/p>\n<p>  \u0412 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043e\u0442\u043f\u0438\u0441\u0430\u043b\u0441\u044f \u043e \u0442\u043e\u043c \u0447\u0442\u043e \u0435\u043c\u0443 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u00ab\u043c\u0438\u0433\u0430\u043b\u043a\u0443\u00bb \u043d\u0430 <b>STM32F4 Discovery<\/b> \u2014 \u0437\u043d\u0430\u0447\u0438\u0442 \u043b\u0438\u0431\u043e \u043d\u0435 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b\u0438, \u043b\u0438\u0431\u043e \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c. \u0418\u0441\u043f\u0440\u0430\u0432\u0438\u043c \u044d\u0442\u0443 \u043c\u0435\u043b\u043e\u0447\u044c:  <\/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-272032","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/272032","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=272032"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/272032\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=272032"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=272032"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=272032"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}