{"id":272343,"date":"2016-01-18T13:37:02","date_gmt":"2016-01-18T10:37:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=272343"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=272343","title":{"rendered":"STM32F4: GNU AS: \u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0441\u0440\u0435\u0434\u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 (\u0427\u0430\u0441\u0442\u044c 4)"},"content":{"rendered":"<p>       \u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0445 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f\u0445 \u044f \u043f\u043e\u043a\u0430\u0437\u0430\u043b \u043e\u0442 \u0447\u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0434\u043b\u044f STM32F4, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u0441\u0440\u0435\u0434\u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438 \u0444\u0430\u0439\u043b \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a\u0430, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430, \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c GPIO \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0438 \u043f\u043e\u043c\u0438\u0433\u0430\u0442\u044c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c.<\/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\/\">STM32F4: 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><br \/>  <a href=\"http:\/\/habrahabr.ru\/post\/274901\/\">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)<\/a><\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0434\u043b\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0445 \u043f\u043b\u0430\u0442, \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0432\u044b\u043d\u043e\u0441\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0438\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<hr\/>\n<p>  \u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e: <b>\u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438<\/b><\/p>\n<p>  \u0423 \u043d\u0430\u0441 \u0441\u0435\u0439\u0447\u0430\u0441 \u043a\u0430\u043a \u0440\u0430\u0437 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f: \u0443 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0438\u0437 \u0447\u0438\u0442\u0430\u044e\u0449\u0438\u0445 \u043c\u043e\u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 (\u043f\u0440\u0438\u0447\u0435\u043c \u043e\u0442 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043a \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u044d\u0442\u043e \u0447\u0438\u0441\u043b\u043e \u043d\u0435\u0443\u043a\u043b\u043e\u043d\u043d\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442\u0441\u044f \ud83d\ude42 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f STM32F4 Discovery, \u0443 \u043c\u0435\u043d\u044f \u0436\u0435 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0430 Open407I-C, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043c\u0438\u0433\u0430\u043b\u043a\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d:  <\/p>\n<ol>\n<li>\u043a \u0432\u044b\u0432\u043e\u0434\u0443 15 GPIO_D \u0434\u043b\u044f STM32F4 Discovery<\/li>\n<li>\u043a \u0432\u044b\u0432\u043e\u0434\u0443 2 GPIO_H \u0434\u043b\u044f Open407I-C<\/li>\n<\/ol>\n<p>  \u0412 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 GNU AS \u0435\u0441\u0442\u044c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438.<br \/>  \u041d\u0430\u0448\u0435\u043b \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <b>.def<\/b> \u2014 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e <a href=\"https:\/\/www.opennet.ru\/docs\/RUS\/gas\/gas.html#toc2\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a> \u043e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043e\u0434\u043d\u0430\u043a\u043e \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0443 &quot;<b>.set<\/b>&quot;.<br \/>  \u041f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043c\u044b \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 (\u043d\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b!) \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u044f \u0432\u044b\u0431\u0440\u0430\u043b \u0438\u043c\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <b>DEVBOARD<\/b>:  <\/p>\n<pre><code class=\"xml\">@ \u0415\u0441\u043b\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0438\u0436\u0435 \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e, \u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0447\u0442\u043e  @ \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u043f\u043b\u0430\u0442\u0430 Open407I-C, \u0438\u043d\u0430\u0447\u0435 STM32F4 Discovery .set DEVBOARD, STM32F4DISCO <\/code><\/pre>\n<p>  \u0418 \u0434\u0430\u043b\u0435\u0435 \u0432 \u0441\u0432\u043e\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e \u2014 \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f DEVBOARD \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u0442\u043e \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0434\u0438\u043d \u0442\u0435\u043a\u0441\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 (\u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0435 \u0431\u044b\u043b\u0430 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0430 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0431\u044b\u043b\u0430 \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430) \u2014 \u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u0442\u0435\u043a\u0441\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. <br \/>  \u041a\u0430\u0436\u0434\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 (\u0438 \u044d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u043e\u0442 \u043f\u043b\u0430\u0442\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438):  <\/p>\n<ol>\n<li>\u0411\u0438\u0442\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f GPIO \u0432 RCC_AHB1ENR<\/li>\n<li>\u0410\u0434\u0440\u0435\u0441\u0430 GPIOx_BASE \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432<\/li>\n<li>\u041d\u043e\u043c\u0435\u0440\u0430 \u0432\u044b\u0432\u043e\u0434\u0430 GPIOx \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u043c \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 BitBand<\/li>\n<li>\u0411\u0438\u0442\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0440\u0435\u0436\u0438\u043c\u0430 \u043f\u043e\u0440\u0442\u0430 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 GPIOx_MODER<\/li>\n<\/ol>\n<p>  \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u044d\u0442\u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:  <\/p>\n<pre><code class=\"xml\">@ \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b .ifdef DEVBOARD @ \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u0442\u043e STM32F4 Discovery    .equ GPIO_LED\t,GPIOD_BASE       \t@ \u043f\u043e\u0440\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430    .equ RCC_GPIO_EN\t,RCC_AHB1ENR_GPIODEN_N  @ \u0431\u0438\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f GPIO    .equ GPIO_ODR_NUM\t,15\t\t\t@ \u043d\u043e\u043c\u0435\u0440 \u043f\u0438\u043d\u0430 GPIO .else  @ \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442, \u0442\u043e Open407I-C    .equ GPIO_LED\t,GPIOH_BASE    .equ RCC_GPIO_EN\t,RCC_AHB1ENR_GPIOHEN_N    .equ GPIO_ODR_NUM\t,2 .endif  @ \u043e\u0431\u0449\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 .equ GPIO_MODER_MDR\t,2&lt;&lt;(GPIO_ODR_NUM*2) <\/code><\/pre>\n<p>  \u0412 \u0442\u0435\u043a\u0441\u0442\u0435 \u0441\u0430\u043c\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432\u0441\u0435 \u00ab\u043f\u0440\u044f\u043c\u044b\u0435\u00bb \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f <b>GPIOD<\/b> (<b>GPIOH<\/b>) \u0442\u0435\u043f\u0435\u0440\u044c \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c \u043d\u0430 <b>GPIO_LED<\/b>, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f <b>RCC_AHB1ENR<\/b> \u0437\u0430\u043c\u0435\u043d\u0438\u043c \u043d\u0430 <b>RCC_GPIO_EN<\/b> \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435.<br \/>  \u041f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443:  <\/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  @ \u0415\u0441\u043b\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0438\u0436\u0435 \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e, \u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0447\u0442\u043e  @ \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u043f\u043b\u0430\u0442\u0430 Open407I-C, \u0438\u043d\u0430\u0447\u0435 STM32F4 Discovery .set DEVBOARD, STM32F4DISCO  .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  @ \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b .ifdef DEVBOARD    .equ GPIO_LED\t,GPIOD_BASE       \t@ \u043f\u043e\u0440\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430    .equ RCC_GPIO_EN\t,RCC_AHB1ENR_GPIODEN_N  @ \u0431\u0438\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f GPIO    .equ GPIO_ODR_NUM\t,15\t\t\t@ \u043d\u043e\u043c\u0435\u0440 \u043f\u0438\u043d\u0430 GPIO .else    .equ GPIO_LED\t,GPIOH_BASE    .equ RCC_GPIO_EN\t,RCC_AHB1ENR_GPIOHEN_N    .equ GPIO_ODR_NUM\t,2 .endif  .equ GPIO_MODER_MDR\t,2&lt;&lt;(GPIO_ODR_NUM*2)  @ \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_LED \t\tLDR     R2, =(PERIPH_BB_BASE + (RCC_BASE + RCC_AHB1ENR) * 32 + RCC_AHB1ENR_GPIO_EN * 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_LED pin_15 \t\tLDR     R2, =(PERIPH_BASE + GPIO_LED + GPIO_MODER)  @ \u0430\u0434\u0440\u0435\u0441 \t\tLDR     R3, =GPIO_MODER_MDR                     @ \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  \t\tLDR     R2, =(PERIPH_BB_BASE + (GPIO_LED + GPIO_ODR) * 32 + GPIO_ODR_NUM*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>  \u042d\u0442\u043e \u0442\u0435\u0441\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u043e\u0434 STM32F4 Discovery, \u0435\u0441\u043b\u0438 \u0436\u0435 \u0443 \u043a\u043e\u0433\u043e \u0442\u043e \u0431\u0443\u0434\u0435\u0442 Open407I-C \u0442\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 <b>.set DEVBOARD, STM32F4DISCO<\/b> \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u0435\u043d\u0430 \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u043b\u044f Open407I-C<br \/>  \u042f \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u0432\u044b\u043d\u043e\u0441\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0438 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u0444\u0430\u0439\u043b\u0430 \u2014 \u043b\u0438\u0448\u043d\u0438\u0439 \u0440\u0430\u0437 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0447\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445 \u0438 \u043d\u0435 \u0443\u0434\u043e\u0431\u043d\u043e \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0437\u0430\u0442\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0438 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0435\u0441\u043b\u0438 \u0432 \u043a\u043e\u0434\u0435 \u0435\u0441\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u2014 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043f\u0440\u043e\u0449\u0435 \u00ab\u0432\u044b\u0442\u0430\u0449\u0438\u0442\u044c\u00bb \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u0444\u0430\u0439\u043b\u0430 \u0432\u0441\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c, \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0438\u0445, \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043e \u0442\u043e\u043c \u0447\u0442\u043e \u0436\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u00ab\u043d\u0435\u0434\u0440\u0430\u0445\u00bb \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0438\u043b\u0438 \u043c\u043e\u0434\u0443\u043b\u044f<\/p>\n<hr\/>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u0434\u0443\u043c\u0430\u0435\u043c\u0441\u044f \u043e\u0431 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0440\u044f\u0434 \u043b\u0438 \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u043e\u0434\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435, \u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 (\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u0430\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432) \u0444\u0430\u0439\u043b\u043e\u0432.<br \/>  \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u044d\u0442\u043e \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043d\u0430\u0448\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u00ab\u043c\u0438\u0433\u0430\u043b\u043a\u0430\u00bb: \u0432 \u043d\u0435\u0439 \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u043f\u0430\u0443\u0437\u0443 \u043c\u0435\u0436\u0434\u0443 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c\/\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430, \u0441\u0435\u0439\u0447\u0430\u0441 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0446\u0438\u043a\u043b \u0441 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0447\u0438\u0441\u043b\u043e\u043c \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f, \u043d\u043e \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u0442\u0430\u0439\u043c\u0435\u0440\u0430 \u2014 \u0438 \u044d\u0442\u0443 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u0444\u0430\u0439\u043b\u0435.<br \/>  \u0412\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u043c\u043e\u0436\u043d\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u043e\u0439 &quot;<b>.include<\/b>&quot; \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0444\u0430\u0439\u043b main.asm<\/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  @ \u0415\u0441\u043b\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0438\u0436\u0435 \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e, \u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0447\u0442\u043e  @ \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u043f\u043b\u0430\u0442\u0430 Open407I-C, \u0438\u043d\u0430\u0447\u0435 STM32F4 Discovery .set DEVBOARD, STM32F4DISCO  .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  @ \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b .ifdef DEVBOARD    .equ GPIO_LED\t,GPIOD_BASE       \t@ \u043f\u043e\u0440\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430    .equ RCC_GPIO_EN\t,RCC_AHB1ENR_GPIODEN_N  @ \u0431\u0438\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f GPIO    .equ GPIO_ODR_NUM\t,15\t\t\t@ \u043d\u043e\u043c\u0435\u0440 \u043f\u0438\u043d\u0430 GPIO .else    .equ GPIO_LED\t,GPIOH_BASE    .equ RCC_GPIO_EN\t,RCC_AHB1ENR_GPIOHEN_N    .equ GPIO_ODR_NUM\t,2 .endif  .equ GPIO_MODER_MDR\t,2&lt;&lt;(GPIO_ODR_NUM*2)  @ \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_LED \t\tLDR     R2, =(PERIPH_BB_BASE + (RCC_BASE + RCC_AHB1ENR) * 32 + RCC_AHB1ENR_GPIO_EN * 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_LED pin_15 \t\tLDR     R2, =(PERIPH_BASE + GPIO_LED + GPIO_MODER)  @ \u0430\u0434\u0440\u0435\u0441 \t\tLDR     R3, =GPIO_MODER_MDR                     @ \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  \t\tLDR     R2, =(PERIPH_BB_BASE + (GPIO_LED + GPIO_ODR) * 32 + GPIO_ODR_NUM*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  .include &quot;delay.asm&quot; @ \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0444\u0430\u0439\u043b delay.asm \u0432 \u044d\u0442\u043e \u043c\u0435\u0441\u0442\u043e \u043d\u0430\u0448\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0444\u0430\u0439\u043b delay.asm<\/b><\/p>\n<div class=\"spoiler_text\">\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>  <\/div>\n<\/div>\n<p>  \u044d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0435, \u043d\u043e \u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u043e\u0434\u0438\u043d, \u043f\u043e \u043d\u0430\u0447\u0430\u043b\u0443 \u043a\u0430\u0436\u0443\u0449\u0438\u0439\u0441\u044f \u043d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c, <b>\u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a \u2014 \u043e\u0431\u0449\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u043c\u0435\u043d \u043c\u0435\u0442\u043e\u043a.<\/b><br \/>  \u041f\u043e\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0435 \u043f\u0435\u0440\u0435\u0432\u0430\u043b\u0438\u0442 \u0437\u0430 150-300 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u2014 \u0443 \u0432\u0430\u0441 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u043e\u0431\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0432 \u00ab\u043f\u0440\u0438\u0434\u0443\u043c\u044b\u0432\u0430\u043d\u0438\u0438\u00bb \u0438\u043c\u0435\u043d \u043c\u0435\u0442\u043e\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u043c\u0435\u0442\u043a\u0438 &quot;<b>DELYA1:<\/b>&quot;, \u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441 \u0435\u0449\u0435 \u043a\u0430\u043a\u043e\u0439 \u043d\u0438\u0431\u0443\u0434\u044c \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0435\u0439, \u043d\u043e \u0432\u0441\u0435 \u043d\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e: \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b \u043d\u0430\u0447\u043d\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0438 \u043d\u0430\u0447\u043d\u0435\u0442\u0435 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044f\u0445 \u2014 \u0442\u043e \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0447\u043d\u0443\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u044f \u0432 \u0438\u043c\u0435\u043d\u0430\u0445 \u043c\u0435\u0442\u043e\u043a.<br \/>  \u041e\u0434\u0438\u043d \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u2014 \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u0438\u043c\u044f \u043c\u0435\u0442\u043a\u0438 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430 \u0438\u043c\u0435\u043d\u0438 \u0444\u0430\u0439\u043b\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0438\u043c\u044f \u043c\u0435\u0442\u043a\u0438 &quot;<b>DELAY_ASM_DELAY:<\/b>&quot;, \u044f \u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0442\u0430\u043a\u043e\u0439 \u043f\u0443\u0442\u044c, \u043f\u0440\u0430\u0432\u0434\u0430 \u043e\u043f\u044f\u0442\u044c \u043d\u0435 \u0431\u0435\u0437 \u043e\u0433\u043e\u0432\u043e\u0440\u043e\u043a \u2014 \u0432\u0435\u0434\u044c \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0438 \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0439 \u0438\u043c\u044f \u043c\u0435\u0442\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432 \u0441\u0435\u0431\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430, \u043d\u043e \u0438 \u0438\u043c\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 &quot;<b>DIRECTORY_DELAY_ASM_DELAY:<\/b>&quot; (\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c &quot;<b>DIRECTORY<\/b>&quot;, \u0432 \u0438\u0442\u043e\u0433\u0435, \u0435\u0441\u043b\u0438 \u043d\u0430\u043c \u0435\u0449\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u043c\u0435\u0442\u043a\u0438 \u0438\u043c\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 2-3 \u0441\u043b\u043e\u0432 \u0434\u043b\u044f \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u2014 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043e\u0432\u0441\u0435\u043c \u0443\u0436 \u043c\u043e\u043d\u0441\u0442\u0440\u043e\u0438\u0434\u0430\u043b\u044c\u043d\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 \u043c\u0435\u0442\u043e\u043a: &quot;<b>DIRECTORY_DELAY_ASM_DELAY_LOOP_0x10000:<\/b>&quot;\u2026<\/p>\n<p>  \u0415\u0449\u0435 \u043e\u0434\u0438\u043d \u0441\u043f\u043e\u0441\u043e\u0431 \u044d\u0442\u043e <b>\u0440\u0430\u0437\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432<\/b> \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<br \/>  \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0444\u0430\u0439\u043b <b>main.asm<\/b> \u0438 <b>delay.asm<\/b>, \u0438 \u0437\u0430\u0442\u0435\u043c \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438 \u2014 \u044d\u0442\u0438 \u0434\u0432\u0435 \u043e\u0442\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0447\u0430\u0441\u0442\u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0442\u044c\u0441\u044f \u0432 \u0438\u0442\u043e\u0433\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0435.<br \/>  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a\u0430\u0436\u0434\u044b\u0439 .asm \u0444\u0430\u0439\u043b \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u2014 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c, \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442.<br \/>  \u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443 \u043a\u0430\u043a\u0443\u044e \u043c\u0435\u0442\u043a\u0443 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u0432\u043d\u0435 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430 &quot;<b>.global<\/b>&quot;. <br \/>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0442\u0435\u043a\u0441\u0442 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043f\u0440\u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0438 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0434\u043b\u044f \u0440\u0430\u0437\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0444\u0430\u0439\u043b delay.asm<\/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  .section .text  .global DELAY @ \u043f\u043e \u043c\u0435\u0442\u043a\u0435 DELAY \u043a \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b  DELAY: \t\tLDR     R3, =0x00100000   @ \u043f\u043e\u0432\u0442\u043e\u0440 \u0446\u0438\u043a\u043b\u0430 0x0010 0000 \u0440\u0430\u0437. Delay_loop:\t@ \u043c\u0435\u0442\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435, \u0438\u0437\u0432\u043d\u0435 \u043d\u0435 \u0432\u0438\u0434\u043d\u0430 ! \t\tSUBS     R3, R3, 1 \t\tBNE     Delay_loop \t\tBX      LR  <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043c\u0435\u0442\u043a\u0430 <b>DELAY<\/b> \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u043a\u0430\u043a <b>.global<\/b> \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0434\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0430 \u0432\u043e\u0442 \u043c\u0435\u0442\u043a\u0430 <b>DELAY_loop<\/b> \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u0444\u0430\u0439\u043b\u0430 <b>delay.asm<\/b> \u0438 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u043c\u044f \u0442\u0430\u043a\u043e\u0439 \u043c\u0435\u0442\u043a\u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445 \u043b\u0438\u0431\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043b\u044e\u0431\u044b\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u0447\u0430\u0441\u0442\u044f\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u2014 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442!<\/p>\n<p>  \u0432 \u0442\u0435\u043a\u0441\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0434\u0435-\u0444\u0430\u043a\u0442\u043e \u0441\u043b\u043e\u0436\u0438\u0432\u0448\u0438\u0445\u0441\u044f \u043f\u0440\u0430\u0432\u0438\u043b \u043d\u0443\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0443 &quot;<b>.extern<\/b>&quot; \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u043c\u0435\u0442\u043a\u0443 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0438 \u0431\u0443\u0434\u0435\u0442 \u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438, \u043d\u043e \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043d\u0430 GNU AS \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u0430\u044f \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438, \u0438 \u043b\u044e\u0431\u044b\u0435 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043c\u0435\u0442\u043a\u0438 \u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u0441\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u043c\u0438. \u041f\u043e\u0434\u0445\u043e\u0434 \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0441\u043f\u043e\u0440\u043d\u044b\u0439, \u0432\u0441\u0435 \u0442\u0430\u043a\u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u043a \u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u043b\u0443\u0447\u0448\u0435 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u044f\u0432\u043d\u043e.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0444\u0430\u0439\u043b main.asm<\/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  @ \u0415\u0441\u043b\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0438\u0436\u0435 \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e, \u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0447\u0442\u043e  @ \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u043f\u043b\u0430\u0442\u0430 Open407I-C, \u0438\u043d\u0430\u0447\u0435 STM32F4 Discovery .set DEVBOARD, STM32F4DISCO  .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  @ \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b .ifdef DEVBOARD    .equ GPIO_LED\t,GPIOD_BASE       \t@ \u043f\u043e\u0440\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430    .equ RCC_GPIO_EN\t,RCC_AHB1ENR_GPIODEN_N  @ \u0431\u0438\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f GPIO    .equ GPIO_ODR_NUM\t,15\t\t\t@ \u043d\u043e\u043c\u0435\u0440 \u043f\u0438\u043d\u0430 GPIO .else    .equ GPIO_LED\t,GPIOH_BASE    .equ RCC_GPIO_EN\t,RCC_AHB1ENR_GPIOHEN_N    .equ GPIO_ODR_NUM\t,2 .endif  .equ GPIO_MODER_MDR\t,2&lt;&lt;(GPIO_ODR_NUM*2)  @ \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_LED \t\tLDR     R2, =(PERIPH_BB_BASE + (RCC_BASE + RCC_AHB1ENR) * 32 + RCC_AHB1ENR_GPIO_EN * 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_LED pin_15 \t\tLDR     R2, =(PERIPH_BASE + GPIO_LED + GPIO_MODER)  @ \u0430\u0434\u0440\u0435\u0441 \t\tLDR     R3, =GPIO_MODER_MDR                     @ \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  \t\tLDR     R2, =(PERIPH_BB_BASE + (GPIO_LED + GPIO_ODR) * 32 + GPIO_ODR_NUM*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  .extern DELAY\t @ \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u043c \u043e \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438 \u043c\u0435\u0442\u043a\u0438  \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>  <\/div>\n<\/div>\n<p>  \u043a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u043b\u0438\u0441\u0442\u0438\u043d\u0433\u0430 \u2014 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 &quot;.include&quot; \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e! \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a.<\/p>\n<p>  \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438 \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"dos\">:: \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0442\u0435\u043a\u0441\u0442\u044b \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b arm-none-eabi-as.exe -o main.o main.asm arm-none-eabi-as.exe -o delay.o delay.asm  :: \u043a\u043e\u043c\u043f\u043e\u043d\u0443\u0435\u043c \u043e\u0442\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0432 \u0435\u0434\u0438\u043d\u0443\u044e \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 arm-none-eabi-ld.exe -T stm32f40_def.ld -o compile\\sys.elf main.o delay.o <\/code><\/pre>\n<p>  \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 \u0434\u043b\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0430\u0445 .hex \u0438\u043b\u0438 .bin \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a\u0430\u043a \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 <a href=\"http:\/\/habrahabr.ru\/post\/274541\/\">\u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438<\/a> \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u044f\u0432\u043d\u043e \u0432\u0438\u0434\u043d\u043e \u043d\u0435\u0443\u0434\u043e\u0431\u0441\u0442\u0432\u043e \u0442\u0430\u043a\u043e\u0439 \u0441\u0445\u0435\u043c\u044b \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430: \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u043f\u043e\u0442\u043e\u043c \u0442\u0430\u043a \u0436\u0435 \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0438\u0435\u0441\u044f \u043e\u0442\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b. \u0414\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0432 \u0440\u0443\u0447\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u044f \u0444\u0430\u0439\u043b make_project.bat, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0440\u0443\u0442\u0438\u043d\u043e\u0435 \u0437\u0430\u043d\u044f\u0442\u0438\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043b\u043e\u0436\u0438\u0442\u044c \u043d\u0430 \u0447\u044c\u0438-\u0442\u043e \u0434\u0440\u0443\u0433\u0438\u0435 \u00ab\u043c\u043e\u0433\u0443\u0447\u0438\u0435 \u043f\u043b\u0435\u0447\u0438\u00bb<br \/>  \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0432 \u00ab\u0432 \u0441\u0443\u0431\u0431\u043e\u0442\u0443\u00bb, \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043d\u043e\u0432\u044b\u0439 .bat \u0444\u0430\u0439\u043b \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0432 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435.<br \/>  \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0432\u043d\u0435\u0441\u0442\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0432 \u00ab\u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435\u00bb \u043e\u0431 \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u0444\u0430\u0439\u043b\u043e\u0432:  <\/p>\n<ol>\n<li>\u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 <b>src\/<\/b> \u043f\u0440\u043e\u0435\u043a\u0442\u0430:<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/7e2\/c4f\/f44\/7e2c4ff44d344c2aa561bfd1e1d8ba7b.jpg\"\/><\/li>\n<li>\u0432 \u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435<b> compile\/<\/b> \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0434\u043b\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438, \u0432 \u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 <b>compile\/temp\/<\/b> \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043e\u0442\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u0444\u0430\u0439\u043b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0438 \u0442.\u0434.<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/8f2\/f2f\/d39\/8f2f2fd39e404308a10cbc9aa9420eb4.jpg\"\/><\/li>\n<li>\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0431\u0443\u0434\u0443\u0442 \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0435\u0441\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 <b>\/src<\/b> \u0438 \u0438\u043c\u0435\u044e\u0449\u0438\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 <b>.asm<\/b>. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c, \u0442\u0435 \u0444\u0430\u0439\u043b\u044b \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u043e\u0439 <b>.include<\/b> \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u043c\u0435\u0442\u044c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 <b>.asm<\/b> \u2014 \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0434\u0432\u0430\u0436\u0434\u044b \u2014 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437 \u0432 \u0442\u0435\u043a\u0441\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u043d\u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u043b\u0438\u0441\u044c \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u043e\u0439 <b>.include<\/b>, \u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043f\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044e.<\/li>\n<li>\u043f\u0443\u0442\u044c \u0432\u0441\u0435\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <b>.include<\/b> \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c\u0441\u044f \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 <b>src\/<\/b>, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043b\u0435\u0436\u0438\u0442 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 <b>src\/<\/b> \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c <b>.include \u00absrc\/const_file.inc\u00bb<\/b>\n<p>  \u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e \u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u043d\u044b\u0439 \u0432 <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">make_project.bat<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"dos\">:: \u0424\u0430\u0439\u043b \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438 \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 GNU AS  echo off cls  :: \u0423\u0434\u0430\u043b\u0438\u043c \u0444\u0430\u0439\u043b\u044b \u043f\u0440\u0435\u0436\u043d\u0438\u0445 \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 ------------------------------ del \/Q compile\\*.*  del \/Q compile\\temp\\*.*   :: \u041d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 (\u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430) --------------------- set pth=%~dp0 set path=%~dp0bin\\ echo \u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u043f\u0443\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430: %path% echo.  echo \u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432: :: \u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0432\u0441\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c asm \u0444\u0430\u0439\u043b\u044b \u0432 .o ---------------- Setlocal EnableDelayedExpansion for \/r \/d %%i in (*) do (    cd %%i    for %%b in (*.asm) do (       set a=%%~fb       set o=%%~db%%~pb%%~nb.o       set l=compile\/temp\/%%~nb.lst       echo !a!       cd !pth! %path%arm-none-eabi-as.exe -o !o! !a! %path%arm-none-eabi-objdump.exe -j .vectors -j .asmcode -j .bss -j .rodata -d -t -w !o! &gt; !l!       cd %%i    ) )  :: \u043e\u0431\u0445\u043e\u0434\u0438\u043c \u0432\u0441\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0441\u0442\u0440\u043e\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a .o \u0444\u0430\u0439\u043b\u043e\u0432 ------------------- cd %pth% set ofiles= Setlocal EnableDelayedExpansion for \/r \/d %%i in (*) do (    cd %%i    for %%b in (*.o) do set ofiles=!ofiles! %%~fb    ) ) echo.  echo \u041a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432:  echo %ofiles% echo. :: \u043a\u043e\u043c\u043f\u043e\u043d\u0443\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 .o \u0444\u0430\u0439\u043b\u044b \u0432 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 --------------------------------- cd %pth% %path%arm-none-eabi-ld.exe -T src\\stm32f40_map.ld -o compile\\sys.elf %ofiles%  :: \u0415\u0441\u043b\u0438 \u043f\u0440\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0431\u044b\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043d\u0435\u0442 - \u0432\u044b\u0445\u043e\u0434\u0438\u043c ! set ou=compile\\sys.elf IF NOT exist %ou% (    echo \u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 !    PAUSE    goto exit )  :: \u0438\u0437 .elf \u0444\u0430\u0439\u043b\u0430 \u0434\u0435\u043b\u0430\u0435\u043c \u0444\u0430\u0439\u043b\u044b \u043f\u0440\u043e\u0448\u0438\u0432\u043e\u043a .bin \u0438 .hex -------------------------- cd %pth% %path%arm-none-eabi-objcopy.exe -O binary compile\\sys.elf compile\\output.bin %path%arm-none-eabi-objcopy.exe -O ihex   compile\\sys.elf compile\\output.hex :: \u0410\u0434\u0440\u0435\u0441\u0430 \u043c\u0435\u0442\u043e\u043a \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u0432\u044b\u0432\u043e\u0434 \u0432 \u0444\u0430\u0439\u043b %path%arm-none-eabi-nm.exe -A -p compile\\sys.elf &gt; compile\\labels.lst echo. echo \u0424\u0430\u0439\u043b\u044b \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 \\compile\\  :exit :: \u0443\u0434\u0430\u043b\u044f\u0435\u043c .o \u0444\u0430\u0439\u043b\u044b \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043c\u0435\u0448\u0430\u043b\u0438\u0441\u044c---------------------------------------- cd %pth% Setlocal EnableDelayedExpansion for \/r \/d %%i in (*) do (    cd %%i    for %%b in (*.o) do (del \/Q %%~fb) ) <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041d\u0435 \u0431\u0443\u0434\u0443 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u043d\u043e\u044e \u0444\u0430\u0439\u043b\u0430 \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0434\u0443\u043c\u0430\u044e \u043a\u043e\u043c\u0443 \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043e\u043d \u0441\u0430\u043c \u0431\u0435\u0437 \u0442\u0440\u0443\u0434\u0430 \u043d\u0430\u0439\u0434\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e (\u043d\u0430\u0447\u0430\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0441 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e <b>for \/?<\/b>) \u043a\u0430\u043a \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u043e\u0431\u0445\u043e\u0434 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 \u0438 \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u043f\u0430\u043f\u043a\u0430\u0445. \u0424\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u043f\u0430\u043a\u0435\u0442\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u043c\u044b \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043b\u0438 \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438.<\/p>\n<p>  \u041f\u0430\u043f\u043a\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u0432 \u043f\u0430\u043f\u043a\u0435 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438 \u0432 \u0435\u0435 \u043f\u0443\u0442\u0438 \u043d\u0435\u0442 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432 \u0432 \u0438\u043c\u0435\u043d\u0430\u0445. \u0420\u0443\u0441\u0441\u043a\u0438\u0435 \u0431\u0443\u043a\u0432\u044b \u0432 \u0438\u043c\u0435\u043d\u0430\u0445 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f.<br \/>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u0443\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430: <b>D:\/\u041c\u043e\u0439\u041f\u0440\u043e\u0435\u043a\u0442\/gnuas\/\u041f\u0435\u0440\u0432\u044b\u0439\/<\/b> \u2014 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0430 \u0432\u043e\u0442 <b>D:\/\u041c\u043e\u0439 \u041f\u0440\u043e\u0435\u043a\u0442\/gnus\/\u041f\u0435\u0440\u0432\u044b\u0439\/<\/b> \u2014 \u043d\u0435 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c (\u0418\u043c\u044f \u043f\u0430\u043f\u043a\u0438 \u00ab\u041c\u043e\u0439 \u041f\u0440\u043e\u0435\u043a\u0442\u00bb \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u0440\u043e\u0431\u0435\u043b)<\/p>\n<p>  \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430\u0440\u044f\u0434\u0443 \u043a \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0443 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u043c\u0435\u0442\u043a\u0430\u043c\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0438\u0434\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432-\u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 \u043f\u0440\u0438\u0432\u0435\u043b\u0438 \u0438 \u043a \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u043a\u0446\u0438\u0439 \u0432 \u043a\u0430\u0440\u0442\u0443 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a\u0430.<br \/>  \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0443 \u043d\u0430\u0441 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u0444\u0430\u0439\u043b\u0430: main.\u043e \u0438 delay.\u043e \u2014 \u0442\u043e \u043f\u0440\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0435 \u0444\u0430\u0439\u043b\u043e\u0432, \u0435\u0441\u043b\u0438 \u0438\u0445 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0443 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443:<br \/>  <b>arm-none-eabi-ld.exe -T src\\stm32f40_map.ld -o compile\\sys.elf main.o delay.o<\/b><br \/>  \u0442\u043e \u043f\u0440\u043e\u0435\u043a\u0442 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0431\u0440\u0430\u043d \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430 \u0441\u0432\u043e\u0435\u043c \u043c\u0435\u0441\u0442\u0435 (\u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b), \u0435\u0441\u043b\u0438 \u0436\u0435 \u043d\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0443 \u0444\u0430\u0439\u043b\u044b \u043f\u043e\u0441\u043b\u0430\u0442\u044c \u0432 \u0438\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<br \/>  <b>arm-none-eabi-ld.exe -T src\\stm32f40_map.ld -o compile\\sys.elf delay.o main.o<\/b><br \/>  \u0442\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0432 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b!<br \/>  \u0421\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u044f\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u043a\u0446\u0438\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439, \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u0438 \u0438\u043d\u044b\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438.<br \/>  \u041c\u044b \u0443\u0436\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043b\u0438 \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0444\u043e\u0440\u043c\u0430\u0442 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0441\u0435\u043a\u0446\u0438\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438, \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u044d\u0442\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439, \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0441\u0435\u043a\u0446\u0438\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 RAM:  <\/p>\n<pre><code class=\"xml\">\/* STM32F40x, flash 1 mb, sram 192 kb, bkpsram 4 kb *\/  MEMORY { \t\/* FLASH - \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f flash \u043f\u0430\u043c\u044f\u0442\u044c *\/ \tFLASH      (RX)  : ORIGIN = 0x08000000, LENGTH = 1024K  \t\/* SRAM  - \u041e\u0417\u0423 \u043e\u0431\u0449\u0435\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043f.2.3.1 RM0090, \u0441\u0442\u0440.68 *\/ \tSRAM       (RW)  : ORIGIN = 0x20000000, LENGTH = 128K   \t\/* CCM - \u0431\u044b\u0441\u0442\u0440\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u044f\u0434\u0440\u0430, \u043f.2.3.1 RM0090, \u0441\u0442\u0440.68 *\/ \tCCMDATARAM (RWX) : ORIGIN = 0x10000000, LENGTH = 64K         \t\/* BKPSRAM- backup sram, \u043f.2.3 RM0090, \u0441\u0442\u0440.65 *\/ \tBKPSRAM    (RW)  : ORIGIN = 0x40024000, LENGTH = 4K  } SECTIONS { \t.text : {  \t\t*(.vectors);    \/* \u0423\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 *\/ \t\t*(.text);       \/*  *\/ \t\t*(.asmcode)     \/* \u0422\u0435\u043a\u0441\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b *\/ \t\t*(.rodata);     \/* Read only DATA (\u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u0432 flash) *\/ \t} &gt; FLASH \t.bss : {  \t\t*(.bss);        \/* \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0432 SRAM *\/  \t} &gt; SRAM \t.ccmdataram : { \t\t*(.ccmdataram); \/* SRAM \u044f\u0434\u0440\u0430, \u0434\u043b\u044f \u043a\u043e\u0434\u0430 \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 *\/  \t} &gt; CCMDATARAM       \t.bkpsram : { \t\t*(.bkpsram)     \/* SRAM \u0441 \u044d\u043d\u0435\u0440\u0433\u043e\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c \u043f\u0438\u0442\u0430\u043d\u0438\u0435\u043c *\/ \t} &gt; BKPSRAM }  <\/code><\/pre>\n<p>  \u041f\u043e \u0441\u0435\u043a\u0446\u0438\u0438 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 <b>.text<\/b> \u0441\u0434\u0435\u043b\u0430\u044e \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0435:  <\/p>\n<pre><code class=\"xml\">\t.text : {  \t\t*(.vectors);    \/* \u0423\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 *\/ \t\t*(.text);       \/*  *\/ \t\t*(.asmcode)     \/* \u0422\u0435\u043a\u0441\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b *\/ \t\t*(.rodata);     \/* Read only DATA (\u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u0432 flash) *\/ \t} &gt; FLASH <\/code><\/pre>\n<p>  \u0422\u0430\u043a\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a\u0443 \u0447\u0442\u043e \u0441\u0435\u043a\u0446\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u044b \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u0442\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0432 \u043a\u0430\u043a\u043e\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u044b. <br \/>  \u0414\u043b\u044f \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u044f \u0432\u0432\u0435\u043b \u0441\u0435\u043a\u0446\u0438\u044e .vectors, \u044d\u0442\u043e \u0441\u0435\u043a\u0446\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437 (\u0447\u0442\u043e \u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u0432 \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0445 \u043f\u043e\u043a\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0430).<br \/>  \u0414\u0430\u043b\u0435\u0435 \u044f \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u044e \u0441\u0435\u043a\u0446\u0438\u0438 \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f \u0442\u0435\u043a\u0441\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b: \u044d\u0442\u043e <b>.text<\/b> \u0438 <b>.asmcode<\/b> \u2014 \u043f\u043e \u00ab\u0437\u0430\u0434\u0443\u043c\u043a\u0435\u00bb \u0441\u0435\u043a\u0446\u0438\u044f .text \u0431\u0443\u0434\u0435\u0442 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0430 \u043f\u043e\u0441\u043b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u2014 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u044f \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u044e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u00ab\u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0438\u00bb \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439), \u0430 \u0432\u043e\u0442 \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 <b>.asmcode<\/b> \u044f \u043f\u0438\u0448\u0443 \u0441\u0430\u043c \u0442\u0435\u043a\u0441\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<br \/>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043e\u0442\u043c\u0435\u0442\u0438\u0432 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u0441\u0435\u043a\u0446\u0438\u044e <b>.vectors<\/b> \u044f \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u044e \u0435\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e \u043a\u0430\u043a\u0438\u043c \u043f\u043e \u0441\u0447\u0435\u0442\u0443 \u0444\u0430\u0439\u043b\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d \u043f\u0440\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0435 <b>main.o<\/b><br \/>  \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0435\u043a\u0446\u0438\u0439 <b>.asmcode<\/b>, \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0443\u0436\u0435 \u0440\u043e\u043b\u0438 \u043d\u0435 \u0438\u0433\u0440\u0430\u0435\u0442 (\u043d\u0443 \u0435\u0441\u043b\u0438 \u0431\u044b\u0442\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u0447\u0435\u0441\u0442\u043d\u044b\u043c \u2014 \u0442\u043e \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0438\u0433\u0440\u0430\u0435\u0442, \u043d\u043e \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0441\u043e\u0432\u0441\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c, \u043d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u043a\u0430 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0440\u0430\u043d\u043e)<br \/>  \u0421\u0435\u043a\u0446\u0438\u044f <b>.rodata<\/b> \u2014 \u044d\u0442\u043e \u0441\u0435\u043a\u0446\u0438\u044f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442 \u0432\u043e flash, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u043b \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430, \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c \u0437\u0430\u0447\u0435\u043c \u043e\u043d\u0430 \u043d\u0443\u0436\u043d\u0430 \u043f\u0440\u043e\u0449\u0435 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435:  <\/p>\n<pre><code class=\"xml\">.asmcode . . . . . .      LDR R0, CONST  @ \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u044f\u0447\u0435\u0439\u043a\u0438 \u0441 \u0430\u0434\u0440\u0435\u0441\u043e\u043c CONST  .rodata CONST:     .word 0x12345678 @ \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438, \u043f\u0440\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u043e \u0432                @ \u0441\u0435\u043a\u0446\u0438\u044e .rodata \u043f\u043e\u0441\u043b\u0435 \u0432\u0441\u0435\u0445 \u0441\u0435\u043a\u0446\u0438\u0439 .asmcode  .asmcode     STR R0, [R1] . . . <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0431\u044b \u043c\u044b \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u00ab\u043f\u043e\u0441\u0440\u0435\u0434\u0438\u00bb \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432 \u043e\u0434\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0431\u044b \u043e\u0448\u0438\u0431\u043a\u0443 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438, \u0442\u0430\u043a \u043a\u0430\u043a \u043a\u043e\u043c\u0430\u043d\u0434\u0430 LDR R0, CONST \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b\u0430 \u0431\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0431\u044b \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c .word 0x12345678 (!!). \u0427\u0442\u043e\u0431\u044b \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0435 \u0431\u044b\u043b\u043e, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0443 \u0433\u0434\u0435 \u0442\u043e \u0432 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u043c \u043c\u0435\u0441\u0442\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b <b>B<\/b>, \u0438\u043b\u0438 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430, \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u0435 \u043a\u0443\u0434\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u043b \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b LDR Rx,=CONST \u0432 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438)\u2026<br \/>  \u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0436\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u0447\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0432 \u0432\u0438\u0434\u0435:  <\/p>\n<pre><code class=\"xml\">.asmcode . . . . . .      LDR R0, CONST  @ \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \u044f\u0447\u0435\u0439\u043a\u0438 \u0441 \u0430\u0434\u0440\u0435\u0441\u043e\u043c CONST      STR R0, [R1] . . . <\/code><\/pre>\n<p>  \u0430 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0430 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u043a\u0446\u0438\u0438 .rodata \u043f\u043e\u0441\u043b\u0435 \u0441\u0435\u043a\u0446\u0438\u0439 .asmcode<br \/>  \u041c\u0435\u043b\u043e\u0447\u044c ?! \u2014 \u0414\u0430! \u041d\u043e \u0438\u043d\u043e\u0433\u0434\u0430 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e!<\/p>\n<p>  \u041d\u0430\u0434\u0435\u044e\u0441\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0438\u0434\u0435\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0432\u0438\u0433\u0430\u043b\u0438 \u043c\u043d\u043e\u044e \u043f\u0440\u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0435\u043a\u0446\u0438\u0439 \u0441\u0442\u0430\u043b\u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u044b, \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0432\u043d\u0435\u0441\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043d\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442 \u00ab\u043c\u0438\u0433\u0430\u043b\u043a\u0430\u00bb, \u0441 \u0434\u0432\u0443\u043c\u044f \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043a\u0430\u0441\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0435\u043a\u0446\u0438\u0439  <\/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  @ \u0415\u0441\u043b\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0438\u0436\u0435 \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e, \u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0447\u0442\u043e  @ \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0430 \u043f\u043b\u0430\u0442\u0430 Open407I-C, \u0438\u043d\u0430\u0447\u0435 STM32F4 Discovery .set DEVBOARD, STM32F4DISCO  .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  @ \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u044b .ifdef DEVBOARD    .equ GPIO_LED\t,GPIOD_BASE       \t@ \u043f\u043e\u0440\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430    .equ RCC_GPIO_EN\t,RCC_AHB1ENR_GPIODEN_N  @ \u0431\u0438\u0442 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f GPIO    .equ GPIO_ODR_NUM\t,15\t\t\t@ \u043d\u043e\u043c\u0435\u0440 \u043f\u0438\u043d\u0430 GPIO .else    .equ GPIO_LED\t,GPIOH_BASE    .equ RCC_GPIO_EN\t,RCC_AHB1ENR_GPIOHEN_N    .equ GPIO_ODR_NUM\t,2 .endif  .equ GPIO_MODER_MDR\t,2&lt;&lt;(GPIO_ODR_NUM*2)  @ \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, \u0432 \u0441\u0435\u043a\u0446\u0438\u0438 .vectors  .section .vectors  .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  .section .asmcode  @ \u0441\u0435\u043a\u0446\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b  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_LED \t\tLDR     R2, =(PERIPH_BB_BASE + (RCC_BASE + RCC_AHB1ENR) * 32 + RCC_AHB1ENR_GPIO_EN * 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_LED pin_15 \t\tLDR     R2, =(PERIPH_BASE + GPIO_LED + GPIO_MODER)  @ \u0430\u0434\u0440\u0435\u0441 \t\tLDR     R3, =GPIO_MODER_MDR                     @ \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  \t\tLDR     R2, =(PERIPH_BB_BASE + (GPIO_LED + GPIO_ODR) * 32 + GPIO_ODR_NUM*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  <\/code><\/pre>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0444\u0430\u0439\u043b delay.asm<\/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  .section .asmcode @ \u0441\u0435\u043a\u0446\u0438\u044f \u043a\u043e\u0434\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0438\u0434\u0435\u0442 \u043f\u043e\u0441\u043b\u0435 .text \u0432 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0435  .global DELAY @ \u043f\u043e \u043c\u0435\u0442\u043a\u0435 DELAY \u043a \u043f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b  DELAY: \t\tLDR     R3, =0x00100000   @ \u043f\u043e\u0432\u0442\u043e\u0440 \u0446\u0438\u043a\u043b\u0430 0x0010 0000 \u0440\u0430\u0437. Delay_loop:\t@ \u043c\u0435\u0442\u043a\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435, \u0438\u0437\u0432\u043d\u0435 \u043d\u0435 \u0432\u0438\u0434\u043d\u0430 ! \t\tSUBS     R3, R3, 1 \t\tBNE     Delay_loop \t\tBX      LR  <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c, \u0432 \u043a\u0430\u043a\u043e\u043c \u0431\u044b \u043c\u044b \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u043d\u0435 \u043e\u0442\u0434\u0430\u0432\u0430\u043b\u0438 \u0444\u0430\u0439\u043b\u044b \u043d\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0443 \u2014 \u0441\u0435\u043a\u0446\u0438\u044f <b>.vectors<\/b> \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430, \u0430 \u0441\u0435\u043a\u0446\u0438\u044f .asmcode \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0435\u2026 \u0410 \u0432\u043e\u0442 \u043a\u0430\u043a\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0431\u0443\u0434\u0435\u0442 \u0438\u0434\u0442\u0438 \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 (main.asm \u0438\u043b\u0438 delay.asm) \u2014 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u043e\u0442 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u043a\u0438 (\u043a\u0442\u043e \u0440\u0430\u043d\u044c\u0448\u0435 \u0432\u0441\u0442\u0430\u043b \u2014 \u0442\u043e\u0433\u043e <s>\u0438 \u0442\u0430\u043f\u043a\u0438<\/s> \u0440\u0430\u043d\u044c\u0448\u0435 \u0438 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u043b\u0438)<\/p>\n<p>  \u0427\u0442\u043e \u0435\u0449\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f<s> \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0441\u0447\u0430\u0441\u0442\u044c\u044f ?<\/s> \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u043d\u0430 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0435 \u0434\u043b\u044f STM32F4?  <\/li>\n<\/ol>\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\/275237\/\"> http:\/\/habrahabr.ru\/post\/275237\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>       \u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0445 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f\u0445 \u044f \u043f\u043e\u043a\u0430\u0437\u0430\u043b \u043e\u0442 \u0447\u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0434\u043b\u044f STM32F4, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u0441\u0440\u0435\u0434\u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438 \u0444\u0430\u0439\u043b \u043a\u043e\u043c\u043f\u043e\u043d\u043e\u0432\u0449\u0438\u043a\u0430, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430, \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c GPIO \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0438 \u043f\u043e\u043c\u0438\u0433\u0430\u0442\u044c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c.<\/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\/\">STM32F4: 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><br \/>  <a href=\"http:\/\/habrahabr.ru\/post\/274901\/\">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)<\/a><\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0434\u043b\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0445 \u043f\u043b\u0430\u0442, \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0432\u044b\u043d\u043e\u0441\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0438\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f  <\/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-272343","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/272343","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=272343"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/272343\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=272343"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=272343"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=272343"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}