{"id":443991,"date":"2025-01-02T21:01:44","date_gmt":"2025-01-02T21:01:44","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=443991"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2025-01-02T21:01:44","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=443991","title":{"rendered":"<span>STM32. CMSIS. \u041f\u044f\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 (\u043f\u0441\u0435\u0432\u0434\u043e-)\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043d\u0430 \u0432\u044b\u0432\u043e\u0434\u0435 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0446\u0435\u043b\u0435\u0439. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0438\u0445 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u0445 \u0441\u0435\u0440\u0438\u0438 STM32.<\/p>\n<h3>\u0421\u0443\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b<\/h3>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0410\u0427\u0425 \u043b\u0438\u043d\u0438\u0438 \u0441\u0432\u044f\u0437\u0438 \u0438\u043b\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u043e\u0433\u043e \u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443. \u0418\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0448\u0443\u043c \u0434\u043b\u044f \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043c\u0443\u0437\u044b\u043a\u0438 (\u0447\u0438\u043f\u0442\u044e\u043d\u044b?). \u0418\u043b\u0438 \u0434\u043b\u044f \u0447\u0435\u0433\u043e-\u0442\u043e \u0435\u0449\u0451.<\/p>\n<p>\u041e\u0431\u044b\u0447\u043d\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u0438\u043b\u0438 \u0434\u0435\u043b\u0430\u044e\u0442 \u0441\u0432\u043e\u0438 \u0441\u0445\u0435\u043c\u044b \u043d\u0430 \u0431\u0430\u0437\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0442\u0440\u043e\u043d\u043e\u0432 \u0438\u043b\u0438 \u0431\u0438\u043f\u043e\u043b\u044f\u0440\u043d\u044b\u0445 \u0442\u0440\u0430\u043d\u0437\u0438\u0441\u0442\u043e\u0440\u043e\u0432. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u044b \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0432 3.3 \u0412\u043e\u043b\u044c\u0442\u0430 (\u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f \u043f\u0438\u0442\u0430\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430) \u0438 \u043c\u0430\u043b\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0432\u044b\u0432\u043e\u0434\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0431\u0435\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u043f\u044f\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0438 \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u043d\u0430 \u0432\u044b\u0432\u043e\u0434\u0435 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430. \u0427\u0435\u0442\u044b\u0440\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0435, \u043e\u0434\u0438\u043d \u2014 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439. \u041f\u0435\u0440\u0432\u044b\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435 STM32F303RE, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u2014 \u043d\u0430 STM32H743VI.<\/p>\n<h3>\u0421\u043f\u043e\u0441\u043e\u0431 \u21161 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u0426\u0410\u041f<\/h3>\n<p>\u0412\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u0445 \u0441\u0435\u0440\u0438\u0438 STM32 \u0435\u0441\u0442\u044c \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043e\u0434\u0438\u043d \u0434\u0432\u0443\u0445\u043a\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0426\u0410\u041f. \u041f\u043e\u043c\u0438\u043c\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u044b\u0432\u043e\u0434\u0435, \u043e\u043d \u0443\u043c\u0435\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0443\u044e \u0432\u043e\u043b\u043d\u0443 \u0438\u043b\u0438 \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b.<\/p>\n<p>\u041f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 12-\u0440\u0430\u0437\u0440\u044f\u0434\u043d\u043e\u0433\u043e \u0420\u0421\u041b\u041e\u0421 (\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0441\u0434\u0432\u0438\u0433\u0430 \u0441 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u044c\u044e):<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/906\/a96\/8b5\/906a968b54bc65be7e557878e571b33d.png\" alt=\"\u0421\u0445\u0435\u043c\u0430 12-\u0431\u0438\u0442\u043d\u043e\u0433\u043e \u0420\u0421\u041b\u041e\u0421 \u0438\u0437 rm0316.\" title=\"\u0421\u0445\u0435\u043c\u0430 12-\u0431\u0438\u0442\u043d\u043e\u0433\u043e \u0420\u0421\u041b\u041e\u0421 \u0438\u0437 rm0316.\" width=\"1597\" height=\"721\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/906\/a96\/8b5\/906a968b54bc65be7e557878e571b33d.png\"\/><\/p>\n<div><figcaption>\u0421\u0445\u0435\u043c\u0430 12-\u0431\u0438\u0442\u043d\u043e\u0433\u043e \u0420\u0421\u041b\u041e\u0421 \u0438\u0437 rm0316.<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0435\u0440\u0438\u043e\u0434 \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0432\u0435\u043d 4095 (2<sup>12<\/sup>-1). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430 \u0441\u043b\u0443\u0445 \u0442\u0430\u043a\u043e\u0439 \u0448\u0443\u043c \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u043c\u0441\u044f, \u0430 \u043f\u0440\u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u0442\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043a\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0442 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u043a\u0432\u0430\u0440\u0446\u0430 \u043d\u0430 8 \u041c\u0413\u0446. \u041e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0432\u043e \u0432\u0441\u0435\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445, \u043a\u0440\u043e\u043c\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e:<\/p>\n<pre><code class=\"cpp\">void set_72MHz() { RCC-&gt;CR |= ((uint32_t)RCC_CR_HSEON);  \/* \u0416\u0434\u0435\u043c \u043f\u043e\u043a\u0430 HSE \u043d\u0435 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442 \u0431\u0438\u0442 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 *\/ while(!(RCC-&gt;CR &amp; RCC_CR_HSERDY)) {}  \/* \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u043c Flash \u043d\u0430 2 \u0446\u0438\u043a\u043b\u0430 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f *\/ \/* Flash \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 *\/ FLASH-&gt;ACR &amp;= ~FLASH_ACR_LATENCY; FLASH-&gt;ACR |= FLASH_ACR_LATENCY_2;  \/* HCLK = SYSCLK *\/ RCC-&gt;CFGR |= RCC_CFGR_HPRE_DIV1;  \/* PCLK2 = HCLK *\/ RCC-&gt;CFGR |= RCC_CFGR_PPRE2_DIV1;  \/* PCLK1 = HCLK \/ 2 *\/ RCC-&gt;CFGR |= RCC_CFGR_PPRE1_DIV2;  \/* \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u043c \u043c\u043d\u043e\u0436\u0438\u0442\u0435\u043b\u044c PLL configuration: PLLCLK = HSE * 9 = 72 MHz *\/ \/* \u041f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438, \u0447\u0442\u043e \u043a\u0432\u0430\u0440\u0446 \u043d\u0430 8\u041c\u0413\u0446! *\/ RCC-&gt;CFGR &amp;= ~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMUL); RCC-&gt;CFGR |= RCC_CFGR_PLLSRC_HSE_PREDIV | RCC_CFGR_PLLMUL9;  \/* \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c PLL *\/ RCC-&gt;CR |= RCC_CR_PLLON;  \/* \u041e\u0436\u0438\u0434\u0430\u0435\u043c, \u043f\u043e\u043a\u0430 PLL \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442 \u0431\u0438\u0442 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 *\/ while((RCC-&gt;CR &amp; RCC_CR_PLLRDY) == 0) { asm(\"nop\"); }  \/* \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c PLL \u043a\u0430\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b *\/ RCC-&gt;CFGR &amp;= ~RCC_CFGR_SW; RCC-&gt;CFGR |= RCC_CFGR_SW_PLL;  \/* \u041e\u0436\u0438\u0434\u0430\u0435\u043c, \u043f\u043e\u043a\u0430 PLL \u0432\u044b\u0431\u0435\u0440\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b *\/ while ((RCC-&gt;CFGR &amp; RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL) { asm(\"nop\"); }  SystemCoreClockUpdate(); }<\/code><\/pre>\n<p>\u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043e\u0441\u0442\u0430\u0432\u043b\u044e \u0431\u0435\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0439, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a \u0442\u0435\u043c\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e\u043d \u043d\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u041d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0440\u0442\u0430 A GPIO, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 PA4 \u0438 PA5 \u2014 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0432\u044b\u0432\u043e\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0432 \u0432\u044b\u0445\u043e\u0434\u044b \u0426\u0410\u041f\u043e\u0432. \u0422\u0430\u043a\u0436\u0435 \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u0430\u0439\u043c\u0435\u0440 \u0434\u043b\u044f \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0426\u0410\u041f\u0430, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043d\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c TIM6, \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e reference manual, \u043a\u0430\u043a \u0440\u0430\u0437 \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0434\u0432\u0443\u0445 \u0442\u0430\u0439\u043c\u0435\u0440\u043e\u0432, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u0426\u0410\u041f\u0430. \u041d\u0443 \u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u043d\u0443\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u0426\u0410\u041f\u0430.<\/p>\n<pre><code class=\"cpp\">void init_clocks() { RCC-&gt;AHBENR |= RCC_AHBENR_GPIOAEN; RCC-&gt;APB1ENR |= RCC_APB1ENR_DAC1EN | RCC_APB1ENR_TIM6EN; }<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e main:<\/p>\n<pre><code class=\"cpp\">#include \"stm32f3xx.h\"  int main(void) { init_clocks(); set_72MHz();      \/\/\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438 \u0437\u0434\u0435\u0441\u044c      \/\/\u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0432 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435     while (1) { asm(\"nop\"); } return 0; }<\/code><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043f\u043e\u0440\u044f\u0434\u043e\u043a. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0442\u0430\u043b\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u043e\u0436\u0434\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a\u0442\u043e\u0432 \u0448\u0438\u043d\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0430 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0430 \u043f\u043e\u0442\u043e\u043c \u0443\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0435\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a. \u0417\u0430 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u044d\u0442\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a\u0442\u043e\u0432 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043f\u0440\u043e\u0439\u0434\u0443\u0442.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u044e:<\/p>\n<pre><code class=\"cpp\">\/\/\u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u0430 PA4 GPIOA-&gt;MODER |= GPIO_MODER_MODER4;<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u043e\u0431\u0430 \u0431\u0438\u0442\u0430 \u043f\u043e\u043b\u044f, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u0437\u0430 \u0440\u0435\u0436\u0438\u043c \u0432\u044b\u0432\u043e\u0434\u0430 PA4, \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u044f \u0435\u0433\u043e \u0432 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0442\u0430\u0439\u043c\u0435\u0440:<\/p>\n<pre><code class=\"cpp\">\/\/\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 TRGO \u043f\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044e \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430 TIM6-&gt;CR2 |= TIM_CR2_MMS_1; TIM6-&gt;ARR = 72 - 1; TIM6-&gt;PSC = 2 - 1;<\/code><\/pre>\n<p>\u0422\u0430\u0439\u043c\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b TRGO \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438, \u0442.\u0435. \u043a\u0430\u0436\u0434\u044b\u0435 144 \u0442\u0430\u043a\u0442\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b (\u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u0440\u0435\u0434\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0438 \u0441\u0430\u043c \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0442\u0430\u0439\u043c\u0435\u0440\u0430 \u0441\u0447\u0438\u0442\u0430\u044e\u0442 \u0441 \u043d\u0443\u043b\u044f). \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0426\u0410\u041f\u0430 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442 500 \u043a\u0413\u0446.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u2014 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0426\u0410\u041f:<\/p>\n<pre><code class=\"cpp\">\/\/\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0426\u0410\u041f: \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u0430 \u0448\u0443\u043c\u0430, \u0432\u044b\u0431\u043e\u0440 \u0448\u0443\u043c\u0430 \u0432 \/\/\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u0438\u043f\u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0432\u043e\u043b\u043d\u044b, \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c trigger \/\/DAC_CR_TSEL1 = 0 \u0434\u043b\u044f TIM6 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \/\/\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0448\u0443\u043c\u0430 DAC-&gt;CR = DAC_CR_MAMP1 | DAC_CR_WAVE1_0 | DAC_CR_TEN1;<\/code><\/pre>\n<p><code>DAC_CR_MAMP1<\/code> \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u0430. \u0417\u0430\u043f\u0438\u0441\u0430\u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>DAC_CR_MAMP1_0<\/code>, \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u0443 \u0441\u0438\u0433\u043d\u0430\u043b\u0430. \u041e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0433\u0440\u0443\u0431\u0430\u044f \u2014 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043b\u0438\u0431\u043e \u043f\u043e\u043b\u043d\u0443\u044e \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u0443, \u043b\u0438\u0431\u043e \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443, \u043b\u0438\u0431\u043e \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u044c, \u0438 \u0442.\u0434. \u0434\u043e 1\/4096 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u044b. <code>DAC_CR_WAVE1_0<\/code> \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0448\u0443\u043c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0432\u043e\u043b\u043d\u044b:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/74b\/5ee\/388\/74b5ee388e69f8650bfba2c2732a9db8.png\" alt=\"\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043d\u0435 \u0432\u0441\u0435 \u0426\u0410\u041f\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u0448\u0443\u043c\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u0442\u043e\u0440\u043e\u0439 \u0426\u0410\u041f \u0432  STM32F303x6\/8 \u0438 STM32F328x8 (\u0442\u0440\u0435\u0442\u0438\u0439 \u043a\u0430\u043d\u0430\u043b) \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u0432\u043e\u043b\u043d.\" title=\"\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043d\u0435 \u0432\u0441\u0435 \u0426\u0410\u041f\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u0448\u0443\u043c\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u0442\u043e\u0440\u043e\u0439 \u0426\u0410\u041f \u0432  STM32F303x6\/8 \u0438 STM32F328x8 (\u0442\u0440\u0435\u0442\u0438\u0439 \u043a\u0430\u043d\u0430\u043b) \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u0432\u043e\u043b\u043d.\" width=\"1575\" height=\"397\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/74b\/5ee\/388\/74b5ee388e69f8650bfba2c2732a9db8.png\"\/><\/p>\n<div><figcaption>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043d\u0435 \u0432\u0441\u0435 \u0426\u0410\u041f\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u0448\u0443\u043c\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u0442\u043e\u0440\u043e\u0439 \u0426\u0410\u041f \u0432  STM32F303x6\/8 \u0438 STM32F328x8 (\u0442\u0440\u0435\u0442\u0438\u0439 \u043a\u0430\u043d\u0430\u043b) \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u0432\u043e\u043b\u043d.<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0441\u0451 \u0433\u043e\u0442\u043e\u0432\u043e, \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0426\u0410\u041f \u0438 \u0442\u0430\u0439\u043c\u0435\u0440:<\/p>\n<pre><code class=\"cpp\">\/\/\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043f\u0435\u0440\u0432\u044b\u0439 \u043a\u0430\u043d\u0430\u043b \u0426\u0410\u041f\u0430 DAC-&gt;CR |= DAC_CR_EN1; \/\/\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0442\u0430\u0439\u043c\u0435\u0440 TIM6-&gt;CR1 |= TIM_CR1_CEN;<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0430 \u0432\u044b\u0432\u043e\u0434\u0435 PA4 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u00ab\u0448\u0443\u043c\u00bb.<\/p>\n<p>\u0417\u0430 \u043d\u0435\u0438\u043c\u0435\u043d\u0438\u0435\u043c \u043b\u0443\u0447\u0448\u0435\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0437\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u0438\u0433\u043d\u0430\u043b \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 \u0437\u0432\u0443\u043a\u043e\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u044b. \u0412 Audacity \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043b \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u043d\u044b\u0439 \u0441\u043f\u0435\u043a\u0442\u0440:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d37\/da8\/16d\/d37da816d7c7e030af1c4216f0b918ed.png\" alt=\"\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043f\u0438\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u0436\u0434\u044b\u0435 122 \u0413\u0446.\" title=\"\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043f\u0438\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u0436\u0434\u044b\u0435 122 \u0413\u0446.\" width=\"2368\" height=\"591\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d37\/da8\/16d\/d37da816d7c7e030af1c4216f0b918ed.png\"\/><\/p>\n<div><figcaption>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043f\u0438\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u0436\u0434\u044b\u0435 122 \u0413\u0446.<\/figcaption><\/div>\n<\/figure>\n<p>\u042d\u0442\u0438 \u043f\u0438\u043a\u0438 \u0435\u0441\u0442\u044c \u043d\u0435 \u0447\u0442\u043e \u0438\u043d\u043e\u0435, \u043a\u0430\u043a \u0433\u0430\u0440\u043c\u043e\u043d\u0438\u043a\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b, \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0432\u043d\u043e\u0439 122 \u0413\u0446. \u041e\u0442\u043a\u0443\u0434\u0430 \u0432\u0437\u044f\u043b\u0430\u0441\u044c \u044d\u0442\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0430? \u0410 \u0432\u0437\u044f\u043b\u0430\u0441\u044c \u043e\u043d\u0430 \u0438\u0437 \u043c\u0430\u043b\u043e\u0433\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u044b\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u043c. \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e,<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"\\frac{500000}{4095}=122.(100122) Hz.\" alt=\"\\frac{500000}{4095}=122.(100122) Hz.\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9b9\/f9b\/b04\/9b9f9bb04ca6ce1caa4bcafdbb092044.svg\" width=\"229\" height=\"42\"\/><\/p>\n<p>\u041c\u043d\u0435 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0437\u0430\u0447\u0435\u043c STM \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440. \u0412\u0435\u0434\u044c \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u0432\u0434\u0432\u043e\u0435 \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0434\u043b\u0438\u043d\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u043f\u0435\u0440\u0438\u043e\u0434 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0442\u0430\u043b \u0431\u044b \u0440\u0430\u0432\u0435\u043d \u0443\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 16 \u043c\u043b\u043d, \u0447\u0442\u043e \u0434\u0430\u0432\u0430\u043b\u043e \u0431\u044b \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u0439 \u0441\u043f\u0435\u043a\u0442\u0440, \u043a\u0440\u0430\u0439\u043d\u0435 \u0431\u043b\u0438\u0437\u043a\u0438\u0439 \u043a \u0431\u0435\u043b\u043e\u043c\u0443 \u0448\u0443\u043c\u0443.<\/p>\n<p>\u0414\u043e\u0441\u0442\u043e\u0438\u043d\u0441\u0442\u0432\u043e\u043c \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u043d\u043e\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0430 (\u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u044b\u0432\u043e\u0434\u044b \u043f\u043e\u0440\u0442\u0430 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043b\u044e\u0431\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c) \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u0438 \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u044b \u0441\u0438\u0433\u043d\u0430\u043b\u0430. \u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u0441\u043f\u0435\u043a\u0442\u0440\u0430 (\u0445\u043e\u0442\u044f, \u0435\u0441\u043b\u0438 \u043f\u043e\u043d\u0438\u0437\u0438\u0442\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0442\u043e \u043f\u043e\u043b\u043e\u0441\u0430 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438 \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u043d\u043e\u0433\u043e \u0441\u043f\u0435\u043a\u0442\u0440\u0430 \u0441\u0442\u0430\u043d\u0435\u0442 \u0448\u0438\u0440\u0435).<\/p>\n<h3>\u0421\u043f\u043e\u0441\u043e\u0431 \u21162 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u044f CRC<\/h3>\n<p>\u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u0445 STM32 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u043c\u043e\u0434\u0443\u043b\u044c \u0440\u0430\u0441\u0447\u0451\u0442\u0430 CRC. \u041f\u043e \u0441\u0443\u0442\u0438 \u0441\u0432\u043e\u0435\u0439 \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c 32-\u0440\u0430\u0437\u0440\u044f\u0434\u043d\u044b\u0439 \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0441 \u00ab\u043f\u043e\u0434\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435\u043c\u00bb \u0447\u0435\u0440\u0435\u0437 XOR \u0432 \u0446\u0435\u043f\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0441\u043b\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u044d\u0442\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0443\u043b\u0438, \u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u0432 \u0420\u0421\u041b\u041e\u0421 (\u0441\u043c. \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0438\u0441\u0442\u0438\u043d\u043d\u043e\u0441\u0442\u0438 XOR&#8217;\u0430). \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0439 \u043f\u043e\u043b\u0438\u043d\u043e\u043c \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b.<\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0432\u043e\u043f\u043b\u043e\u0442\u0438\u0442\u044c \u044d\u0442\u0443 \u0437\u0430\u0434\u0443\u043c\u043a\u0443, \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0430\u043c \u043c\u043e\u0434\u0443\u043b\u044c \u0440\u0430\u0441\u0447\u0451\u0442\u0430 CRC \u0438 \u0434\u0432\u0430 \u043a\u0430\u043d\u0430\u043b\u0430 DMA. \u041e\u0434\u0438\u043d \u043a\u0430\u043d\u0430\u043b \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043a\u043b\u0430\u0441\u0442\u044c \u0432 \u043c\u043e\u0434\u0443\u043b\u044c CRC \u043d\u0443\u043b\u0438, \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0420\u0421\u041b\u041e\u0421 \u0441\u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043e\u0434\u0438\u043d \u0431\u0438\u0442 \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438, \u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u00ab\u0434\u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u00bb \u0438\u0437 \u043c\u043e\u0434\u0443\u043b\u044f \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u0443\u044e \u00abCRC\u00bb (\u043f\u043e \u0441\u0443\u0442\u0438 \u2014 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0420\u0421\u041b\u041e\u0421) \u0438 \u043a\u043b\u0430\u0441\u0442\u044c \u0435\u0451 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 ODR (output data register) \u043f\u043e\u0440\u0442\u0430 GPIO. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0442\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0432\u044b\u0432\u043e\u0434\u044b \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0440\u0442\u0430 GPIO \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0432\u044b\u0432\u043e\u0434\u043e\u0432 GPIO (\u0442.\u0435. \u0438\u0445 \u0432\u0441\u0451 \u0435\u0449\u0451 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0432\u0445\u043e\u0434\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0438 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438).<\/p>\n<p>\u0421\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0441\u043f\u043e\u0441\u043e\u0431 \u0438 \u0441\u043f\u043e\u0441\u043e\u0431 \u21163 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432 G0 \u0438 L0, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0442\u0430\u043c GPIO \u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043d\u0430 \u043e\u0431\u0449\u0435\u0439 \u0448\u0438\u043d\u0435. \u041e\u043d\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u043c\u0443 \u044f\u0434\u0440\u0443 \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0448\u0438\u043d\u0435, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e DMA \u043a \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043c GPIO \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442.<\/p>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435:<\/p>\n<pre><code class=\"cpp\">void init_clocks() { RCC-&gt;AHBENR |= RCC_AHBENR_GPIOAEN | RCC_AHBENR_CRCEN | RCC_AHBENR_DMA2EN; RCC-&gt;APB1ENR |= RCC_APB1ENR_TIM6EN | RCC_APB1ENR_TIM7EN; }<\/code><\/pre>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f main \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0439 \u0436\u0435. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438:<\/p>\n<pre><code class=\"cpp\">\/\/\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0432\u044b\u0432\u043e\u0434\u0430 PA4 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434 GPIOA-&gt;MODER &amp;= ~GPIO_MODER_MODER4; GPIOA-&gt;MODER |= GPIO_MODER_MODER4_0;<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u0432\u0441\u0451 \u0442\u043e\u0442 \u0436\u0435 \u0432\u044b\u0432\u043e\u0434 PA4 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0442\u0430\u0439\u043c\u0435\u0440\u044b. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0442\u0430\u0439\u043c\u0435\u0440\u044b TIM6 \u0438 TIM7:<\/p>\n<pre><code class=\"cpp\">\/\/\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 TRGO \u043f\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044e \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430 TIM6-&gt;CR2 |= TIM_CR2_MMS_1; TIM6-&gt;DIER = TIM_DIER_UDE; TIM6-&gt;ARR = 10 - 1; TIM6-&gt;PSC = 0;  \/\/\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 TRGO \u043f\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044e \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430 TIM7-&gt;CR2 |= TIM_CR2_MMS_1; TIM7-&gt;DIER = TIM_DIER_UDE; TIM7-&gt;ARR = 10 - 1; TIM7-&gt;PSC = 0;<\/code><\/pre>\n<p><code>TIM6-&gt;DIER = TIM_DIER_UDE;<\/code> \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u0441\u043e\u0431\u044b\u0442\u0438\u044f TIM6_UP, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0434\u043b\u044f TIM7_UP. \u042d\u0442\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043d\u0443\u0436\u043d\u044b \u0434\u043b\u044f \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043e\u043a \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 DMA:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f9a\/230\/8e4\/f9a2308e4f6f728c794e6a6bddb537af.png\" alt=\"\u0411\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0435\u0442\u0438\u0439 \u0438 \u0447\u0435\u0442\u0432\u0451\u0440\u0442\u044b\u0439 \u043a\u0430\u043d\u0430\u043b\u044b DMA2.\" title=\"\u0411\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0435\u0442\u0438\u0439 \u0438 \u0447\u0435\u0442\u0432\u0451\u0440\u0442\u044b\u0439 \u043a\u0430\u043d\u0430\u043b\u044b DMA2.\" width=\"1779\" height=\"795\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f9a\/230\/8e4\/f9a2308e4f6f728c794e6a6bddb537af.png\"\/><\/p>\n<div><figcaption>\u0411\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0435\u0442\u0438\u0439 \u0438 \u0447\u0435\u0442\u0432\u0451\u0440\u0442\u044b\u0439 \u043a\u0430\u043d\u0430\u043b\u044b DMA2.<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0441\u0430\u043c \u043c\u043e\u0434\u0443\u043b\u044c CRC:<\/p>\n<pre><code class=\"cpp\">\/\/\u0441\u0431\u0440\u043e\u0441 CRC-&gt;CR = CRC_CR_RESET; \/\/\u043f\u043e\u043b\u0438\u043d\u043e\u043c 32 \u0431\u0438\u0442\u0430, \u0431\u0435\u0437 \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 CRC-&gt;CR = 0; \/\/\u043f\u0438\u0448\u0435\u043c \u043d\u0435\u043d\u0443\u043b\u0435\u0432\u043e\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 CRC-&gt;INIT = 0xAAAAAAAA; \/\/\u043f\u043e\u043b\u0438\u043d\u043e\u043c, \u0420\u0421\u041b\u041e\u0421 32 \u0431\u0438\u0442\u0430, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0435\u0440\u0438\u043e\u0434 CRC-&gt;POL = 0x000000C5;<\/code><\/pre>\n<p>\u041f\u043e\u043b\u0438\u043d\u043e\u043c \u0437\u0434\u0435\u0441\u044c \u00ab\u043f\u0435\u0440\u0435\u0432\u0451\u0440\u043d\u0443\u0442\u00bb \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u00ab\u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e\u00bb \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u0442\u0432\u043e\u0434\u043e\u0432 \u0420\u0421\u041b\u041e\u0421, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0441\u0434\u0432\u0438\u0433 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u043f\u0440\u0430\u0432\u043e, \u0430 \u043d\u0435 \u0432\u043b\u0435\u0432\u043e.<\/p>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c DMA:<\/p>\n<pre><code class=\"cpp\">\/\/\u043f\u0435\u0440\u0435\u0441\u044b\u043b\u0430\u0442\u044c \u043f\u043e 32 \u0431\u0438\u0442\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430, \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u044e, \/\/\u0434\u043b\u0438\u043d\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u0440\u0430\u0432\u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u043f\u043e\u0441\u044b\u043b\u043a\u0435, \u0431\u0435\u0437 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439. \u041f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0430 \u043f\u043e \/\/\u0441\u0438\u0433\u043d\u0430\u043b\u0443 \u043e\u0442 TIM6 DMA2_Channel3-&gt;CCR = DMA_CCR_PSIZE_1 | DMA_CCR_MSIZE_1 | DMA_CCR_CIRC | DMA_CCR_DIR; DMA2_Channel3-&gt;CNDTR = 1; DMA2_Channel3-&gt;CMAR = (uint32_t)&amp;zero_var; DMA2_Channel3-&gt;CPAR = (uint32_t)&amp;(CRC-&gt;DR);  \/\/\u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u043d\u043e \u0438\u0437 \"\u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438\" \u0432 \"\u043f\u0430\u043c\u044f\u0442\u044c\" (\u0438\u0437 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0440\u0430\u0441\u0447\u0451\u0442\u0430 CRC CRC-&gt;DR \/\/\u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 GPIOA-&gt;ODR). \u041f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0430 \u043f\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0443 \u043e\u0442 TIM7 DMA2_Channel4-&gt;CCR = DMA_CCR_PSIZE_1 | DMA_CCR_MSIZE_1 | DMA_CCR_CIRC; DMA2_Channel4-&gt;CNDTR = 1; DMA2_Channel4-&gt;CMAR = (uint32_t)&amp;(GPIOA-&gt;ODR); DMA2_Channel4-&gt;CPAR = (uint32_t)&amp;(CRC-&gt;DR);<\/code><\/pre>\n<p>\u0422\u0440\u0435\u0442\u0438\u0439 \u043a\u0430\u043d\u0430\u043b \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0441\u0438\u0433\u043d\u0430\u043b\u0443 \u043e\u0442 TIM6 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>zero_var<\/code> \u0432 <code>CRC-&gt;DR<\/code> (\u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u044f CRC). \u0427\u0435\u0442\u0432\u0451\u0440\u0442\u044b\u0439 \u043a\u0430\u043d\u0430\u043b \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043f\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0443 \u043e\u0442 TIM7 \u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 <code>CRC-&gt;DR<\/code>(\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438 \u0447\u0442\u0435\u043d\u0438\u0438 \u0432\u043e\u0437\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0430\u0448\u0435\u0433\u043e \u00ab\u0420\u0421\u041b\u041e\u0421\u00bb) \u0432 <code>GPIOA-&gt;ODR<\/code>.<\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u043b\u0438\u043d\u043d\u0430\u044f (\u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 2<sup>32<\/sup>) \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u044d\u0442\u0438\u043c \u043a\u0443\u0441\u0442\u0430\u0440\u043d\u044b\u043c \u0420\u0421\u041b\u041e\u0421. \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0432\u0441\u0451 \u044d\u0442\u043e \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c:<\/p>\n<pre><code class=\"cpp\">\/\/\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043a\u0430\u043d\u0430\u043b\u044b DMA DMA2_Channel3-&gt;CCR |= DMA_CCR_EN; DMA2_Channel4-&gt;CCR |= DMA_CCR_EN;  \/\/\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0442\u0430\u0439\u043c\u0435\u0440\u044b TIM6-&gt;CR1 |= TIM_CR1_CEN; TIM7-&gt;CR1 |= TIM_CR1_CEN;<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u00ab\u0448\u0443\u043c\u00bb, \u0435\u0441\u043b\u0438 \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437 \u0437\u0432\u0443\u043a\u043e\u0432\u0443\u044e \u043a\u0430\u0440\u0442\u0443 \u0438\u043b\u0438 \u043d\u0430\u0443\u0448\u043d\u0438\u043a\u0438, \u043f\u043e\u0443\u0431\u0430\u0432\u0438\u0442 \u0432\u00a0\u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u0435 \u043f\u043e\u00a0\u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441\u00a0\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c (\u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u044b\u0441\u043e\u043a\u0438\u0435 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0438\u00a0\u043f\u0440\u043e\u0432\u043e\u0434\u0430 \u00ab\u043e\u0431\u0440\u0443\u0431\u044f\u0442\u00bb), \u043d\u043e\u00a0\u0438\u0441\u0447\u0435\u0437\u043d\u0435\u0442 \u0442\u043e\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0430\u044f. CRC \u0442\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u00a0\u0447\u0430\u0441\u0442\u043e\u0442\u0435 7.2\u00a0\u041c\u0413\u0446, \u0442\u043e\u00a0\u0435\u0441\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0432\u00a014\u00a0\u0440\u0430\u0437 \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u0426\u0410\u041f \u0432\u00a0\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435, \u043e\u0434\u043d\u0430\u043a\u043e \u043d\u0435\u00a0\u0441\u043b\u044b\u0448\u043d\u043e \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0439 \u044d\u0442\u043e\u0433\u043e \u00ab\u0448\u0443\u043c\u0430\u00bb.<\/p>\n<p>\u0412\u043d\u043e\u0432\u044c \u0442\u0435\u043c \u0436\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043b \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u043d\u044b\u0439 \u0441\u043f\u0435\u043a\u0442\u0440:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fdc\/29f\/b56\/fdc29fb56cf419193c02e3b0f7d1e22a.png\" alt=\"\u0421\u043f\u0430\u0434 \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u044b \u043f\u043e\u0441\u043b\u0435 20 \u043a\u0413\u0446 \u043e\u0431\u0443\u0441\u043b\u043e\u0432\u043b\u0435\u043d \u0432\u0445\u043e\u0434\u043d\u044b\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u043c \u0437\u0432\u0443\u043a\u043e\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u0438 \u0444\u0435\u0440\u0440\u0438\u0442\u043e\u0432\u044b\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u043c \u043d\u0430 \u0430\u0443\u0434\u0438\u043e\u043a\u0430\u0431\u0435\u043b\u0435.\" title=\"\u0421\u043f\u0430\u0434 \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u044b \u043f\u043e\u0441\u043b\u0435 20 \u043a\u0413\u0446 \u043e\u0431\u0443\u0441\u043b\u043e\u0432\u043b\u0435\u043d \u0432\u0445\u043e\u0434\u043d\u044b\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u043c \u0437\u0432\u0443\u043a\u043e\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u0438 \u0444\u0435\u0440\u0440\u0438\u0442\u043e\u0432\u044b\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u043c \u043d\u0430 \u0430\u0443\u0434\u0438\u043e\u043a\u0430\u0431\u0435\u043b\u0435.\" width=\"2369\" height=\"592\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fdc\/29f\/b56\/fdc29fb56cf419193c02e3b0f7d1e22a.png\"\/><\/p>\n<div><figcaption>\u0421\u043f\u0430\u0434 \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u044b \u043f\u043e\u0441\u043b\u0435 20 \u043a\u0413\u0446 \u043e\u0431\u0443\u0441\u043b\u043e\u0432\u043b\u0435\u043d \u0432\u0445\u043e\u0434\u043d\u044b\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u043c \u0437\u0432\u0443\u043a\u043e\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u0438 \u0444\u0435\u0440\u0440\u0438\u0442\u043e\u0432\u044b\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u043c \u043d\u0430 \u0430\u0443\u0434\u0438\u043e\u043a\u0430\u0431\u0435\u043b\u0435.<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u043f\u0435\u043a\u0442\u0440 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u0439, \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435, \u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u043c \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435. \u0422\u0430\u043a\u043e\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043b\u0438\u0436\u0435 \u043a \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u043c\u0443 \u0431\u0435\u043b\u043e\u043c\u0443 \u0448\u0443\u043c\u0443, \u0438 \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0432\u0435\u0437\u0434\u0435, \u0433\u0434\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u0430\u044f \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u0441\u043f\u0435\u043a\u0442\u0440\u0430.<\/p>\n<p>\u0414\u043e\u0441\u0442\u043e\u0438\u043d\u0441\u0442\u0432\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e \u2014 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043f\u043e\u0447\u0442\u0438 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0431\u0435\u043b\u044b\u0439 \u0448\u0443\u043c, \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0435 \u044f\u0434\u0440\u043e \u0438\u043b\u0438 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0438 \u0441\u0445\u0435\u043c\u044b. \u041e\u0434\u043d\u0430\u043a\u043e \u0442\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0432\u0435\u0441\u044c \u043f\u043e\u0440\u0442 GPIO, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0448\u043b\u0451\u043c \u0434\u0430\u043d\u043d\u044b\u0435. \u0414\u0440\u0443\u0433\u0438\u0435 \u0432\u044b\u0432\u043e\u0434\u044b \u0442\u043e\u0433\u043e \u0436\u0435 \u043f\u043e\u0440\u0442\u0430 \u043d\u0435\u043b\u044c\u0437\u044f \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043d\u0430 \u0432\u044b\u0445\u043e\u0434 \u0438 \u00ab\u0432\u0440\u0443\u0447\u043d\u0443\u044e\u00bb \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0430 \u043d\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u044b. \u041e\u0434\u043d\u0430\u043a\u043e \u0438\u0445 \u0432\u0441\u0451 \u0435\u0449\u0451 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0435 \u0432\u0445\u043e\u0434\u044b, \u0432\u0445\u043e\u0434\u044b \u0410\u0426\u041f \u0438\u043b\u0438 \u0434\u043b\u044f SPI\/UART\/I2C\/etc.<\/p>\n<p>\u0417\u0430\u043c\u0435\u0442\u043a\u0430 \u043d\u0430 \u043f\u043e\u043b\u044f\u0445: \u0435\u0441\u043b\u0438 \u0432 \u043f\u043e\u043b\u0438\u043d\u043e\u043c\u0435 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0431\u0438\u0442 (\u0441 \u043c\u043b\u0430\u0434\u0448\u0438\u043c \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043d\u0430\u0434\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0441\u043b\u0435 \u043c\u043b\u0430\u0434\u0448\u0435\u0433\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c), \u0442\u043e \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0432 <code>CRC-&gt;INIT<\/code> \u0434\u0430\u043d\u043d\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0431\u0435\u0433\u0430\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u043e\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u043f\u043e \u043a\u0440\u0443\u0433\u0443! \u041d\u0435 \u0437\u043d\u0430\u044e, \u0437\u0430\u0447\u0435\u043c \u0442\u0430\u043a\u043e\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f, \u043d\u043e \u0442\u0435\u0441\u0442\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438, \u0447\u0442\u043e \u043e\u043d\u043e \u0442\u0430\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<h3>\u0421\u043f\u043e\u0441\u043e\u0431 \u21163 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0410\u0426\u041f<\/h3>\n<p>\u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435 STM32 \u0438\u043c\u0435\u044e\u0442 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u0438\u043d \u0410\u0426\u041f. \u0415\u0441\u043b\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043c\u0430\u043b\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0440\u044f\u0434\u043a\u0438 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0451\u043c\u043a\u043e\u0441\u0442\u0438 \u044d\u0442\u043e\u0433\u043e \u0410\u0426\u041f \u0438 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u043c\u0435\u0440\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043a\u0430\u043d\u0430\u043b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u043d\u044b\u0439 \u0434\u0430\u0442\u0447\u0438\u043a), \u0442\u043e \u043c\u043b\u0430\u0434\u0448\u0438\u0439 \u0431\u0438\u0442 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u00ab\u0434\u0440\u043e\u0436\u0430\u0442\u044c\u00bb, \u0442\u043e \u0435\u0441\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u0442\u043e \u043d\u0443\u043b\u0451\u043c, \u0442\u043e \u0435\u0434\u0438\u043d\u0438\u0446\u0435\u0439. \u0415\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u0410\u0426\u041f \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043e\u0442 \u0442\u0430\u0439\u043c\u0435\u0440\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0435\u0433\u043e \u043d\u0430 \u043f\u043e\u0434\u0430\u0447\u0443 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0443 DMA, \u0442\u043e \u043c\u043e\u0436\u043d\u043e, \u043a\u0430\u043a \u0438 \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u0435, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 ODR \u043a\u0430\u043a\u043e\u0433\u043e-\u043b\u0438\u0431\u043e \u043f\u043e\u0440\u0442\u0430 GPIO, \u0438 \u043d\u0430 \u043d\u0443\u043b\u0435\u0432\u043e\u043c \u0432\u044b\u0432\u043e\u0434\u0435 \u043f\u043e\u0440\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b.<\/p>\n<p>\u0421\u0440\u0430\u0437\u0443 \u0445\u043e\u0447\u0443 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0441 \u0410\u0426\u041f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0438. \u042f \u0437\u0430\u043c\u0435\u0442\u0438\u043b \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0410\u0426\u041f \u0432 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u0445 \u0441\u0435\u0440\u0438\u0438 F0 \u0438 F3. \u0412 \u043a\u0430\u043a\u043e\u043c-\u043d\u0438\u0431\u0443\u0434\u044c H7 \u0432\u043e\u043e\u0431\u0449\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0442\u0440\u0435\u0442\u044c\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0440\u0430\u0437\u0443 \u043e\u0433\u043e\u0432\u043e\u0440\u044e\u0441\u044c, \u0447\u0442\u043e \u0410\u0426\u041f \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d \u043d\u0430 \u043e\u0434\u043d\u043e\u043a\u0440\u0430\u0442\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e \u0436\u0435 \u043a\u0430\u043d\u0430\u043b\u0430 \u043f\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0443 \u043e\u0442 \u0442\u0430\u0439\u043c\u0435\u0440\u0430 \u0438 \u043f\u043e\u0434\u0430\u0447\u0443 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0443 DMA \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0438. \u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430\u0445 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432.<\/p>\n<p>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435:<\/p>\n<pre><code class=\"cpp\">void init_clocks() { RCC-&gt;AHBENR |= RCC_AHBENR_GPIOAEN | RCC_AHBENR_DMA1EN | RCC_AHBENR_ADC12EN; RCC-&gt;APB1ENR |= RCC_APB1ENR_TIM2EN; }<\/code><\/pre>\n<p>\u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u0410\u0426\u041f \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c TIM2. \u0412\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b \u0442\u0435\u043f\u0435\u0440\u044c \u0431\u0443\u0434\u0435\u043c \u043d\u0430 \u043d\u043e\u0436\u043a\u0443 A0:<\/p>\n<pre><code class=\"cpp\">\/\/\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0432\u044b\u0432\u043e\u0434\u0430 PA0 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434 GPIOA-&gt;MODER &amp;= ~GPIO_MODER_MODER0; GPIOA-&gt;MODER |= GPIO_MODER_MODER0_0;<\/code><\/pre>\n<p>\u0422\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u0434\u043b\u044f \u0426\u0410\u041f\u0430 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435, \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c TIM2:<\/p>\n<pre><code class=\"cpp\">\/\/\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 TIM2: TRGO \u043f\u043e \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430 TIM2-&gt;CR2 = TIM_CR2_MMS_1; TIM2-&gt;ARR = 72; TIM2-&gt;PSC = 0;<\/code><\/pre>\n<p>\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 1 \u041c\u0413\u0446.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0430\u043c\u0430\u044f \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c: \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0410\u0426\u041f. \u041e\u043d \u0432 STM32F303 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0441 DMA \u2014 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b DMA \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0432 \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 (circular mode), \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u044d\u0442\u043e\u0442 \u0440\u0435\u0436\u0438\u043c \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c <em>\u0438 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0410\u0426\u041f, \u0438 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043a\u0430\u043d\u0430\u043b\u0430 DMA! <\/em><code>ADC_CFGR_DMACFG<\/code> \u0437\u0430\u0434\u0430\u0451\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u0432 circular mode.<\/p>\n<pre><code class=\"cpp\">\/\/\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0410\u0426\u041f: DMA \u0432 \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 12 \u0431\u0438\u0442, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \/\/\u043f\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0443 \u043e\u0442 TIM2_TRGO, \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u043d\u044b\u0439 \u0434\u0430\u0442\u0447\u0438\u043a (16-\u044b\u0439 \u043a\u0430\u043d\u0430\u043b). \/\/Discontinuous mode \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 DMA. \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043e\u0434\u043d\u0438\u043c \u043a\u0430\u043d\u0430\u043b\u043e\u043c (\u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u043d\u044b\u0439 \u0434\u0430\u0442\u0447\u0438\u043a). \/\/\u0417\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0443 \u043e\u0442 TIM2 ADC1-&gt;CFGR = ADC_CFGR_DMACFG | ADC_CFGR_DMAEN | ADC_CFGR_DISCEN | ADC_CFGR_EXTEN_0 |         ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0 | ADC_CFGR_DISCEN; ADC1-&gt;SQR1 = ADC_SQR1_SQ1_4; ADC1_2_COMMON-&gt;CCR = ADC12_CCR_TSEN | ADC12_CCR_CKMODE_1;<\/code><\/pre>\n<p><code>ADC_CFGR_DISCEN<\/code> \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0440\u0435\u0436\u0438\u043c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0433\u0440\u0443\u043f\u043f\u044b \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u043f\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0443 (\u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u0438\u0433\u043d\u0430\u043b \u043e\u0442 \u0442\u0430\u0439\u043c\u0435\u0440\u0430, \u0438 \u043a\u0430\u043d\u0430\u043b \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u0438\u043d). <code>ADC_CFGR_EXTEN_0<\/code> \u0437\u0430\u0434\u0430\u0451\u0442 \u043d\u0430\u0447\u0430\u043b\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e \u043f\u0435\u0440\u0435\u0434\u043d\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443 \u0441\u0438\u0433\u043d\u0430\u043b\u0430. \u0411\u0438\u0442\u044b <code>ADC_CFGR_EXTSEL<\/code> \u0437\u0430\u0434\u0430\u044e\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f TIM2_TRGO:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ded\/9e1\/efb\/ded9e1efb6a3d742bddfb94621d770d2.png\" width=\"1720\" height=\"737\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ded\/9e1\/efb\/ded9e1efb6a3d742bddfb94621d770d2.png\"\/><\/figure>\n<p><code>ADC_SQR1_SQ1_4<\/code> \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 16-\u044b\u0439 \u043a\u0430\u043d\u0430\u043b (\u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u043d\u044b\u0439 \u0434\u0430\u0442\u0447\u0438\u043a) \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 (regular sequence). \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u0438\u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0432\u043d\u0430 \u0435\u0434\u0438\u043d\u0438\u0446\u0435, \u0442\u043e \u0435\u0441\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0443 \u043e\u0442 \u0442\u0430\u0439\u043c\u0435\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043c, \u043e\u0431\u0449\u0438\u043c \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0438 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0410\u0426\u041f (<code>ADC1_2_COMMON<\/code>). \u0417\u0434\u0435\u0441\u044c \u043d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442 \u0434\u0432\u0435 \u0432\u0435\u0449\u0438 \u2014 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u043d\u043e\u0433\u043e \u0434\u0430\u0442\u0447\u0438\u043a\u0430 (<code>ADC12_CCR_TSEN<\/code>) \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0410\u0426\u041f (<code>ADC12_CCR_CKMODE_1<\/code> \u0437\u0430\u0434\u0430\u0451\u0442 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439, \u0440\u0430\u0432\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0435, \u0442.\u0435. \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u0410\u0426\u041f). \u0412\u043e\u043e\u0431\u0449\u0435, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0443, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0438 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0410\u0426\u041f, \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0432 \u0438\u0445 \u0432 \u00ab\u043e\u0434\u0438\u043d\u00bb \u0410\u0426\u041f \u0441 \u0432\u0434\u0432\u043e\u0435 \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u0441\u044d\u043c\u043f\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043d\u043e \u043c\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c&#8230;<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0410\u0426\u041f \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c DMA. \u0421\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a\u043e\u0439 \u043a\u0430\u043d\u0430\u043b \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0410\u0426\u041f:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e82\/1f4\/772\/e821f47729e23359db14849ab931b91d.png\" width=\"1656\" height=\"229\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e82\/1f4\/772\/e821f47729e23359db14849ab931b91d.png\"\/><\/figure>\n<p>\u0418 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u043d\u0430 \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0443 \u0438\u0437 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0410\u0426\u041f \u0432\u043e \u0432\u0441\u0451 \u0442\u043e\u0442 \u0436\u0435 <code>GPIOA-&gt;ODR<\/code>:<\/p>\n<pre><code class=\"cpp\">\/\/\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 DMA: \u043f\u043e 16 \u0431\u0438\u0442, \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0440\u0435\u0436\u0438\u043c, \u0431\u0435\u0437 \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0430 \u0430\u0434\u0440\u0435\u0441\u043e\u0432, \u0438\u0437 ADC1-&gt;DR \u0432 GPIOA-&gt;ODR DMA1_Channel1-&gt;CCR = DMA_CCR_PSIZE_0 | DMA_CCR_MSIZE_0 | DMA_CCR_CIRC; DMA1_Channel1-&gt;CPAR = (uint32_t)&amp;(ADC1-&gt;DR); DMA1_Channel1-&gt;CMAR = (uint32_t)&amp;(GPIOA-&gt;ODR); DMA1_Channel1-&gt;CNDTR = 1;<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u2014 \u0432\u0441\u0451 \u044d\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 DMA, \u043f\u043e\u0442\u043e\u043c \u0410\u0426\u041f (\u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0430\u043c \u0410\u0426\u041f \u0438 \u043f\u043e\u0442\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f), \u0430 \u043f\u043e\u0442\u043e\u043c \u0443\u0436\u0435 \u0442\u0430\u0439\u043c\u0435\u0440!<\/p>\n<pre><code class=\"cpp\">\/\/\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c DMA DMA1_Channel1-&gt;CCR |= DMA_CCR_EN; \/\/\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0410\u0426\u041f ADC1-&gt;CR |= ADC_CR_ADEN; ADC1-&gt;CR |= ADC_CR_ADSTART; \/\/\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0442\u0430\u0439\u043c\u0435\u0440 TIM2-&gt;CR1 |= TIM_CR1_CEN;<\/code><\/pre>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0448\u0443\u043c, \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0436\u0435, \u043a\u0430\u043a \u0438 \u0432 \u0441\u043f\u043e\u0441\u043e\u0431\u0435 \u0441 CRC. \u0421\u043f\u0435\u043a\u0442\u0440 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u0432 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0448\u0443\u043c \u0434\u0430\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u043c, \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435, \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u043f\u043e\u043b\u043e\u0441\u0435. \u042f \u043d\u0435 \u0441\u0438\u043b\u0451\u043d \u0432 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430\u0445 \u0438 \u0442\u0435\u0440\u0432\u0435\u0440\u0430\u0445, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0410\u041a\u0424 \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0443 \u0438 \u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c, \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0438 \u043f\u043e\u0442\u043e\u043a \u0431\u0438\u0442\u043e\u0432 \u0432 \u043c\u043b\u0430\u0434\u0448\u0435\u043c \u0440\u0430\u0437\u0440\u044f\u0434\u0435 \u0410\u0426\u041f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u0438 \u043d\u0435\u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439, \u043d\u0435 \u0445\u043e\u0447\u0443. \u00ab\u041d\u0430 \u0441\u043b\u0443\u0445\u00bb (\u0438 \u043d\u0430 \u0441\u043f\u0435\u043a\u0442\u0440) \u043e\u043d\u043e \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u0448\u0443\u043c. \u0414\u0430\u043b\u044c\u0448\u0435 \u0443\u0436\u0435 \u0440\u0435\u0448\u0430\u0439\u0442\u0435 \u0441\u0430\u043c\u0438, \u043f\u043e\u0434\u043e\u0439\u0434\u0451\u0442 \u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431.<\/p>\n<p>\u0414\u043e\u0441\u0442\u043e\u0438\u043d\u0441\u0442\u0432\u0430 \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438 \u0442\u0435 \u0436\u0435, \u0447\u0442\u043e \u0438 \u0432 \u0441\u043f\u043e\u0441\u043e\u0431\u0435 \u0441 CRC. \u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u043c\u0435\u0440\u0438\u0442\u044c \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0442\u043e \u043b\u0443\u0447\u0448\u0435 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0448\u0443\u043c\u0430 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0439 \u043a\u0430\u043d\u0430\u043b \u0410\u0426\u041f. \u042f \u0432\u044b\u0431\u0440\u0430\u043b \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u043d\u044b\u0439 \u0434\u0430\u0442\u0447\u0438\u043a, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u0440\u043e \u043d\u0435\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u044b\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0430 \u0437\u0430\u0440\u044f\u0434\u043a\u0438 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0451\u043c\u043a\u043e\u0441\u0442\u0438 \u0410\u0426\u041f (\u0447\u0442\u043e \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0441\u0438\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u0448\u0443\u043c\u043b\u0451\u043d\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0442\u043e\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438 \u043d\u0435\u0441\u043e\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438&#8230;).<\/p>\n<h3>\u0421\u043f\u043e\u0441\u043e\u0431 \u21164 \u2014 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u043e\u0442 \u0442\u0430\u0439\u043c\u0435\u0440\u0430, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u0420\u0421\u041b\u041e\u0421<\/h3>\n<p>\u0414\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u0441\u0435\u0440\u0438\u0438 L0 \u0438 G0, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 DMA \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043a\u043b\u0430\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 GPIO. \u0421\u043f\u043e\u0441\u043e\u0431 \u0434\u043e \u0443\u0436\u0430\u0441\u0430 \u043f\u0440\u043e\u0441\u0442: \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043e\u0442 \u0442\u0430\u0439\u043c\u0435\u0440\u0430, \u0438 \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u043e\u0434\u0438\u043d \u0442\u0430\u043a\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0420\u0421\u041b\u041e\u0421. \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043f\u0438\u0448\u0435\u043c \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 BSRR, \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0441\u0438\u0433\u043d\u0430\u043b \u043d\u0430 \u0432\u044b\u0432\u043e\u0434\u0435 \u0432 0 \u0438\u043b\u0438 \u0432 1 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u043c\u043b\u0430\u0434\u0448\u0435\u0433\u043e \u0431\u0438\u0442\u0430 \u043d\u0430\u0448\u0435\u0433\u043e \u0420\u0421\u041b\u041e\u0421.<\/p>\n<p>\u042d\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0432\u00a0\u044d\u0442\u043e\u0439 \u043f\u043e\u0434\u0431\u043e\u0440\u043a\u0435 \u00ab\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439\u00bb \u0441\u043f\u043e\u0441\u043e\u0431, \u0442.\u0435. \u043e\u043d \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0433\u043e \u0443\u0447\u0430\u0441\u0442\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430 \u043f\u0440\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0430.<\/p>\n<p>\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435:<\/p>\n<pre><code class=\"cpp\">void init_clocks() { RCC-&gt;AHBENR |= RCC_AHBENR_GPIOAEN; RCC-&gt;APB1ENR |= RCC_APB1ENR_TIM2EN; }<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u043c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438 \u043c\u0430\u0441\u043a\u0443 \u0431\u0438\u0442\u043e\u0432-\u043e\u0442\u0432\u043e\u0434\u043e\u0432 \u0420\u0421\u041b\u041e\u0421:<\/p>\n<pre><code class=\"cpp\">\/\/\u043c\u0430\u0441\u043a\u0430 \u0431\u0438\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0442\u0432\u043e\u0434\u0430\u043c\u0438 \u0420\u0421\u041b\u041e\u0421 \/\/https:\/\/docs.amd.com\/v\/u\/en-US\/xapp052 \u0434\u043b\u044f 32 \u0431\u0438\u0442 \/\/\u0431\u0438\u0442\u044b \u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0420\u0421\u041b\u041e\u0421 \u0441\u0434\u0432\u0438\u0433\u0430\u0435\u0442\u0441\u044f \/\/\u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 #define LFSR_MASK (1 | (1 &lt;&lt; 10) | (1 &lt;&lt; 30) | (1 &lt;&lt; 31))  \/\/\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0445\u0440\u0430\u043d\u0438\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0420\u0421\u041b\u041e\u0421 uint32_t lfsr;  \/\/\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0445\u0440\u0430\u043d\u0438\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \/\/\u043c\u043b\u0430\u0434\u0448\u0435\u0433\u043e \u0431\u0438\u0442\u0430 \u0420\u0421\u041b\u041e\u0421 \u0434\u043e \u0441\u0434\u0432\u0438\u0433\u0430 uint32_t feedback;<\/code><\/pre>\n<p>\u041e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f. \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0431\u0435\u0440\u0451\u043c \u0438\u0437 startup-\u0444\u0430\u0439\u043b\u0430:<\/p>\n<pre><code class=\"cpp\">\/\/\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f TIM2 void TIM2_IRQHandler() { \/\/\u0435\u0441\u043b\u0438 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0444\u043b\u0430\u0433 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u043e \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430 if(TIM2-&gt;SR &amp; TIM_SR_UIF) { \/\/\u0442\u043e \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u043c \u0444\u043b\u0430\u0433 TIM2-&gt;SR &amp;= ~TIM_SR_UIF;  \/\/\u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u043c\u043b\u0430\u0434\u0448\u0438\u0439 \u0431\u0438\u0442 feedback = lfsr &amp; 1;  \/\/\u0441\u0434\u0432\u0438\u0433 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0420\u0421\u041b\u041e\u0421 lfsr &gt;&gt;= 1;  \/\/\u0435\u0441\u043b\u0438 \u043c\u043b\u0430\u0434\u0448\u0438\u0439 \u0431\u0438\u0442 \u0440\u0430\u0432\u0435\u043d \u0435\u0434\u0438\u043d\u0438\u0446\u0435 if(feedback) { \/\/XOR \u0441 \u043c\u0430\u0441\u043a\u043e\u0439 \u0431\u0438\u0442\u043e\u0432 \u043e\u0442\u0432\u043e\u0434\u043e\u0432 \/\/\u0432\u0441\u0435 \u0431\u0438\u0442\u044b, \u043a\u0440\u043e\u043c\u0435 \u0431\u0438\u0442\u043e\u0432 \u043e\u0442\u0432\u043e\u0434\u043e\u0432, \/\/\u043d\u0435 \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f. \/\/\u0411\u0438\u0442\u044b \u043e\u0442\u0432\u043e\u0434\u043e\u0432 \"\u043f\u0435\u0440\u0435\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f\" lfsr ^= LFSR_MASK; }  \/\/\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 BSRR \u0431\u0438\u0442 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043c\u043b\u0430\u0434\u0448\u0435\u0433\u043e \u0431\u0438\u0442\u0430 \u0420\u0421\u041b\u041e\u0421 \/\/*(volatile uint32_t*)... \u043f\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432 \u0432\u0435\u0440\u0441\u0438\u0438 CMSIS \u043f\u043e\u0434 \u044d\u0442\u043e\u0442 \/\/\u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 BSRR \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d \u043a\u0430\u043a \u0434\u0432\u0430 16-\u0431\u0438\u0442\u043d\u044b\u0445 \u043f\u043e\u043b\u044f, \u0432 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \/\/\u043a\u0430\u043a \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u043d\u0435\u043c\u0443 \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u043a\u0430\u043a \u043a 32-\u0431\u0438\u0442\u043d\u043e\u043c\u0443 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0443.         \/\/\u043f\u0438\u0448\u0435\u043c \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 PA0 *(volatile uint32_t*)&amp;(GPIOA-&gt;BSRRL) = feedback ? 1 : (1 &lt;&lt; 16); } }<\/code><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0448\u0430\u0433\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0420\u0421\u041b\u041e\u0421 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0442\u0430\u043a\u0442\u043e\u0432 (\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0447\u0438\u0441\u043b\u0430 \u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0431\u0438\u0442\u043e\u0432-\u043e\u0442\u0432\u043e\u0434\u043e\u0432).<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 main \u0432\u044b\u0432\u043e\u0434 PA0:<\/p>\n<pre><code class=\"cpp\">\/\/\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0432\u044b\u0432\u043e\u0434\u0430 PA0 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434 GPIOA-&gt;MODER &amp;= ~GPIO_MODER_MODER0; GPIOA-&gt;MODER |= GPIO_MODER_MODER0_0;<\/code><\/pre>\n<p>\u0418 \u0442\u0430\u0439\u043c\u0435\u0440:<\/p>\n<pre><code class=\"cpp\">\/\/\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 TIM2: \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430 TIM2-&gt;DIER = TIM_DIER_UIE; TIM2-&gt;ARR = 72 - 1; TIM2-&gt;PSC = 10 - 1;<\/code><\/pre>\n<p>\u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u0435\u043c \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435\u043d\u0443\u043b\u0435\u0432\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0420\u0421\u041b\u041e\u0421, \u0438\u043d\u0430\u0447\u0435 \u0420\u0421\u041b\u041e\u0421 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0432 \u043d\u0443\u043b\u0435\u0432\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043d\u0430\u0432\u0435\u0447\u043d\u043e:<\/p>\n<pre><code class=\"cpp\">\/\/\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043d\u0435\u043d\u0443\u043b\u0435\u0432\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u0445\u0440\u0430\u043d\u044f\u0449\u0443\u044e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0420\u0421\u041b\u041e\u0421 lfsr = 222;<\/code><\/pre>\n<p>\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0442\u0430\u0439\u043c\u0435\u0440:<\/p>\n<pre><code class=\"cpp\">\/\/\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 NVIC_EnableIRQ(TIM2_IRQn); \/\/\u0437\u0430\u043f\u0443\u0441\u043a \u0442\u0430\u0439\u043c\u0435\u0440\u0430 TIM2-&gt;CR1 |= TIM_CR1_CEN;<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 720 \u043a\u0413\u0446. \u042d\u0442\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u043e (\u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u043e 100 \u0442\u0430\u043a\u0442\u043e\u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430), \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u043d\u0430 \u0442\u0430\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u043f\u0440\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0435 \u043a \u0444\u043b\u044d\u0448-\u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0443\u0436\u043d\u0430 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0430 \u0432 \u0434\u0432\u0430 \u0442\u0430\u043a\u0442\u0430.<\/p>\n<p>\u0428\u0443\u043c \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u043f\u044f\u0442\u044c \u043d\u0435\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439, \u0435\u0441\u043b\u0438 \u0441\u0442\u0440\u043e\u0433\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c. \u041d\u043e \u0435\u0433\u043e \u043f\u0435\u0440\u0438\u043e\u0434 \u043e\u043f\u044f\u0442\u044c \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 2<sup>32<\/sup>, \u0442\u043e \u0435\u0441\u0442\u044c \u0441\u043f\u0435\u043a\u0442\u0440 \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u0439.<\/p>\n<p>\u0414\u043e\u0441\u0442\u043e\u0438\u043d\u0441\u0442\u0432\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u044b \u043f\u0438\u0448\u0435\u043c \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0442.\u0435. \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u044b\u0432\u043e\u0434\u044b \u043f\u043e\u0440\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0443\u0433\u043e\u0434\u043d\u043e. \u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a \u0436\u0435 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u0435\u0442\u043e\u0434 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439. \u041d\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u044f\u0434\u0440\u043e \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442 \u0432 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0438, \u0447\u0442\u043e \u043d\u0435 \u0435\u0441\u0442\u044c \u0445\u043e\u0440\u043e\u0448\u043e. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0447\u0435\u043c \u043d\u0438\u0436\u0435 \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f, \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432 \u0441\u043f\u0435\u043a\u0442\u0440\u0435 \u0448\u0443\u043c\u0430 \u043d\u0435\u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0435\u0439.<\/p>\n<h3>\u0421\u043f\u043e\u0441\u043e\u0431 \u21165 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b<\/h3>\n<p>\u0412 \u00ab\u0441\u0442\u0430\u0440\u0448\u0438\u0445\u00bb \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430\u0445 STM32 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b (RNG, random number generator), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0441\u0442\u0440\u0430\u0448\u043d\u044b\u0435 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0442\u0435\u0441\u0442\u044b, \u0442.\u0435. \u0447\u0438\u0441\u043b\u0430 \u0443 \u043d\u0435\u0433\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435. \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0441\u0451 \u0442\u0443 \u0436\u0435 \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u2014 \u043d\u0430\u0442\u0440\u0430\u0432\u0438\u0442\u044c DMA \u043d\u0430 \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 RNG \u0432 \u0442\u043e\u0442 \u0436\u0435 <code>GPIOA-&gt;ODR<\/code>. \u0413\u043b\u0430\u0432\u043d\u043e\u0435, \u0447\u0442\u043e\u0431\u044b RNG \u0443\u0441\u043f\u0435\u0432\u0430\u043b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0447\u0438\u0441\u043b\u0430.<\/p>\n<p>\u0418\u0437 reference manual&#8217;\u0430 \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c, \u0441 \u043a\u0430\u043a\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e RNG \u0432\u044b\u0434\u0430\u0451\u0442 \u043d\u043e\u0432\u044b\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5c7\/302\/3cc\/5c73023cc98245f749bcaa8b1b6713f6.png\" alt=\"\u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e 213 \u0442\u0430\u043a\u0442\u043e\u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u043d\u0430 4 \u0447\u0438\u0441\u043b\u0430.\" title=\"\u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e 213 \u0442\u0430\u043a\u0442\u043e\u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u043d\u0430 4 \u0447\u0438\u0441\u043b\u0430.\" width=\"1296\" height=\"163\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5c7\/302\/3cc\/5c73023cc98245f749bcaa8b1b6713f6.png\"\/><\/p>\n<div><figcaption>\u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e 213 \u0442\u0430\u043a\u0442\u043e\u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u043d\u0430 4 \u0447\u0438\u0441\u043b\u0430.<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 STM32H743 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u0430, \u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043d\u0430 64 \u041c\u0413\u0446. \u0422\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f, \u0447\u0442\u043e RNG \u0432\u044b\u0434\u0430\u0451\u0442 \u043d\u043e\u0432\u044b\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 1.2 \u041c\u0413\u0446.<\/p>\n<p>\u0423 RNG \u0435\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0442\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043e\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a\u043e\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/51a\/c7c\/54c\/51ac7c54c5d3a2e03976aaf6e6c494db.png\" width=\"1533\" height=\"253\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/51a\/c7c\/54c\/51ac7c54c5d3a2e03976aaf6e6c494db.png\"\/><\/figure>\n<p>\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u044b\u0431\u0440\u0430\u043d \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043d\u0430 48 \u041c\u0413\u0446. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438\u043b\u0438 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c\u0441\u044f \u043d\u0430 \u043d\u0451\u043c.<\/p>\n<p>\u0412 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0438 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u044d\u0442\u043e\u0433\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430:<\/p>\n<pre><code class=\"cpp\">void init_clocks() { \/\/\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c HSI48, \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 48 \u041c\u0413\u0446, \u043e\u0442 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \/\/\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0442\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \/\/\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b RCC-&gt;CR |= RCC_CR_HSI48ON;  \/\/\u0436\u0434\u0451\u043c \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 HSI48 while(!(RCC-&gt;CR &amp; RCC_CR_HSI48RDY)) { asm(\"nop\"); }<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 RNG, DMA, \u043f\u043e\u0440\u0442\u0430 GPIO \u0438 \u0442\u0430\u0439\u043c\u0435\u0440\u0430:<\/p>\n<pre><code class=\"cpp\">    RCC-&gt;AHB1ENR |= RCC_AHB1ENR_DMA1EN;     RCC-&gt;AHB2ENR |= RCC_AHB2ENR_RNGEN;     RCC-&gt;AHB4ENR |= RCC_AHB4ENR_GPIOAEN;          RCC-&gt;APB1LENR |= RCC_APB1LENR_TIM6EN;<\/code><\/pre>\n<p>\u0414\u0435\u043b\u0430\u0435\u043c \u0441\u0431\u0440\u043e\u0441 RNG:<\/p>\n<pre><code class=\"cpp\">    \/\/\u0441\u0431\u0440\u043e\u0441 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b     RCC-&gt;AHB2RSTR |= RCC_AHB2RSTR_RNGRST;     RCC-&gt;AHB2RSTR &amp;= ~RCC_AHB2RSTR_RNGRST;<\/code><\/pre>\n<p>\u0418 \u0436\u0434\u0451\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a\u0442\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u043b\u043e\u0441\u044c:<\/p>\n<pre><code class=\"cpp\">\/\/\u0436\u0434\u0451\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a\u0442\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u0434\u043b\u044f \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438 \/\/\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u043b\u043e\u0441\u044c \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 asm(\"nop\"); asm(\"nop\"); asm(\"nop\"); }<\/code><\/pre>\n<p>\u0412 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 main, \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0443\u0431\u0435\u0440\u0451\u043c \u0432\u044b\u0437\u043e\u0432 <code>set_72MHz()<\/code>. <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432 \u043d\u0435\u0439 \u0436\u0435 \u0437\u0430\u0439\u043c\u0451\u043c\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u043e\u0439 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u0435\u0440\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b RNG \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0434\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435, \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b \u0435\u0433\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u0441\u0430\u043c\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u0435:<\/p>\n<pre><code class=\"cpp\">\/\/\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \/\/\u0437\u0430\u0440\u0430\u043d\u0435\u0435, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u0440\u0435\u043c\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \/\/\u043d\u0430\u0431\u043e\u0440\u0430 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0432\u044b\u0448\u0435, \u0447\u0435\u043c \u0432\u0440\u0435\u043c\u044f \/\/\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043d\u0430\u0431\u043e\u0440\u043e\u0432 RNG-&gt;CR |= RNG_CR_RNGEN;<\/code><\/pre>\n<p>\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043e\u0448\u0438\u0431\u043e\u043a \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u0435 \u0432 reference manual&#8217;\u0435:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e7a\/d1b\/823\/e7ad1b823a0f061bb5626fa5b2e6092e.png\" alt=\"\u0423 \u043d\u0430\u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f RNG \u0440\u0430\u0432\u043d\u0430 0.75 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b.\" title=\"\u0423 \u043d\u0430\u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f RNG \u0440\u0430\u0432\u043d\u0430 0.75 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b.\" width=\"1975\" height=\"159\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e7a\/d1b\/823\/e7ad1b823a0f061bb5626fa5b2e6092e.png\"\/><\/p>\n<div><figcaption>\u0423 \u043d\u0430\u0441 \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f RNG \u0440\u0430\u0432\u043d\u0430 0.75 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b.<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c PA0 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434, \u0430 TIM6 \u043d\u0430 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u0441\u043e\u0431\u044b\u0442\u0438\u044f TIM6_UP (\u0434\u043b\u044f \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043e\u043a DMA):<\/p>\n<pre><code class=\"cpp\">\/\/\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0432\u044b\u0432\u043e\u0434\u0430 PA0 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434 GPIOA-&gt;MODER &amp;= ~GPIO_MODER_MODER0; GPIOA-&gt;MODER |= GPIO_MODER_MODER0_0;  \/\/\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0442\u0430\u0439\u043c\u0435\u0440\u0430 \/\/\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 TRGO \u043f\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044e \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430 TIM6-&gt;CR2 |= TIM_CR2_MMS_1; TIM6-&gt;DIER = TIM_DIER_UDE; TIM6-&gt;ARR = 64 - 1; TIM6-&gt;PSC = 10 - 1;<\/code><\/pre>\n<p>\u0427\u0430\u0441\u0442\u043e\u0442\u0430 \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043e\u043a DMA \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u043d\u0430 640 \u043a\u0413\u0446, \u0447\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432\u0434\u0432\u043e\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b, \u0442.\u0435. RNG \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u043f\u0435\u0432\u0430\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0447\u0438\u0441\u043b\u0430.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c DMA. \u0412 \u0441\u0442\u0430\u0440\u0448\u0438\u0445 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430\u0445 STM32 \u043a\u0430\u043d\u0430\u043b\u044b DMA \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0442\u043e\u043a\u0430\u043c\u0438 (streams) \u0438 \u0438\u043c\u0435\u044e\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043c\u044b \u0434\u0435\u043b\u0430\u043b\u0438 \u043d\u0430 F303. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u0432\u043e\u0439\u043d\u0430\u044f \u0431\u0443\u0444\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u043d\u0430\u0432\u043e\u0440\u043e\u0442\u044b \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0430\u0434\u0440\u0435\u0441\u0430, \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0440\u0435\u0436\u0438\u043c:<\/p>\n<pre><code class=\"cpp\">\/\/\u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c DMA: \/\/\u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u043a\u0430\u043d\u0430\u043b, \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u0430\u0442\u044c \u043f\u043e 32 \u0431\u0438\u0442\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430, \/\/\u0438\u0437 \"\u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438\" \u0432 \"\u043f\u0430\u043c\u044f\u0442\u044c\", \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0440\u0435\u0436\u0438\u043c \u043f\u043e \u043e\u0434\u043d\u043e\u0439 \u043f\u043e\u0441\u044b\u043b\u043a\u0435, \u0431\u0435\u0437 \/\/\u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439, \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u0430\u0435\u043c \u0438\u0437 RNG-&gt;DR \u0432 GPIOA-&gt;ODR DMA1_Stream0-&gt;CR = DMA_SxCR_CIRC | DMA_SxCR_MSIZE_1 |         DMA_SxCR_PSIZE_1; DMA1_Stream0-&gt;PAR = (uint32_t)&amp;RNG-&gt;DR; DMA1_Stream0-&gt;M0AR = (uint32_t)&amp;GPIOA-&gt;ODR; DMA1_Stream0-&gt;NDTR = 1;<\/code><\/pre>\n<p>\u0420\u0435\u0433\u0438\u0441\u0442\u0440 <code>M0AR<\/code> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0430\u0434\u0440\u0435\u0441\u0430 \u00ab\u043f\u0430\u043c\u044f\u0442\u0438\u00bb. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0434\u0451\u0442 \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0430 \u0438\u0437 \u00ab\u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438\u00bb \u0432\u00a0\u00ab\u043f\u0430\u043c\u044f\u0442\u044c\u00bb.<\/p>\n<p>\u042d\u0442\u043e \u0435\u0449\u0451 \u043d\u0435 \u0432\u0441\u0451. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u044f \u0432\u044b\u0431\u0440\u0430\u043b \u043f\u0435\u0440\u0432\u044b\u0439 \u043a\u0430\u043d\u0430\u043b \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 DMA. \u0412 STM32H7 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u043a\u0430\u043d\u0430\u043b DMA \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e \u043a\u0430\u043a\u043e\u043c\u0443 \u0441\u0438\u0433\u043d\u0430\u043b\u0443. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u044f DMAMUX.<\/p>\n<p>\u0422\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 DMAMUX \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f DMA.<\/p>\n<p>\u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0443 \u043d\u0430\u0441 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b \u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c\u0443 \u043a\u0430\u043d\u0430\u043b\u0443 DMA \u2014 \u0442\u043e \u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0442\u043e\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0435. \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c reference manual \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a55\/42d\/a72\/a5542da72d99bd47e8b06867ab16ddf0.png\" width=\"1517\" height=\"527\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a55\/42d\/a72\/a5542da72d99bd47e8b06867ab16ddf0.png\"\/><\/figure>\n<p>\u041d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0432 \u043f\u043e\u043b\u0435 <code>DMAREQ_ID<\/code>. \u0421\u043c\u043e\u0442\u0440\u0438\u043c \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/11b\/744\/1ff\/11b7441fff5b8761efd63de3e94fde5d.png\" alt=\"TIM6_UP \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u043e\u043c\u0435\u0440\u0443 69.\" title=\"TIM6_UP \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u043e\u043c\u0435\u0440\u0443 69.\" width=\"1189\" height=\"1353\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/11b\/744\/1ff\/11b7441fff5b8761efd63de3e94fde5d.png\"\/><\/p>\n<div><figcaption>TIM6_UP \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u043e\u043c\u0435\u0440\u0443 69.<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0437\u043d\u0430\u0435\u043c \u043d\u043e\u043c\u0435\u0440 \u0441\u0438\u0433\u043d\u0430\u043b\u0430, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443:<\/p>\n<pre><code class=\"cpp\">\/\/\u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c DMAMUX: \/\/\u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u043a\u0430\u043d\u0430\u043b \u043f\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0443 \u043e\u0442 TIM6 \/\/69 - TIM6_UP DMAMUX1_Channel0-&gt;CCR = 69;<\/code><\/pre>\n<p>\u0412\u0441\u0451 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043e. \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u0430\u0439\u043c\u0435\u0440 \u0438 \u043a\u0430\u043d\u0430\u043b DMA:<\/p>\n<pre><code class=\"cpp\">\/\/\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c DMA DMA1_Stream0-&gt;CR |= DMA_SxCR_EN; \/\/\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0442\u0430\u0439\u043c\u0435\u0440 TIM6-&gt;CR1 |= TIM_CR1_CEN;<\/code><\/pre>\n<p>\u041d\u0430 \u0432\u044b\u0432\u043e\u0434\u0435 PA0 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0448\u0443\u043c. \u042d\u0442\u043e \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0434\u0430\u043d\u043d\u044b\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u043c (true) RNG. \u0421\u043f\u0435\u043a\u0442\u0440 \u0442\u043e\u0442 \u0436\u0435, \u0447\u0442\u043e \u0438 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c, \u0442\u0440\u0435\u0442\u044c\u0435\u043c \u0438 \u0447\u0435\u0442\u0432\u0451\u0440\u0442\u043e\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u0445.<\/p>\n<p>\u0414\u043e\u0441\u0442\u043e\u0438\u043d\u0441\u0442\u0432\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0432 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b, \u0430 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043d\u0430 \u0432\u044b\u0432\u043e\u0434\u0435. \u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438 \u0432\u0441\u0451 \u0442\u0435 \u0436\u0435, \u0447\u0442\u043e \u0438 \u0443 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c DMA: \u0432\u0435\u0441\u044c \u043f\u043e\u0440\u0442 GPIO (\u0442\u043e\u0447\u043d\u0435\u0435, \u0432\u0441\u0435 \u0432\u044b\u0432\u043e\u0434\u044b \u043f\u043e\u0440\u0442\u0430, \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 GPIO) \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b. \u0415\u0449\u0451 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0430\u043c\u043e\u0433\u043e RNG \u2014 \u0432\u0434\u0440\u0443\u0433 \u043e\u043d \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0447\u0435\u0433\u043e-\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u0432\u0430\u0436\u043d\u043e\u0433\u043e \u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0435.<\/p>\n<h3>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>\u0415\u0441\u043b\u0438 \u0447\u0435\u0441\u0442\u043d\u043e, \u044f \u043d\u0438 \u0440\u0430\u0437\u0443 \u043d\u0435 \u0432\u0438\u0434\u0435\u043b \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u0431\u044b \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u043d\u0430 \u0432\u044b\u0432\u043e\u0434\u0430\u0445 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430. \u041e\u0434\u043d\u0430\u043a\u043e \u0432 \u0442\u0435\u043e\u0440\u0438\u0438 \u044d\u0442\u043e \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0442\u0430\u043a\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0447\u0435\u0442\u044b\u0440\u0435 \u0438\u0437 \u043f\u044f\u0442\u0438 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0435, \u043c\u043e\u0436\u043d\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u0448\u0443\u043c\u0430 \u0438 \u00ab\u0437\u0430\u0431\u044b\u0442\u044c\u00bb. \u0425\u043e\u0442\u044f, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043e\u043a DMA \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0431\u0449\u0430\u044f \u0448\u0438\u043d\u0430, \u0430 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0435 \u044f\u0434\u0440\u043e \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043a\u0430\u043d\u0430\u043b\u044b DMA.<\/p>\n<p>\u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0448\u0443\u043c \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u0441\u0430\u043c\u043e\u0433\u043e \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u0438\u043b\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u2014 \u0440\u0435\u0448\u0430\u0442\u044c \u0412\u0430\u043c.<\/p>\n<p>\u0412\u0435\u0441\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430 <a href=\"https:\/\/github.com\/LTVA1\/STM32_noise_generation\" rel=\"noopener noreferrer nofollow\">GitHub<\/a>.<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/871210\/\"> https:\/\/habr.com\/ru\/articles\/871210\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0446\u0435\u043b\u0435\u0439. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0438\u0445 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u0445 \u0441\u0435\u0440\u0438\u0438 STM32.<\/p>\n<h3>\u0421\u0443\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b<\/h3>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0410\u0427\u0425 \u043b\u0438\u043d\u0438\u0438 \u0441\u0432\u044f\u0437\u0438 \u0438\u043b\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u043e\u0433\u043e \u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443. \u0418\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0448\u0443\u043c \u0434\u043b\u044f \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043c\u0443\u0437\u044b\u043a\u0438 (\u0447\u0438\u043f\u0442\u044e\u043d\u044b?). \u0418\u043b\u0438 \u0434\u043b\u044f \u0447\u0435\u0433\u043e-\u0442\u043e \u0435\u0449\u0451.<\/p>\n<p>\u041e\u0431\u044b\u0447\u043d\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u0438\u043a\u0440\u043e\u0441\u0445\u0435\u043c\u044b \u0438\u043b\u0438 \u0434\u0435\u043b\u0430\u044e\u0442 \u0441\u0432\u043e\u0438 \u0441\u0445\u0435\u043c\u044b \u043d\u0430 \u0431\u0430\u0437\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0442\u0440\u043e\u043d\u043e\u0432 \u0438\u043b\u0438 \u0431\u0438\u043f\u043e\u043b\u044f\u0440\u043d\u044b\u0445 \u0442\u0440\u0430\u043d\u0437\u0438\u0441\u0442\u043e\u0440\u043e\u0432. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u044b \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u0432 3.3 \u0412\u043e\u043b\u044c\u0442\u0430 (\u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u044f \u043f\u0438\u0442\u0430\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430) \u0438 \u043c\u0430\u043b\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0432\u044b\u0432\u043e\u0434\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0431\u0435\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u043f\u044f\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0438 \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u043d\u0430 \u0432\u044b\u0432\u043e\u0434\u0435 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430. \u0427\u0435\u0442\u044b\u0440\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0435, \u043e\u0434\u0438\u043d \u2014 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439. \u041f\u0435\u0440\u0432\u044b\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435 STM32F303RE, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u2014 \u043d\u0430 STM32H743VI.<\/p>\n<h3>\u0421\u043f\u043e\u0441\u043e\u0431 \u21161 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u0426\u0410\u041f<\/h3>\n<p>\u0412\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u0445 \u0441\u0435\u0440\u0438\u0438 STM32 \u0435\u0441\u0442\u044c \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043e\u0434\u0438\u043d \u0434\u0432\u0443\u0445\u043a\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0426\u0410\u041f. \u041f\u043e\u043c\u0438\u043c\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u044b\u0432\u043e\u0434\u0435, \u043e\u043d \u0443\u043c\u0435\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0435\u0443\u0433\u043e\u043b\u044c\u043d\u0443\u044e \u0432\u043e\u043b\u043d\u0443 \u0438\u043b\u0438 \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b.<\/p>\n<p>\u041f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 12-\u0440\u0430\u0437\u0440\u044f\u0434\u043d\u043e\u0433\u043e \u0420\u0421\u041b\u041e\u0421 (\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0441\u0434\u0432\u0438\u0433\u0430 \u0441 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u044c\u044e):<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0421\u0445\u0435\u043c\u0430 12-\u0431\u0438\u0442\u043d\u043e\u0433\u043e \u0420\u0421\u041b\u041e\u0421 \u0438\u0437 rm0316.<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0435\u0440\u0438\u043e\u0434 \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0432\u0435\u043d 4095 (2<sup>12<\/sup>-1). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430 \u0441\u043b\u0443\u0445 \u0442\u0430\u043a\u043e\u0439 \u0448\u0443\u043c \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u043c\u0441\u044f, \u0430 \u043f\u0440\u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u0442\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043a\u043e\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0442 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u043a\u0432\u0430\u0440\u0446\u0430 \u043d\u0430 8 \u041c\u0413\u0446. \u041e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0432\u043e \u0432\u0441\u0435\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445, \u043a\u0440\u043e\u043c\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e:<\/p>\n<pre><code class=\"cpp\">void set_72MHz() { RCC-&gt;CR |= ((uint32_t)RCC_CR_HSEON);  \/* \u0416\u0434\u0435\u043c \u043f\u043e\u043a\u0430 HSE \u043d\u0435 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442 \u0431\u0438\u0442 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 *\/ while(!(RCC-&gt;CR &amp; RCC_CR_HSERDY)) {}  \/* \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u043c Flash \u043d\u0430 2 \u0446\u0438\u043a\u043b\u0430 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f *\/ \/* Flash \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u0435 *\/ FLASH-&gt;ACR &amp;= ~FLASH_ACR_LATENCY; FLASH-&gt;ACR |= FLASH_ACR_LATENCY_2;  \/* HCLK = SYSCLK *\/ RCC-&gt;CFGR |= RCC_CFGR_HPRE_DIV1;  \/* PCLK2 = HCLK *\/ RCC-&gt;CFGR |= RCC_CFGR_PPRE2_DIV1;  \/* PCLK1 = HCLK \/ 2 *\/ RCC-&gt;CFGR |= RCC_CFGR_PPRE1_DIV2;  \/* \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u043c \u043c\u043d\u043e\u0436\u0438\u0442\u0435\u043b\u044c PLL configuration: PLLCLK = HSE * 9 = 72 MHz *\/ \/* \u041f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438, \u0447\u0442\u043e \u043a\u0432\u0430\u0440\u0446 \u043d\u0430 8\u041c\u0413\u0446! *\/ RCC-&gt;CFGR &amp;= ~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMUL); RCC-&gt;CFGR |= RCC_CFGR_PLLSRC_HSE_PREDIV | RCC_CFGR_PLLMUL9;  \/* \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c PLL *\/ RCC-&gt;CR |= RCC_CR_PLLON;  \/* \u041e\u0436\u0438\u0434\u0430\u0435\u043c, \u043f\u043e\u043a\u0430 PLL \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442 \u0431\u0438\u0442 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 *\/ while((RCC-&gt;CR &amp; RCC_CR_PLLRDY) == 0) { asm(\"nop\"); }  \/* \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c PLL \u043a\u0430\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b *\/ RCC-&gt;CFGR &amp;= ~RCC_CFGR_SW; RCC-&gt;CFGR |= RCC_CFGR_SW_PLL;  \/* \u041e\u0436\u0438\u0434\u0430\u0435\u043c, \u043f\u043e\u043a\u0430 PLL \u0432\u044b\u0431\u0435\u0440\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b *\/ while ((RCC-&gt;CFGR &amp; RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL) { asm(\"nop\"); }  SystemCoreClockUpdate(); }<\/code><\/pre>\n<p>\u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043e\u0441\u0442\u0430\u0432\u043b\u044e \u0431\u0435\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0439, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043a \u0442\u0435\u043c\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e\u043d \u043d\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u041d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0440\u0442\u0430 A GPIO, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 PA4 \u0438 PA5 \u2014 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0432\u044b\u0432\u043e\u0434\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0432 \u0432\u044b\u0445\u043e\u0434\u044b \u0426\u0410\u041f\u043e\u0432. \u0422\u0430\u043a\u0436\u0435 \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u0430\u0439\u043c\u0435\u0440 \u0434\u043b\u044f \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0426\u0410\u041f\u0430, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043d\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c TIM6, \u043a\u043e\u0442\u043e\u0440\u044b\u0439, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e reference manual, \u043a\u0430\u043a \u0440\u0430\u0437 \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0434\u0432\u0443\u0445 \u0442\u0430\u0439\u043c\u0435\u0440\u043e\u0432, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u0430\u043d\u0430\u043b\u043e\u0432 \u0426\u0410\u041f\u0430. \u041d\u0443 \u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u043d\u0443\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u0426\u0410\u041f\u0430.<\/p>\n<pre><code class=\"cpp\">void init_clocks() { RCC-&gt;AHBENR |= RCC_AHBENR_GPIOAEN; RCC-&gt;APB1ENR |= RCC_APB1ENR_DAC1EN | RCC_APB1ENR_TIM6EN; }<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e main:<\/p>\n<pre><code class=\"cpp\">#include \"stm32f3xx.h\"  int main(void) { init_clocks(); set_72MHz();      \/\/\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438 \u0437\u0434\u0435\u0441\u044c      \/\/\u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0432 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435     while (1) { asm(\"nop\"); } return 0; }<\/code><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043f\u043e\u0440\u044f\u0434\u043e\u043a. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0442\u0430\u043b\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u043e\u0436\u0434\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a\u0442\u043e\u0432 \u0448\u0438\u043d\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0430 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0430 \u043f\u043e\u0442\u043e\u043c \u0443\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0435\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a. \u0417\u0430 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u044d\u0442\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a\u0442\u043e\u0432 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043f\u0440\u043e\u0439\u0434\u0443\u0442.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u044e:<\/p>\n<pre><code class=\"cpp\">\/\/\u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0432\u043e\u0434\u0430 PA4 GPIOA-&gt;MODER |= GPIO_MODER_MODER4;<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u043e\u0431\u0430 \u0431\u0438\u0442\u0430 \u043f\u043e\u043b\u044f, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u0437\u0430 \u0440\u0435\u0436\u0438\u043c \u0432\u044b\u0432\u043e\u0434\u0430 PA4, \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u044f \u0435\u0433\u043e \u0432 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0442\u0430\u0439\u043c\u0435\u0440:<\/p>\n<pre><code class=\"cpp\">\/\/\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 TRGO \u043f\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044e \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430 TIM6-&gt;CR2 |= TIM_CR2_MMS_1; TIM6-&gt;ARR = 72 - 1; TIM6-&gt;PSC = 2 - 1;<\/code><\/pre>\n<p>\u0422\u0430\u0439\u043c\u0435\u0440 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b TRGO \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438, \u0442.\u0435. \u043a\u0430\u0436\u0434\u044b\u0435 144 \u0442\u0430\u043a\u0442\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b (\u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u0440\u0435\u0434\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0438 \u0441\u0430\u043c \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0442\u0430\u0439\u043c\u0435\u0440\u0430 \u0441\u0447\u0438\u0442\u0430\u044e\u0442 \u0441 \u043d\u0443\u043b\u044f). \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0426\u0410\u041f\u0430 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442 500 \u043a\u0413\u0446.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u2014 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0426\u0410\u041f:<\/p>\n<pre><code class=\"cpp\">\/\/\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0426\u0410\u041f: \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u0430 \u0448\u0443\u043c\u0430, \u0432\u044b\u0431\u043e\u0440 \u0448\u0443\u043c\u0430 \u0432 \/\/\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u0438\u043f\u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0432\u043e\u043b\u043d\u044b, \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c trigger \/\/DAC_CR_TSEL1 = 0 \u0434\u043b\u044f TIM6 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \/\/\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0448\u0443\u043c\u0430 DAC-&gt;CR = DAC_CR_MAMP1 | DAC_CR_WAVE1_0 | DAC_CR_TEN1;<\/code><\/pre>\n<p><code>DAC_CR_MAMP1<\/code> \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u0430. \u0417\u0430\u043f\u0438\u0441\u0430\u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>DAC_CR_MAMP1_0<\/code>, \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u0443 \u0441\u0438\u0433\u043d\u0430\u043b\u0430. \u041e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0433\u0440\u0443\u0431\u0430\u044f \u2014 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043b\u0438\u0431\u043e \u043f\u043e\u043b\u043d\u0443\u044e \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u0443, \u043b\u0438\u0431\u043e \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443, \u043b\u0438\u0431\u043e \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u044c, \u0438 \u0442.\u0434. \u0434\u043e 1\/4096 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u044b. <code>DAC_CR_WAVE1_0<\/code> \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0448\u0443\u043c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u0432\u043e\u043b\u043d\u044b:<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043d\u0435 \u0432\u0441\u0435 \u0426\u0410\u041f\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u0448\u0443\u043c\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u0442\u043e\u0440\u043e\u0439 \u0426\u0410\u041f \u0432  STM32F303x6\/8 \u0438 STM32F328x8 (\u0442\u0440\u0435\u0442\u0438\u0439 \u043a\u0430\u043d\u0430\u043b) \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u0432\u043e\u043b\u043d.<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0441\u0451 \u0433\u043e\u0442\u043e\u0432\u043e, \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0426\u0410\u041f \u0438 \u0442\u0430\u0439\u043c\u0435\u0440:<\/p>\n<pre><code class=\"cpp\">\/\/\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043f\u0435\u0440\u0432\u044b\u0439 \u043a\u0430\u043d\u0430\u043b \u0426\u0410\u041f\u0430 DAC-&gt;CR |= DAC_CR_EN1; \/\/\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0442\u0430\u0439\u043c\u0435\u0440 TIM6-&gt;CR1 |= TIM_CR1_CEN;<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0430 \u0432\u044b\u0432\u043e\u0434\u0435 PA4 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u00ab\u0448\u0443\u043c\u00bb.<\/p>\n<p>\u0417\u0430 \u043d\u0435\u0438\u043c\u0435\u043d\u0438\u0435\u043c \u043b\u0443\u0447\u0448\u0435\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0437\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u0438\u0433\u043d\u0430\u043b \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 \u0437\u0432\u0443\u043a\u043e\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u044b. \u0412 Audacity \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u043b \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u043d\u044b\u0439 \u0441\u043f\u0435\u043a\u0442\u0440:<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043f\u0438\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u0436\u0434\u044b\u0435 122 \u0413\u0446.<\/figcaption><\/div>\n<\/figure>\n<p>\u042d\u0442\u0438 \u043f\u0438\u043a\u0438 \u0435\u0441\u0442\u044c \u043d\u0435 \u0447\u0442\u043e \u0438\u043d\u043e\u0435, \u043a\u0430\u043a \u0433\u0430\u0440\u043c\u043e\u043d\u0438\u043a\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u043e\u0442\u044b, \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0432\u043d\u043e\u0439 122 \u0413\u0446. \u041e\u0442\u043a\u0443\u0434\u0430 \u0432\u0437\u044f\u043b\u0430\u0441\u044c \u044d\u0442\u0430 \u0447\u0430\u0441\u0442\u043e\u0442\u0430? \u0410 \u0432\u0437\u044f\u043b\u0430\u0441\u044c \u043e\u043d\u0430 \u0438\u0437 \u043c\u0430\u043b\u043e\u0433\u043e \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u044b\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u043c. \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e,<\/p>\n<p>\u041c\u043d\u0435 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0437\u0430\u0447\u0435\u043c STM \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440. \u0412\u0435\u0434\u044c \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u0432\u0434\u0432\u043e\u0435 \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0434\u043b\u0438\u043d\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u043f\u0435\u0440\u0438\u043e\u0434 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0442\u0430\u043b \u0431\u044b \u0440\u0430\u0432\u0435\u043d \u0443\u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 16 \u043c\u043b\u043d, \u0447\u0442\u043e \u0434\u0430\u0432\u0430\u043b\u043e \u0431\u044b \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u0439 \u0441\u043f\u0435\u043a\u0442\u0440, \u043a\u0440\u0430\u0439\u043d\u0435 \u0431\u043b\u0438\u0437\u043a\u0438\u0439 \u043a \u0431\u0435\u043b\u043e\u043c\u0443 \u0448\u0443\u043c\u0443.<\/p>\n<p>\u0414\u043e\u0441\u0442\u043e\u0438\u043d\u0441\u0442\u0432\u043e\u043c \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u043d\u043e\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0430 (\u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u044b\u0432\u043e\u0434\u044b \u043f\u043e\u0440\u0442\u0430 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043b\u044e\u0431\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c) \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u0438 \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u044b \u0441\u0438\u0433\u043d\u0430\u043b\u0430. \u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u0441\u043f\u0435\u043a\u0442\u0440\u0430 (\u0445\u043e\u0442\u044f, \u0435\u0441\u043b\u0438 \u043f\u043e\u043d\u0438\u0437\u0438\u0442\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0442\u043e \u043f\u043e\u043b\u043e\u0441\u0430 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438 \u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u043d\u043e\u0433\u043e \u0441\u043f\u0435\u043a\u0442\u0440\u0430 \u0441\u0442\u0430\u043d\u0435\u0442 \u0448\u0438\u0440\u0435).<\/p>\n<h3>\u0421\u043f\u043e\u0441\u043e\u0431 \u21162 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u044f CRC<\/h3>\n<p>\u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u0445 STM32 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u043c\u043e\u0434\u0443\u043b\u044c \u0440\u0430\u0441\u0447\u0451\u0442\u0430 CRC. \u041f\u043e \u0441\u0443\u0442\u0438 \u0441\u0432\u043e\u0435\u0439 \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c 32-\u0440\u0430\u0437\u0440\u044f\u0434\u043d\u044b\u0439 \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0441 \u00ab\u043f\u043e\u0434\u043c\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435\u043c\u00bb \u0447\u0435\u0440\u0435\u0437 XOR \u0432 \u0446\u0435\u043f\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0441\u043b\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u044d\u0442\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0443\u043b\u0438, \u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u0441\u0434\u0432\u0438\u0433\u043e\u0432\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u0432 \u0420\u0421\u041b\u041e\u0421 (\u0441\u043c. \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0438\u0441\u0442\u0438\u043d\u043d\u043e\u0441\u0442\u0438 XOR&#8217;\u0430). \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0439 \u043f\u043e\u043b\u0438\u043d\u043e\u043c \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b.<\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0432\u043e\u043f\u043b\u043e\u0442\u0438\u0442\u044c \u044d\u0442\u0443 \u0437\u0430\u0434\u0443\u043c\u043a\u0443, \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0430\u043c \u043c\u043e\u0434\u0443\u043b\u044c \u0440\u0430\u0441\u0447\u0451\u0442\u0430 CRC \u0438 \u0434\u0432\u0430 \u043a\u0430\u043d\u0430\u043b\u0430 DMA. \u041e\u0434\u0438\u043d \u043a\u0430\u043d\u0430\u043b \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043a\u043b\u0430\u0441\u0442\u044c \u0432 \u043c\u043e\u0434\u0443\u043b\u044c CRC \u043d\u0443\u043b\u0438, \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0420\u0421\u041b\u041e\u0421 \u0441\u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043e\u0434\u0438\u043d \u0431\u0438\u0442 \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438, \u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u00ab\u0434\u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u00bb \u0438\u0437 \u043c\u043e\u0434\u0443\u043b\u044f \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u0443\u044e \u00abCRC\u00bb (\u043f\u043e \u0441\u0443\u0442\u0438 \u2014 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0420\u0421\u041b\u041e\u0421) \u0438 \u043a\u043b\u0430\u0441\u0442\u044c \u0435\u0451 \u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 ODR (output data register) \u043f\u043e\u0440\u0442\u0430 GPIO. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0442\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0432\u044b\u0432\u043e\u0434\u044b \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0440\u0442\u0430 GPIO \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0432\u044b\u0432\u043e\u0434\u043e\u0432 GPIO (\u0442.\u0435. \u0438\u0445 \u0432\u0441\u0451 \u0435\u0449\u0451 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0432\u0445\u043e\u0434\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432 \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0438 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438).<\/p>\n<p>\u0421\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0441\u043f\u043e\u0441\u043e\u0431 \u0438 \u0441\u043f\u043e\u0441\u043e\u0431 \u21163 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432 G0 \u0438 L0, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0442\u0430\u043c GPIO \u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043d\u0430 \u043e\u0431\u0449\u0435\u0439 \u0448\u0438\u043d\u0435. \u041e\u043d\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u043c\u0443 \u044f\u0434\u0440\u0443 \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0448\u0438\u043d\u0435, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e DMA \u043a \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u043c GPIO \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442.<\/p>\n<p>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435:<\/p>\n<pre><code class=\"cpp\">void init_clocks() { RCC-&gt;AHBENR |= RCC_AHBENR_GPIOAEN | RCC_AHBENR_CRCEN | RCC_AHBENR_DMA2EN; RCC-&gt;APB1ENR |= RCC_APB1ENR_TIM6EN | RCC_APB1ENR_TIM7EN; }<\/code><\/pre>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f main \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0439 \u0436\u0435. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438:<\/p>\n<pre><code class=\"cpp\">\/\/\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0432\u044b\u0432\u043e\u0434\u0430 PA4 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434 GPIOA-&gt;MODER &amp;= ~GPIO_MODER_MODER4; GPIOA-&gt;MODER |= GPIO_MODER_MODER4_0;<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u0432\u0441\u0451 \u0442\u043e\u0442 \u0436\u0435 \u0432\u044b\u0432\u043e\u0434 PA4 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0442\u0430\u0439\u043c\u0435\u0440\u044b. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0442\u0430\u0439\u043c\u0435\u0440\u044b TIM6 \u0438 TIM7:<\/p>\n<pre><code class=\"cpp\">\/\/\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 TRGO \u043f\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044e \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430 TIM6-&gt;CR2 |= TIM_CR2_MMS_1; TIM6-&gt;DIER = TIM_DIER_UDE; TIM6-&gt;ARR = 10 - 1; TIM6-&gt;PSC = 0;  \/\/\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 TRGO \u043f\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044e \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0430 TIM7-&gt;CR2 |= TIM_CR2_MMS_1; TIM7-&gt;DIER = TIM_DIER_UDE; TIM7-&gt;ARR = 10 - 1; TIM7-&gt;PSC = 0;<\/code><\/pre>\n<p><code>TIM6-&gt;DIER = TIM_DIER_UDE;<\/code> \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u0441\u043e\u0431\u044b\u0442\u0438\u044f TIM6_UP, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0434\u043b\u044f TIM7_UP. \u042d\u0442\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043d\u0443\u0436\u043d\u044b \u0434\u043b\u044f \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043e\u043a \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 DMA:<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0411\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0435\u0442\u0438\u0439 \u0438 \u0447\u0435\u0442\u0432\u0451\u0440\u0442\u044b\u0439 \u043a\u0430\u043d\u0430\u043b\u044b DMA2.<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043c \u0441\u0430\u043c \u043c\u043e\u0434\u0443\u043b\u044c CRC:<\/p>\n<pre><code class=\"cpp\">\/\/\u0441\u0431\u0440\u043e\u0441 CRC-&gt;CR = CRC_CR_RESET; \/\/\u043f\u043e\u043b\u0438\u043d\u043e\u043c 32 \u0431\u0438\u0442\u0430, \u0431\u0435\u0437 \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 CRC-&gt;CR = 0; \/\/\u043f\u0438\u0448\u0435\u043c \u043d\u0435\u043d\u0443\u043b\u0435\u0432\u043e\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 CRC-&gt;INIT = 0xAAAAAAAA; \/\/\u043f\u043e\u043b\u0438\u043d\u043e\u043c, \u0420\u0421\u041b\u041e\u0421 32 \u0431\u0438\u0442\u0430, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0435\u0440\u0438\u043e\u0434 CRC-&gt;POL = 0x000000C5;<\/code><\/pre>\n<p>\u041f\u043e\u043b\u0438\u043d\u043e\u043c \u0437\u0434\u0435\u0441\u044c \u00ab\u043f\u0435\u0440\u0435\u0432\u0451\u0440\u043d\u0443\u0442\u00bb \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u00ab\u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e\u00bb \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043e\u0442\u0432\u043e\u0434\u043e\u0432 \u0420\u0421\u041b\u041e\u0421, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0441\u0434\u0432\u0438\u0433 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u043f\u0440\u0430\u0432\u043e, \u0430 \u043d\u0435 \u0432\u043b\u0435\u0432\u043e.<\/p>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c DMA:<\/p>\n<pre><code class=\"cpp\">\/\/\u043f\u0435\u0440\u0435\u0441\u044b\u043b\u0430\u0442\u044c \u043f\u043e 32 \u0431\u0438\u0442\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0431\u0443\u0444\u0435\u0440\u0430, \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u044e, \/\/\u0434\u043b\u0438\u043d\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u0440\u0430\u0432\u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u043f\u043e\u0441\u044b\u043b\u043a\u0435, \u0431\u0435\u0437 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439. \u041f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0430 \u043f\u043e \/\/\u0441\u0438\u0433\u043d\u0430\u043b\u0443 \u043e\u0442 TIM6 DMA2_Channel3-&gt;CCR = DMA_CCR_PSIZE_1 | DMA_CCR_MSIZE_1 | DMA_CCR_CIRC | DMA_CCR_DIR; DMA2_Channel3-&gt;CNDTR = 1; DMA2_Channel3-&gt;CMAR = (uint32_t)&amp;zero_var; DMA2_Channel3-&gt;CPAR = (uint32_t)&amp;(CRC-&gt;DR);  \/\/\u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u043d\u043e \u0438\u0437 \"\u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0438\" \u0432 \"\u043f\u0430\u043c\u044f\u0442\u044c\" (\u0438\u0437 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0440\u0430\u0441\u0447\u0451\u0442\u0430 CRC CRC-&gt;DR \/\/\u0432 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 GPIOA-&gt;ODR). \u041f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0430 \u043f\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0443 \u043e\u0442 TIM7 DMA2_Channel4-&gt;CCR = DMA_CCR_PSIZE_1 | DMA_CCR_MSIZE_1 | DMA_CCR_CIRC; DMA2_Channel4-&gt;CNDTR =<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\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-443991","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/443991","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=443991"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/443991\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=443991"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=443991"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=443991"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}