{"id":319712,"date":"2021-03-16T21:00:58","date_gmt":"2021-03-16T21:00:58","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=319712"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=319712","title":{"rendered":"Hello NXP JN5169 World"},"content":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3cb\/260\/4a6\/3cb2604a6c182fdc04430a8f9f35be82.png\" width=\"717\" height=\"460\"><figcaption><\/figcaption><\/figure>\n<p>\u0415\u0441\u0442\u044c \u0443 \u043c\u0435\u043d\u044f \u043e\u0434\u043d\u0430 \u0438\u0434\u0435\u0439\u043a\u0430 &#8212; \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u0434\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 ZigBee \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 Xiaomi. \u041d\u043e \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: \u044f \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0441 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u043c\u0438 NXP JN5169, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 Xiaomi. NXP \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 IDE, \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u044b\u0441\u044f\u0447 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u0434\u0435\u0432\u0435\u043b\u043e\u043f\u0435\u0440\u0441\u043a\u0443\u044e \u0431\u043e\u0440\u0434\u0443 \u0437\u0430 $650, \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442 \u0437\u0430\u043f\u0443\u0442\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432. \u041d\u043e \u0432\u043e\u0442 \u043a\u0430\u043a\u043e\u0433\u043e \u043d\u0438\u0431\u0443\u0434\u044c \u0432\u043d\u044f\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e\u0433\u043e \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u043d\u0435 \u043d\u0430\u0448\u043b\u043e\u0441\u044c.<\/p>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u043d\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0431\u0435\u043b, \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 Hello World \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 NXP JN5169. \u041f\u043e\u0435\u0445\u0430\u043b\u0438.<\/p>\n<h2>\u041c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u044f<\/h2>\n<p>\u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u0441\u043a\u0430\u0437\u0430\u043b, NXP \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0433\u043e\u0442\u043e\u0432\u0443\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u043e\u0434 \u0441\u0432\u043e\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430:&nbsp;<\/p>\n<ul>\n<li>\n<p>BeyondStudio IDE \u043d\u0430 \u0431\u0430\u0437\u0435 Eclipse, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 JN5169, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u043c\u043e\u0447\u044c \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 ZigBee \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432<\/p>\n<\/li>\n<li>\n<p>SDK \u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0435\u0439, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e ZigBee \u0441\u0442\u0435\u043a\u0430<\/p>\n<\/li>\n<li>\n<p>\u0412\u0441\u0435 \u044d\u0442\u043e \u043f\u043e\u0434\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439, \u0434\u0430\u0442\u0430\u0448\u0438\u0442\u0430\u043c\u0438, API Reference, \u0438 \u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u043c\u0438 Application Notes<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0441\u044f \u044d\u0442\u0430 \u0448\u0442\u0443\u043a\u043e\u0432\u0438\u043d\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043c\u043e\u043d\u0441\u0442\u0440\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u0430, \u0430 \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 \u044d\u0442\u043e\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u0443\u0442\u043e\u043d\u0435\u0442 \u0438 \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u0434\u0430\u0436\u0435 \u043b\u0430\u043c\u043f\u043e\u0447\u043a\u043e\u0439 \u043f\u043e\u043c\u043e\u0440\u0433\u0430\u0442\u044c. \u041a \u0441\u0432\u043e\u0435\u043c\u0443 \u0441\u0442\u044b\u0434\u0443 \u043c\u043e\u0433\u0443 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0434\u0430\u0436\u0435 \u0441\u043b\u0435\u0434\u0443\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043d\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0438\u0437 SDK \u0443 \u043c\u0435\u043d\u044f \u0443\u0448\u043b\u043e \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u043f\u043e\u043b\u0434\u043d\u044f &#8212; BeyondStudio \u0442\u043e \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u043c\u043e\u0433 \u043d\u0430\u0439\u0442\u0438 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u043d\u044b\u0439 make, \u0442\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440, \u0442\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0442\u043e \u0435\u0449\u0435 \u0447\u0442\u043e \u043d\u0438\u0431\u0443\u0434\u044c. \u0412\u0441\u0435 \u044d\u0442\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043d\u0430 \u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0438 \u0447\u0435\u0440\u0442 \u0435\u0433\u043e \u0437\u043d\u0430\u0435\u0442 \u0447\u0442\u043e \u0435\u0449\u0435. \u0412 \u043e\u0431\u0449\u0435\u043c, \u043d\u0438\u0430\u0441\u0438\u043b\u0438\u043b, \u0445\u043e\u0442\u044f \u043f\u043e \u0438\u0442\u043e\u0433\u0443 \u0447\u0442\u043e-\u0442\u043e \u0442\u0430\u043c \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u043e\u0441\u044c.<\/p>\n<p>\u041d\u043e \u044d\u0442\u043e \u0435\u0449\u0435 \u043f\u043e\u043b\u0431\u0435\u0434\u044b. \u041f\u0440\u0438\u043c\u0435\u0440\u044b ZigBee \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442, \u043a\u043e\u0434 \u043f\u043e\u0434\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u043b\u0435\u0442\u0430\u0435\u0442\u0441\u044f. \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043d\u0430\u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u0442 \u0438\u0437 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0445 \u0430\u0431\u0431\u0440\u0435\u0432\u0438\u0430\u0442\u0443\u0440, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0432\u0435\u043d\u0433\u0435\u0440\u0441\u043a\u0443\u044e \u043d\u043e\u0442\u0430\u0446\u0438\u044e \u0438 \u0432 2 \u0440\u0430\u0437\u0430 \u0434\u043b\u0438\u043d\u043d\u0435\u0435, \u0447\u0435\u043c \u043c\u043e\u0433\u043b\u0438 \u0431\u044b. \u0421\u0430\u043c \u043a\u043e\u0434 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043b\u0430\u043f\u0448\u0443 \u0438\u0437 \u0434\u0435\u0444\u0430\u0439\u043d\u043e\u0432 \u0438 \u0441\u043e\u0442\u0435\u043d \u0441\u0442\u0440\u043e\u043a Makefile\u2019\u043e\u0432. \u0412\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 \u043a\u043e\u0434 \u043f\u0435\u0440\u0435\u043c\u0435\u0436\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u0431\u0430\u0439\u0442\u043d\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u043e\u0439 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 MAC \u0443\u0440\u043e\u0432\u043d\u044f \u0441\u0435\u0442\u0438, \u0432\u0441\u0435 \u044d\u0442\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043e \u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432, \u0430 \u0441 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0432\u043e\u043e\u0431\u0449\u0435 \u0441\u0445\u043e\u0434\u0443 \u043d\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u0448\u044c\u0441\u044f. \u0412 \u043e\u0431\u0449\u0435\u043c \u043a\u0440\u043e\u0432\u044c \u0438\u0437 \u0433\u043b\u0430\u0437, \u0438 \u0431\u0435\u0437 \u043f\u043e\u043b\u043b\u0438\u0442\u0440\u044b \u043d\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u0448\u044c\u0441\u044f (\u0435\u0441\u043b\u0438 \u0447\u0442\u043e, \u0440\u0435\u0447\u044c \u0438\u0434\u0435\u0442 \u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0435 JN-AN-1219-Zigbee-3-0-Controller-and-Switch)<\/p>\n<p>\u042f \u0443\u0432\u0435\u0440\u0435\u043d, \u0447\u0442\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u044d\u0442\u043e\u043c \u0432\u0441\u0435\u043c \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043d\u043e \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043a \u044d\u0442\u043e\u043c\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043c\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u0443\u0433\u0430\u0441\u043d\u0435\u0442. \u0422\u0443\u0442 \u043d\u0443\u0436\u0435\u043d \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434. \u041e\u0431\u044b\u0447\u043d\u043e, \u0435\u0441\u043b\u0438 \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u043d\u043e\u0432\u043e\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438, \u044f \u043f\u0440\u043e\u0431\u0443\u044e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e \u043d\u0438\u0431\u0443\u0434\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0435. \u041c\u0435\u0433\u0430\u0431\u0430\u0439\u0442\u044b \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0438 \u0442\u044b\u0441\u044f\u0447\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 &#8212; \u044d\u0442\u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e, \u043d\u043e \u043a\u0430\u043a \u043f\u043e \u043c\u043d\u0435 \u043b\u0443\u0447\u0448\u0435 \u043d\u0430\u0447\u0430\u0442\u044c \u0441\u043e \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043d\u043e\u0439 \u043c\u043e\u0440\u0433\u0430\u043b\u043a\u0438. \u0412 \u043e\u0431\u0449\u0435\u043c, \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441 \u043d\u0443\u043b\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440\u0447\u0438\u043a, \u0447\u0442\u043e\u0431\u044b \u0448\u0430\u0433 \u0437\u0430 \u0448\u0430\u0433\u043e\u043c \u043f\u043e\u0441\u0442\u0438\u0433\u0430\u0442\u044c \u0433\u043b\u0443\u0431\u0438\u043d\u044b \u0433\u043b\u0443\u0431\u0438\u043d JN5169.<\/p>\n<h2>\u0416\u0435\u043b\u0435\u0437\u043e<\/h2>\n<p>\u0422\u0440\u0430\u0442\u0438\u0442\u044c $650 \u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043c\u0438\u0433\u0430\u0442\u044c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c &#8212; \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0436\u0438\u0440\u043d\u043e. \u0411\u043b\u0430\u0433\u043e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f EBYTE \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043a\u043e\u043f\u0435\u0435\u0447\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c E75-2G4M10S (\u043d\u0430 \u041a\u0414\u041f\u0412). \u041d\u0430 \u043d\u0435\u043c \u0438 \u0431\u0443\u0434\u0435\u043c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0414\u043b\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u043e\u0431\u0435\u0440\u0435\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0441\u0445\u0435\u043c\u0443<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b41\/50f\/062\/b4150f062621ef8fd35cf9394c446c67.png\" width=\"1067\" height=\"733\"><figcaption><\/figcaption><\/figure>\n<p>\u0412 \u0441\u0445\u0435\u043c\u0435 \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u043e\u0434\u043d\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u0438 \u043e\u0434\u0438\u043d \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434. \u041f\u0438\u043d\u044b GPIO \u0432\u044b\u0431\u0440\u0430\u043d\u044b \u043d\u0430\u043e\u0431\u0443\u043c. \u041f\u0440\u043e\u0448\u0438\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c \u043c\u043e\u0436\u043d\u043e \u0447\u0435\u0440\u0435\u0437 UART. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u0436\u0430\u0442\u044c \u043f\u0438\u043d SPI_MISO \u043a \u0437\u0435\u043c\u043b\u0435 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0435\u0441\u0435\u0442\u0430, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u0441\u043b\u0443\u0436\u0430\u0442 2 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043d\u043e\u043f\u043a\u0438.&nbsp;<\/p>\n<p>\u0421\u0431\u043e\u0440\u043a\u0430 \u043d\u0430 <s>\u0441\u043e\u043f\u043b\u044f\u0445 <\/s>\u043c\u0430\u043a\u0435\u0442\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0435<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6e6\/994\/82d\/6e699482d5d14cf0c2d374c939cbe513.jpg\" width=\"1302\" height=\"896\"><figcaption><\/figcaption><\/figure>\n<p>\u0421 \u0436\u0435\u043b\u0435\u0437\u043e\u043c \u0432\u0441\u0435, \u043f\u043e\u0440\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438.<\/p>\n<h2>Toolchain file <\/h2>\n<p>\u0414\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c CMake. \u0413\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0430 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u043d\u0435 \u043d\u0430\u0448\u043b\u043e\u0441\u044c, \u043d\u043e \u0435\u0433\u043e \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e. \u041d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0434\u0430\u044e\u0442 \u043f\u0443\u0442\u044c \u043a \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u043c \u0444\u0430\u0439\u043b\u0430\u043c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0444\u043b\u0430\u0433\u0438.<\/p>\n<p>\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0434\u0435\u0442 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 BeyondStudio (\u043d\u0435 \u0437\u043d\u0430\u044e \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u0435\u0433\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e). \u041d\u0430 \u0434\u0435\u043b\u0435 \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 gcc \u043a\u0440\u043e\u0441\u0441 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440.<\/p>\n<pre><code class=\"cmake\">SET(CMAKE_SYSTEM_NAME Generic)  IF(NOT TOOLCHAIN_PREFIX)      MESSAGE(STATUS \"No TOOLCHAIN_PREFIX specified\") ENDIF()  IF (WIN32)     SET(TOOL_EXECUTABLE_SUFFIX \".exe\") ELSE()     SET(TOOL_EXECUTABLE_SUFFIX \"\") ENDIF()  SET(TARGET_PREFIX \"ba-elf\")  SET(TOOLCHAIN_BIN_DIR ${TOOLCHAIN_PREFIX}\/bin) SET(TOOLCHAIN_INC_DIR ${TOOLCHAIN_PREFIX}\/include) SET(TOOLCHAIN_LIB_DIR ${TOOLCHAIN_PREFIX}\/lib)  SET(CMAKE_C_COMPILER ${TOOLCHAIN_BIN_DIR}\/${TARGET_PREFIX}-gcc${TOOL_EXECUTABLE_SUFFIX}) SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_BIN_DIR}\/${TARGET_PREFIX}-g++${TOOL_EXECUTABLE_SUFFIX})  SET(CMAKE_OBJCOPY ${TOOLCHAIN_BIN_DIR}\/${TARGET_PREFIX}-objcopy${TOOL_EXECUTABLE_SUFFIX} CACHE INTERNAL \"objcopy tool\") SET(CMAKE_OBJDUMP ${TOOLCHAIN_BIN_DIR}\/${TARGET_PREFIX}-objdump${TOOL_EXECUTABLE_SUFFIX} CACHE INTERNAL \"objdump tool\") SET(CMAKE_SIZE ${TOOLCHAIN_BIN_DIR}\/${TARGET_PREFIX}-size${TOOL_EXECUTABLE_SUFFIX} CACHE INTERNAL \"size tool\") SET(CMAKE_DEBUGER ${TOOLCHAIN_BIN_DIR}\/${TARGET_PREFIX}-gdb${TOOL_EXECUTABLE_SUFFIX} CACHE INTERNAL \"debuger\") SET(CMAKE_CPPFILT ${TOOLCHAIN_BIN_DIR}\/${TARGET_PREFIX}-c++filt${TOOL_EXECUTABLE_SUFFIX} CACHE INTERNAL \"C++filt\")  SET(CMAKE_C_FLAGS_DEBUG \"-Og -g\" CACHE INTERNAL \"c compiler flags debug\") SET(CMAKE_CXX_FLAGS_DEBUG \"-Og -g\" CACHE INTERNAL \"cxx compiler flags debug\") SET(CMAKE_ASM_FLAGS_DEBUG \"-g\" CACHE INTERNAL \"asm compiler flags debug\") SET(CMAKE_EXE_LINKER_FLAGS_DEBUG \"\" CACHE INTERNAL \"linker flags debug\") SET(CMAKE_C_FLAGS_RELEASE \"-Os -g\" CACHE INTERNAL \"c compiler flags release\") SET(CMAKE_CXX_FLAGS_RELEASE \"-Os -g\" CACHE INTERNAL \"cxx compiler flags release\") SET(CMAKE_ASM_FLAGS_RELEASE \"-g\" CACHE INTERNAL \"asm compiler flags release\") SET(CMAKE_EXE_LINKER_FLAGS_RELEASE \"\" CACHE INTERNAL \"linker flags release\")  SET(CMAKE_C_FLAGS \"\" CACHE INTERNAL \"c compiler flags\") SET(CMAKE_CXX_FLAGS \"\" CACHE INTERNAL \"cxx compiler flags\") SET(CMAKE_ASM_FLAGS \"\" CACHE INTERNAL \"asm compiler flags\") SET(CMAKE_EXE_LINKER_FLAGS \"\" CACHE INTERNAL \"executable linker flags\") SET(CMAKE_MODULE_LINKER_FLAGS \"\" CACHE INTERNAL \"module linker flags\") SET(CMAKE_SHARED_LINKER_FLAGS \"\" CACHE INTERNAL \"shared linker flags\")  SET(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_PREFIX} ${EXTRA_FIND_PATH}) SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) <\/code><\/pre>\n<p>\u041d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0441\u043b\u043e\u0436\u043d\u044b\u043c, \u043d\u043e \u0442\u0443\u0442 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e. \u042d\u0442\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e TOOLCHAIN_PREFIX (\u0432 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u043d\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 C:\/NXP\/bstudio_nxp\/sdk\/Tools\/ba-elf-ba2-r36379 &#8212; \u043f\u0443\u0442\u044c \u0433\u0434\u0435 \u043b\u0435\u0436\u0438\u0442 \u0442\u0443\u043b\u0447\u0435\u0439\u043d), \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0438\u0437 \u044d\u0442\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0443\u0442\u0438 &#8212; \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440, objdump, objcopy, \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 GNU\u0441\u043d\u044b\u0435 \u0448\u0442\u0443\u043a\u0438. \u0422\u0430\u043a\u0436\u0435 \u0442\u0443\u0442 \u0437\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u043a\u043b\u044e\u0447\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0438 \u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a\u0430 (\u043f\u043e\u043a\u0430 \u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0438\u0445 \u043f\u0443\u0441\u0442\u044b\u043c\u0438 &#8212; \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043a\u0430).&nbsp;<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442&nbsp;<\/p>\n<pre><code class=\"cmake\">SET(CMAKE_BUILD_TYPE Release) SET(CMAKE_TOOLCHAIN_FILE JN5169.cmake)  PROJECT(GPSLogger) CMAKE_MINIMUM_REQUIRED(VERSION 3.8) ENABLE_LANGUAGE(CXX)  ADD_EXECUTABLE(Test Test.c) <\/code><\/pre>\n<pre><code class=\"cpp\">#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt;  int main(void) { \treturn EXIT_SUCCESS; } <\/code><\/pre>\n<p>\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0432 \u0436\u0435\u043b\u0435\u0437\u043a\u0443 \u044d\u0442\u043e \u043f\u043e\u043a\u0430 \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e, \u043d\u043e \u0432\u043e \u0432\u0441\u044f\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u043d\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f<\/p>\n<details class=\"spoiler\">\n<summary>\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>D:\\Projects\\NXP\\HelloJN5169World\\build&gt;cmake -G \"MinGW Makefiles\" -DTOOLCHAIN_PREFIX=C:\/NXP\/bstudio_nxp\/sdk\/Tools\/ba-elf-ba2-r36379 .. -- ====================== -- Toolchain paths -- TOOLCHAIN_BIN_DIR = C:\/NXP\/bstudio_nxp\/sdk\/Tools\/ba-elf-ba2-r36379\/bin -- TOOLCHAIN_INC_DIR = C:\/NXP\/bstudio_nxp\/sdk\/Tools\/ba-elf-ba2-r36379\/include -- TOOLCHAIN_LIB_DIR = C:\/NXP\/bstudio_nxp\/sdk\/Tools\/ba-elf-ba2-r36379\/lib -- CMAKE_C_COMPILER = C:\/NXP\/bstudio_nxp\/sdk\/Tools\/ba-elf-ba2-r36379\/bin\/ba-elf-gcc.exe -- CMAKE_CXX_COMPILER = C:\/NXP\/bstudio_nxp\/sdk\/Tools\/ba-elf-ba2-r36379\/bin\/ba-elf-g++.exe -- CMAKE_OBJCOPY = C:\/NXP\/bstudio_nxp\/sdk\/Tools\/ba-elf-ba2-r36379\/bin\/ba-elf-objcopy.exe -- CMAKE_OBJDUMP = C:\/NXP\/bstudio_nxp\/sdk\/Tools\/ba-elf-ba2-r36379\/bin\/ba-elf-objdump.exe -- CMAKE_SIZE = C:\/NXP\/bstudio_nxp\/sdk\/Tools\/ba-elf-ba2-r36379\/bin\/ba-elf-size.exe -- CMAKE_DEBUGER = C:\/NXP\/bstudio_nxp\/sdk\/Tools\/ba-elf-ba2-r36379\/bin\/ba-elf-gdb.exe -- CMAKE_CPPFILT = C:\/NXP\/bstudio_nxp\/sdk\/Tools\/ba-elf-ba2-r36379\/bin\/ba-elf-c++filt.exe -- ====================== -- Compiler flags -- CMAKE_C_FLAGS = -- CMAKE_CXX_FLAGS = -- CMAKE_ASM_FLAGS = -- CMAKE_EXE_LINKER_FLAGS = -- CMAKE_MODULE_LINKER_FLAGS = -- CMAKE_SHARED_LINKER_FLAGS = -- CMAKE_C_FLAGS_DEBUG = -Og -g -- CMAKE_CXX_FLAGS_DEBUG = -Og -g -- CMAKE_ASM_FLAGS_DEBUG = -g -- CMAKE_EXE_LINKER_FLAGS_DEBUG = -- CMAKE_C_FLAGS_RELEASE = -Os -g -- CMAKE_CXX_FLAGS_RELEASE = -Os -g -- CMAKE_ASM_FLAGS_RELEASE = -g -- CMAKE_EXE_LINKER_FLAGS_RELEASE = -- Configuring done -- Generating done -- Build files have been written to: D:\/Projects\/NXP\/HelloJN5169World\/build    D:\\Projects\\NXP\\HelloJN5169World\\build&gt;mingw32-make [ 50%] Building C object CMakeFiles\/Test.dir\/Test.c.obj [100%] Linking C executable Test [100%] Built target Test  <\/code><\/pre>\n<\/div>\n<\/details>\n<h2>Hello World \u043f\u043e \u0436\u0435\u043b\u0435\u0437\u044f\u0447\u043d\u043e\u043c\u0443. \u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u21161  <\/h2>\n<p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0432 \u044d\u0442\u0438 \u0431\u0435\u0437\u0434\u0443\u0448\u043d\u044b\u0435 \u0431\u0443\u043a\u043e\u0432\u043a\u0438 \u0432\u0434\u043e\u0445\u043d\u0443\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0436\u0438\u0437\u043d\u0438. \u041f\u043e \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u0438 \u0431\u0443\u0434\u0435\u043c \u043c\u0438\u0433\u0430\u0442\u044c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c.&nbsp;<\/p>\n<p>\u041a\u043e\u0434 \u043f\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e GPIO (\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0435\u0439) \u043d\u0430\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 SDK. \u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f NXP \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 416-\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0436\u0435\u043b\u0435\u0437\u044f\u0447\u043d\u043e\u0435 API (JN-UG-3087 JN516x Integrated Peripherals API User Guide).<\/p>\n<p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f. \u041f\u043e\u043a\u0430 \u043f\u0443\u0441\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0439 \u043a DIO17.<\/p>\n<pre><code class=\"cpp\">#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt;  #include \"AppHardwareApi.h\"  #define BOARD_LED_BIT               (17) #define BOARD_LED_PIN               (1UL &lt;&lt; BOARD_LED_BIT) #define BOARD_LED_CTRL_MASK         (BOARD_LED_PIN)   int main(void) { \t\/\/ Initialize hardware \tvAHI_DioSetDirection(0, BOARD_LED_CTRL_MASK); \tvAHI_DioSetOutput(0, BOARD_LED_PIN);  \treturn EXIT_SUCCESS; } <\/code><\/pre>\n<p>\u041c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438\u0437 API \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438<\/p>\n<pre><code class=\"cmake\">IF(NOT SDK_PREFIX)      MESSAGE(FATAL_ERROR \"No SDK_PREFIX specified\") ENDIF()   INCLUDE_DIRECTORIES( \t${SDK_PREFIX}\/Components\/Common\/Include \t${SDK_PREFIX}\/Components\/HardwareAPI\/Include )  LINK_DIRECTORIES( \t${SDK_PREFIX}\/Components\/Library )  ADD_DEFINITIONS( \t-DJENNIC_CHIP_NAME=_JN5169 \t-DJENNIC_CHIP_FAMILY_NAME=_JN516x )  ADD_EXECUTABLE(HelloWorld HelloWorld.cpp) TARGET_LINK_LIBRARIES(HelloWorld \tHardwareApi_JN5169 ) <\/code><\/pre>\n<p>\u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c, \u043f\u0440\u0430\u0432\u0434\u0430, \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Cmake &#8212; SDK_PREFIX, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u043a\u043e\u0440\u0435\u043d\u044c SDK.<\/p>\n<p>\u041f\u0440\u043e\u0448\u0438\u0432\u0430\u043b\u044c\u0449\u0438\u043a \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0442\u044c elf \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0437 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u044f \u0441\u043b\u044f\u043c\u0437\u0438\u043b \u0435\u0449\u0435 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u0438<\/p>\n<pre><code class=\"cmake\">FUNCTION(STM32_ADD_HEX_BIN_TARGETS TARGET)     IF(EXECUTABLE_OUTPUT_PATH)       SET(FILENAME \"${EXECUTABLE_OUTPUT_PATH}\/${TARGET}\")     ELSE()       SET(FILENAME \"${TARGET}\")     ENDIF()     ADD_CUSTOM_TARGET(${TARGET}.hex DEPENDS ${TARGET} COMMAND ${CMAKE_OBJCOPY} -Oihex ${FILENAME} ${FILENAME}.hex)     ADD_CUSTOM_TARGET(${TARGET}.bin DEPENDS ${TARGET} COMMAND ${CMAKE_OBJCOPY} -Obinary ${FILENAME} ${FILENAME}.bin) ENDFUNCTION() <\/code><\/pre>\n<p>\u041a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u044d\u0442\u0430 \u0448\u0442\u0443\u043a\u0430 \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0437\u0430\u043b\u0438\u0442\u044c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u0432 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440. \u042f \u043f\u043e\u043a\u0430 \u043d\u0435 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0441\u044c BeyondStudio. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (\u0437\u0430\u0436\u0430\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 BOOT, \u0438 \u043d\u0435 \u043e\u0442\u043f\u0443\u0441\u043a\u0430\u044f \u043d\u0430\u0436\u0430\u0442\u044c RESET), \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0437\u0430\u0439\u0442\u0438 \u0432 Devices-&gt;Program Device. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043a\u043e\u0448\u043a\u043e \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u043d\u0430\u043c\u0435\u043a\u0430\u0435\u0442 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u0442\u0430\u043a<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/67a\/79d\/4c0\/67a79d4c00d0740ab79b8530bf1d7f52.png\" width=\"688\" height=\"180\"><figcaption><\/figcaption><\/figure>\n<h2>Hello World \u043f\u043e \u0436\u0435\u043b\u0435\u0437\u044f\u0447\u043d\u043e\u043c\u0443. \u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u21162  <\/h2>\n<p>\u0421\u0430\u043c\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0430 \u043a\u0430\u043a \u0436\u0435 \u0441\u0430\u043c BeyondStudio \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u043f\u043e\u0434 \u043d\u0430\u0448 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440. \u0410 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0432 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u043c\u0430\u043c\u0430 \u043d\u0435 \u0433\u043e\u0440\u044e\u0439. \u042f \u0434\u0430\u0436\u0435 \u0432 \u0441\u043f\u043e\u0439\u043b\u0435\u0440 \u044d\u0442\u043e \u0437\u0430\u0442\u043e\u043b\u043a\u0430\u044e, \u0447\u0442\u043e\u0431\u044b \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0435 \u043b\u043e\u043f\u043d\u0443\u043b\u0430.<\/p>\n<details class=\"spoiler\">\n<summary>\u041a\u043b\u044e\u0447\u0438\u043a\u0438 \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 BeyondStudio (\u043c\u043e\u0442\u0430\u0439\u0442\u0435 \u0432\u043f\u0440\u0430\u0432\u043e)<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>Compiling \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/BDB\/Source\/FindAndBind\/bdb_fb_initiator.c ... \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/Tools\/ba-elf-ba2-r36379\/bin\/ba-elf-gcc -c -o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/bdb_fb_initiator.o -DCONFIG_MANUFACTURER_CODE=0x1037 -DCONFIG_APP_SW_VERSION=7                                                                      -DCONFIG_HW_VERSION=1                             -DCONFIG_MANUFACTURER_NAME=\\\"NXP\\\" -DCONFIG_MODEL_ID=\\\"DIMMER_SW\\\"                               -DCONFIG_DATE_CODE=\\\"10-31-2014\\\"               -DSINGLE_CHANNEL=0 -DKEEP_ALIVETIME=1 -DSLEEP_ENABLE -DDEEP_SLEEP_ENABLE -DDR1199 -DDimmerSwitch -DBUTTON_MAP_DR1199 -DSLEEPY_ZED -DEZ_MODE_INITIATOR -DEZ_ENABLE_GROUP -DDBG_ENABLE -DDEBUG_APP_BUTTON -DDEBUG_APP -DDEBUG_START_UP -DDEBUG_SWITCH_STATE -DDEBUG_SWITCH_TASK -DDEBUG_SWITCH_NODE -DDimmerSwitch -DPDM_USER_SUPPLIED_ID -DJN516x=5160 -DJN5169=5169 -DJENNIC_CHIP_NAME=_JN5169 -DJENNIC_CHIP_FAMILY_NAME=_JN516x -march=ba2 -mcpu=jn51xx -mredzone-size=4 -mbranch-cost=3 -fomit-frame-pointer -Os -fshort-enums -Wall  -Wpacked -Wcast-align -fdata-sections -ffunction-sections -DWATCHDOG_ENABLED -DJENNIC_HW_BBC_RXINCCA=1 -DJENNIC_HW_BBC_DMA=1 -DJENNIC_HW_BBC_ISA=0 -DJENNIC_SW_EXTERNAL_FLASH=0 -DJN516X_DMA_UART_BACKWARDS_COMPATIBLE_API=1 -DUART_BACKWARDS_COMPATIBLE_API=1 -DRXPOWERADJUST_SUPPORT -DJENNIC_CHIP=JN5169 -DJENNIC_CHIP_JN5169 -DJENNIC_CHIP_FAMILY=JN516x -DJENNIC_CHIP_FAMILY_JN516x -DJENNIC_STACK_ZCL -DJENNIC_MAC_MiniMacShim -Wall -Wunreachable-code -DEMBEDDED -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Platform\/Common\/Include -DJENNIC_PCB=DEVKIT4 -DJENNIC_PCB_DEVKIT4 -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Platform\/DK4\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/Common\/Include -DPDM_USER_SUPPLIED_ID -DPDM_NO_RTOS -DPDM_EEPROM -DDBG_ENABLE -DZPS_APL_OPT_SINGLE_INSTANCE -DOTA_NO_CERTIFICATE -DPLME_SAP -DZBPRO_DEVICE_TYPE_ZED -DBDB_SUPPORT_NWK_STEERING -DBDB_SUPPORT_FIND_AND_BIND_INITIATOR -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/Common_Switch\/Source -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/Common_Switch\/Source\/.. -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Source -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/Common\/Source -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/ZigbeeCommon\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/ZCL\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/ZCIF\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/Xcv\/Include\/ -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/Recal\/Include\/ -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/MicroSpecific\/Include  -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/HardwareAPI\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/AppApi\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/MAC\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/MiniMac\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/MMAC\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/HardwareAPI\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/Aes\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/DBG\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/Mac\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/MicroSpecific\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/MiniMAC\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/MMAC\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/TimerServer\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/Random\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/ZigbeeCommon\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/ZPSMAC_Mini_SOC\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/PWRM\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/ZPSTSV\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/AES_SW\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/PDUM\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/ZPSAPL\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/Random\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/PDM_EEPROM_NO_RTOS\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/DBG\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/ZPSNWK_ZED\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/PDM\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/ZPSMAC\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/ZPSNWK\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/ZigbeeCommon\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/ZCIF\/Source -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/ZCIF\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/ZCL\/Clusters\/General\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/ZCL\/Clusters\/General\/Source -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/ZCL\/Clusters\/MeasurementAndSensing\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/ZCL\/Clusters\/Lighting\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/ZCL\/Clusters\/HVAC\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/ZCL\/Clusters\/Closures\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/ZCL\/Clusters\/SecurityAndSafety\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/ZCL\/Clusters\/SmartEnergy\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/ZCL\/Clusters\/OTA\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/ZCL\/Clusters\/Commissioning\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/ZCL\/Clusters\/ApplianceManagement\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/ZCL\/Clusters\/GreenPower\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/ZCL\/Clusters\/Private\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/ZCL\/Devices\/ZHA\/Generic\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/ZCL\/Devices\/ZLO\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/BDB\/Include -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/BDB\/Source\/Common -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/BDB\/Source\/NwkSteering -I\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/BDB\/Source\/FindAndBind \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/BDB\/Source\/FindAndBind\/bdb_fb_initiator.c -MD -MF \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/bdb_fb_initiator.d -MP  Linking \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/DimmerSwitch_JN5169_DR1199.elf ... \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/Tools\/ba-elf-ba2-r36379\/bin\/ba-elf-gcc -Wl,--gc-sections -Wl,-u_AppColdStart -Wl,-u_AppWarmStart -march=ba2 -mcpu=jn51xx -mredzone-size=4 -mbranch-cost=3 -fomit-frame-pointer -Os -fshort-enums -nostartfiles -L\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Chip\/JN5169\/Build -L\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Chip\/JN5169\/Library -L\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Platform\/DK4\/Library -L\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Components\/Library -Wl,--gc-sections -L\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Stack\/ZBPro\/Build -Wl,--defsym=__stack_size=5000 -Wl,--defsym,__minimum_heap_size=2000 -TAppBuildZBPro.ld -L \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/JN-SW-4170\/Stack\/ZCL\/Build\/ -o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/DimmerSwitch_JN5169_DR1199.elf -Wl,--start-group \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/irq_JN516x.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/portasm_JN516x.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/port_JN516x.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/pdum_gen.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/pdum_apdu.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zps_gen.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/app_pdm.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/app_main.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/app_start_switch.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/App_DimmerSwitch.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/app_zlo_switch_node.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/app_zcl_switch_task.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/app_buttons.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/app_switch_state_machine.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/app_pdm_convert.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/ZQueue.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/ZTimer.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/app_zps_link_keys.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/Alarms.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/AlarmsClientCommands.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/AlarmsCommandHandler.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/AlarmsServerCommands.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/AlarmsTableManager.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/AnalogInputBasic.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/AnalogOutputBasic.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/Basic.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/BasicClientCommands.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/BasicCommandHandler.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/BinaryInputBasic.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/BinaryOutputBasic.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/DeviceTemperatureConfiguration.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/Diagnostics.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/Groups.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/GroupsClientCommands.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/GroupsCommandHandler.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/GroupsServerCommands.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/GroupsTableManager.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/Identify.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/IdentifyClientCommands.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/IdentifyCommandHandler.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/IdentifyServerCommands.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/LevelControl.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/LevelControlClientCommands.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/LevelControlCommandHandler.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/MultistateInputBasic.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/MultistateOutputBasic.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/OOSC.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/OnOff.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/OnOffCommandHandler.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/OnOffCommands.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/PollControl.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/PollControlClientCommands.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/PollControlCommandHandler.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/PollControlServerCommands.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/PowerConfiguration.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/PowerProfile.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/PowerProfileClientCommands.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/PowerProfileCommandHandler.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/PowerProfileServerCommands.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/Scenes.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/ScenesClientCommands.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/ScenesClusterManagement.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/ScenesCommandHandler.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/ScenesServerCommands.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/ScenesTableManager.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/TC.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/Time.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/base_device.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/mains_power_outlet.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/on_off_output.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/plug_control.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/remote_control.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/simple_sensor.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/BallastConfiguration.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/ColourControl.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/ColourControlClientCommands.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/ColourControlCommandHandler.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/ColourControlConversions.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/colour_controller.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/colour_dimmable_light.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/colour_dimmer_switch.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/colour_scene_controller.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/colour_temperature_light.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/commission_endpoint.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/control_bridge.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/dimmable_ballast.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/dimmable_light.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/dimmable_plug.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/dimmer_switch.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/extended_colour_light.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/light_level_sensor.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/light_sensor.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/non_colour_controller.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/non_colour_scene_controller.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/occupancy_sensor.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/on_off_ballast.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/on_off_light.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/on_off_light_switch.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/on_off_plug.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/on_off_sensor.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/privateCluster.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/dlist.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_CustomCommandReceive.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_CustomCommandSend.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_PDUbufferReadWrite.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_PDUbufferReadWriteString.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_WriteAttributesRequestHandle.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_WriteAttributesRequestSend.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_WriteAttributesResponseHandle.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_attribute.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_buffer.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_clusterCommand.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_command.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_common.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_configureReportingCommandHandle.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_configureReportingCommandSend.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_configureReportingResponseHandle.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_defaultResponse.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_discoverAttributesExtendedRequestHandle.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_discoverAttributesExtendedRequestSend.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_discoverAttributesExtendedResponseHandle.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_discoverAttributesRequestHandle.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_discoverAttributesRequestSend.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_discoverAttributesResponseHandle.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_discoverCommandsRequestHandle.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_discoverCommandsRequestSend.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_discoverCommandsResponseHandle.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_event.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_heap.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_library_options.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_readAttributesRequestHandle.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_readAttributesRequestSend.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_readAttributesResponseHandle.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_readReportingConfigurationCommandHandle.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_readReportingConfigurationCommandSend.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_readReportingConfigurationResponseHandle.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_reportManager.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_reportMaths.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_reportScheduler.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_reportStringHandling.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_reportStructure.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_search.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_timer.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/zcl_transmit.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/bdb_fr.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/bdb_start.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/bdb_state_machine.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/appZpsBeaconHandler.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/appZdpExtraction.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/bdb_ns.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/bdb_fb_common.o \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/bdb_fb_initiator.o -lZPSMAC_Mini_SOC_JN516x -lPWRM_JN516x -lZPSTSV_JN516x -lAES_SW_JN516x -lPDUM_JN516x -lZPSAPL_JN516x -lRandom_JN516x -lPDM_EEPROM_NO_RTOS_JN516x -lDBG_JN516x -lZPSNWK_ZED_JN516x -lRecal_JN516x -lJPT_JN5169 -lMiniMac_JN5169 -lMiniMacShim_JN516x -lMMAC_JN5169 -lJPT_JN5169 -lAes_JN516x -lHardwareApi_JN5169 -lMicroSpecific_JN516x -lBoot_JN516x -lBoardLib_JN516x -lm -Wl,--end-group -Wl,-Map,\/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/DimmerSwitch_JN5169_DR1199.map \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/Tools\/ba-elf-ba2-r36379\/bin\/ba-elf-size \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/DimmerSwitch_JN5169_DR1199.elf    text    data     bss     dec     hex filename  139470    1624   23149  164243   28193 d:\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/DimmerSwitch_JN5169_DR1199.elf date +%c &gt;&gt; \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/Doc\/size.txt \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/Tools\/ba-elf-ba2-r36379\/bin\/ba-elf-size \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/DimmerSwitch_JN5169_DR1199.elf &gt;&gt; \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/Doc\/size.txt Generating binary ... \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/sdk\/Tools\/ba-elf-ba2-r36379\/bin\/ba-elf-objcopy -j .version -j .bir -j .flashheader -j .vsr_table -j .vsr_handlers  -j .rodata -j .text -j .data -j .bss -j .heap -j .stack -S -O binary \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/DimmerSwitch_JN5169_DR1199.elf \/d\/Projects\/NXP\/JN5169-for-xiaomi-wireless-switch\/Application\/JN-AN-1219-Zigbee-3-0-Controller-and-Switch\/DimmerSwitch\/Build\/DimmerSwitch_JN5169_DR1199.bin<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0442\u0443\u0442 \u0432\u0430\u0436\u043d\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b), \u0442\u043e\u0433\u0434\u0430 \u043a\u0430\u043a \u0434\u0440\u0443\u0433\u0438\u0435 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u0438 \u043d\u0435\u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u044b \u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0437\u0430\u0431\u0440\u0430\u0442\u044c \u0441\u0435\u0431\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c\u044b\u0435 \u043d\u0443\u0436\u043d\u044b\u0435<\/p>\n<pre><code class=\"cmake\">SET(CMAKE_C_FLAGS \"-march=ba2 -mcpu=jn51xx -mredzone-size=4 -mbranch-cost=3 -fomit-frame-pointer -fshort-enums -Wall -Wpacked -Wcast-align -fdata-sections -ffunction-sections\" CACHE INTERNAL \"c compiler flags\") SET(CMAKE_CXX_FLAGS \"-march=ba2 -mcpu=jn51xx -mredzone-size=4 -mbranch-cost=3 -fomit-frame-pointer -fshort-enums -Wall -Wpacked -Wcast-align -fdata-sections -ffunction-sections\" CACHE INTERNAL \"cxx compiler flags\") SET(CMAKE_ASM_FLAGS \"-march=ba2 -mcpu=jn51xx -mredzone-size=4 -mbranch-cost=3 -fomit-frame-pointer -fshort-enums -Wall -Wpacked -Wcast-align -fdata-sections -ffunction-sections\" CACHE INTERNAL \"asm compiler flags\") SET(CMAKE_EXE_LINKER_FLAGS \"-Wl,--gc-sections -Wl,-u_AppColdStart -Wl,-u_AppWarmStart -march=ba2 -mcpu=jn51xx -mredzone-size=4 -mbranch-cost=3 -fomit-frame-pointer -Os -fshort-enums -nostartfiles -Wl,--gc-sections -Wl,--defsym=__stack_size=5000 -Wl,--defsym,__minimum_heap_size=2000 \" CACHE INTERNAL \"executable linker flags\")<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0432 \u0432\u044b\u0437\u043e\u0432\u0435 objcopy \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u044f\u0432\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0447\u0435\u043c \u0443 \u043c\u0435\u043d\u044f &#8212; \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u0431\u0435\u0440\u0435\u043c \u0438\u0445 \u043a \u0441\u0435\u0431\u0435 (\u0445\u043e\u0442\u044f \u043a\u0430\u043a \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u043e\u043d\u0438 \u043c\u0430\u043b\u043e \u043d\u0430 \u0447\u0442\u043e \u0432\u043b\u0438\u044f\u044e\u0442)<\/p>\n<pre><code class=\"cmake\">ADD_CUSTOM_TARGET(${TARGET}.bin DEPENDS ${TARGET} COMMAND ${CMAKE_OBJCOPY} -j .version -j .bir -j .flashheader -j .vsr_table -j .vsr_handlers  -j .rodata -j .text -j .data -j .bss -j .heap -j .stack -S -O binary ${FILENAME} ${FILENAME}.bin)<\/code><\/pre>\n<p>\u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0441\u044f \u044d\u0442\u0430 \u0448\u0442\u0443\u043a\u0430 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043d\u0435 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430. \u041d\u0443\u0436\u043d\u043e \u043a\u043e\u043f\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435.  <\/p>\n<h2>Hello World \u043f\u043e \u0436\u0435\u043b\u0435\u0437\u044f\u0447\u043d\u043e\u043c\u0443. \u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u21163  <\/h2>\n<p>\u0415\u0449\u0435 \u0440\u0430\u0437\u043e\u043a \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a\u0430 \u0438 \u0432\u0438\u0434\u0438\u043c \u043a\u043b\u044e\u0447\u0438\u043a -TAppBuildZBPro.ld. \u041d\u0443 \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u044f \u0437\u0430\u0431\u044b\u043b \u0441\u043a\u0440\u0438\u043f\u0442 \u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a\u0430!&nbsp;<\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u043f\u0438\u0448\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u043f\u0443\u0441\u043a\u0430\u0439 \u0434\u0430\u0436\u0435 \u0441\u0430\u043c\u0443\u044e \u043f\u0440\u043e\u0441\u0442\u0443\u044e, \u0432\u0440\u043e\u0434\u0435 Hello World, \u043d\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440. \u041e\u043d \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434. \u041d\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u0430\u043b\u043e &#8212; \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432 \u043f\u0430\u043c\u044f\u0442\u0438, \u0447\u0442\u043e\u0431\u044b \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0435\u0433\u043e \u0441\u043c\u043e\u0433 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c. \u0412 \u044d\u0442\u043e\u043c \u043d\u0430\u043c \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a. \u0410 \u0434\u0435\u043b\u0430\u0435\u0442 \u043e\u043d \u044d\u0442\u043e \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0443, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u043f\u043e \u043a\u0430\u043a\u0438\u043c \u0430\u0434\u0440\u0435\u0441\u0430\u043c \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u043a\u043e\u0434, \u0433\u0434\u0435 \u0441\u0442\u0435\u043a, \u0433\u0434\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439, \u0433\u0434\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u0433\u0434\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b.&nbsp;<\/p>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438, \u0442\u0430\u043c \u0436\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u0444\u043e\u0440\u043c\u0430\u0442 \u0431\u0438\u043d\u0430\u0440\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c: \u0441\u043a\u0440\u0438\u043f\u0442 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043a\u0430\u043a\u0438\u0435 \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u0433\u0434\u0435 \u0440\u0430\u0437\u043b\u043e\u0436\u0438\u0442\u044c, \u043f\u043e \u043a\u0430\u043a\u0438\u043c \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f\u043c \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0435\u043a\u0446\u0438\u0438 \u043a\u043e\u0434\u0430 \u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u0438 \u043a\u0430\u043a \u0438\u0445 \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435. \u0418\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u044d\u0442\u043e, \u043f\u043e\u0445\u043e\u0436\u0435, \u0438 \u0440\u0443\u0433\u0430\u043b\u0441\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u0430\u043b\u044c\u0449\u0438\u043a.<\/p>\n<p>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043c \u044d\u0442\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 \u043a \u0441\u0435\u0431\u0435 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u043a\u043b\u044e\u0447\u0438\u043a -TAppBuildZBPro.ld \u0432 CMAKE_EXE_LINKER_FLAGS<\/p>\n<pre><code>c:\/nxp\/bstudio_nxp\/sdk\/tools\/ba-elf-ba2-r36379\/bin\/..\/lib\/gcc\/ba-elf\/4.7.4\/..\/..\/..\/..\/ba-elf\/bin\/ld.exe: invalid data statement collect2.exe: error: ld returned 1 exit status<\/code><\/pre>\n<p>\u041d\u0438 \u0442\u0435\u0431\u0435 \u0432\u043d\u044f\u0442\u043d\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0438, \u043d\u0438 \u043d\u043e\u043c\u0435\u0440\u0430 \u0441\u0442\u0440\u043e\u0447\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0435\u043c\u0443 \u043d\u0435 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0430\u0441\u044c.<\/p>\n<p>\u042f \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u043f\u043e\u043a\u0443\u0440\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a\u0430, \u043d\u043e \u0442\u0430\u043c \u044f \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0441\u0438\u043b\u0435\u043d. \u0412 \u043e\u0431\u0449\u0435\u043c, \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u0447\u0435\u0433\u043e. \u042f \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u0447\u0430\u043b \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043a\u043b\u044e\u0447\u0438\u043a\u0438 \u0432 \u043d\u0430\u0434\u0435\u0436\u0434\u0435 \u043d\u0430\u0439\u0442\u0438 \u043d\u0443\u0436\u043d\u044b\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043f\u0430\u0441\u0435\u0442 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e, \u043f\u043e\u043f\u0443\u0442\u043d\u043e \u043f\u044b\u0442\u0430\u044f\u0441\u044c \u043f\u043e\u043d\u044f\u0442\u044c \u0437\u0430 \u0447\u0442\u043e \u043e\u043d\u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442. \u042f \u0442\u0430\u043a \u0438 \u043d\u0435 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0441\u044f \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0435\u043c\u0443 \u043c\u0435\u0448\u0430\u043b\u043e, \u043d\u043e \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u043e\u0432 \u043c\u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u044d\u0442\u0443 \u0448\u0442\u0443\u043a\u0443. \u0414\u0435\u043b\u043e \u0432\u043e\u0442 \u0432 \u0447\u0435\u043c.<\/p>\n<p>\u041f\u043e\u043c\u0438\u043c\u043e \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0447\u0435\u0433\u043e \u0432 \u044d\u0442\u043e\u043c \u0441\u043a\u0440\u0438\u043f\u0442\u0435 \u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u0442\u043e\u0447\u043a\u0430 \u0432\u0445\u043e\u0434\u0430. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u043e \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e main() \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0435\u0449\u0435 \u043a\u043e\u0435 \u043a\u0430\u043a\u0443\u044e \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e &#8212; \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 CPU, \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u044c, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u0441\u0442\u0435\u043a\u0430 \u0438 \u043a\u0443\u0447\u0438. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0432\u0440\u043e\u0434\u0435 _start() \u0438\u043b\u0438 \u0441 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c. \u0421\u043a\u0440\u0438\u043f\u0442 \u043e\u0442 NXP \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 2 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 AppColdStart \u0438 AppWarmStart, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 libPWRM_JN516x.a (\u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u043e\u0442 \u043d\u0435\u0435 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 SDK \u043d\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f). \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0432 \u044d\u0442\u0443 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0432\u0438\u0434\u0438\u043c<\/p>\n<pre><code>pwrm_cold_start.c:(.text.AppColdStart+0xc): undefined reference to `vAppRegisterPWRMCallbacks' pwrm_cold_start.c:(.text.AppColdStart+0xc): relocation truncated to fit: R_BA_18_PCREL against undefined symbol `vAppRegisterPWRMCallbacks' pwrm_cold_start.c:(.text.AppColdStart+0x1b): undefined reference to `vAppMain' pwrm_cold_start.c:(.text.AppColdStart+0x1b): relocation truncated to fit: R_BA_10_PCREL against undefined symbol `vAppMain'<\/code><\/pre>\n<p>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043d\u0430\u0448\u043b\u043e\u0441\u044c \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435 JN-UG-3116 JN51xx Core Utilities User Guide. \u0421\u0443\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 libPWRM_JN516x.a \u043a\u0430\u043a \u0440\u0430\u0437 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e main() \u044d\u0442\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 vAppMain(). \u041d\u0443 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043d\u0430\u043c \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e.<\/p>\n<pre><code class=\"cpp\">PUBLIC void vAppMain(void) { \tint i;  \t\/\/ Initialize hardware \tvAHI_DioSetDirection(0, BOARD_LED_CTRL_MASK);   \twhile(1) \t{ \t\tvAHI_DioSetOutput(0, BOARD_LED_PIN);  \t\tfor(i=0; i&lt;200000; i++) \t\t        vAHI_DioSetOutput(0, BOARD_LED_PIN);  \t\tvAHI_DioSetOutput(BOARD_LED_PIN, 0);  \t\tfor(i=0; i&lt;1000000; i++) \t\t        vAHI_DioSetOutput(BOARD_LED_PIN, 0); \t} } <\/code><\/pre>\n<p>\u0412 \u0441\u0430\u043c\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 vAppMain() \u044f \u0443\u0436\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u043c\u043e\u0440\u0433\u0430\u043b\u043a\u0443. \u041f\u043e\u043a\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u0435\u0449\u0435 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b, \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c vAHI_DioSetOutput() \u0432 \u0446\u0438\u043a\u043b\u0435. \u041f\u0443\u0441\u0442\u043e\u0439 for, \u043f\u043e\u0445\u043e\u0436\u0435, \u0441\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f (\u0438\u043b\u0438 \u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0439 \u043d\u0435\u0432\u0435\u0440\u043d\u043e \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u043b) \u0438 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0432\u0435\u0442\u0438\u043b\u0441\u044f.<\/p>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438, \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 vAHI_DioSetOutput \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043e\u043d\u0430 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0431\u0438\u0442\u044b \u043d\u0430 \u043f\u043e\u0440\u0442\u0430\u0445 (\u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435) \u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u0442 (\u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0435, \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0440\u0430\u0437\u043d\u044b\u0439).<\/p>\n<p>\u0415\u0449\u0435 \u043d\u0443\u0436\u043d\u0430 vAppRegisterPWRMCallbacks() &#8212; \u043e\u043d\u0430 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0432\u0441\u044f\u043a\u0438\u0445 \u0437\u0430\u0441\u044b\u043f\u0430\u043d\u0438\u0439\/\u043f\u0440\u043e\u0441\u044b\u043f\u0430\u043d\u0438\u0439. \u041d\u043e \u043d\u0430\u043c \u043f\u043e\u043a\u0430 \u044d\u0442\u043e \u043d\u0435 \u043d\u0443\u0436\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043e\u0431\u044a\u044f\u0432\u0438\u043c \u043f\u0443\u0441\u0442\u043e\u0439.<\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043f\u0440\u043e\u0448\u0438\u0432\u0430\u043b\u044c\u0449\u0438\u043a \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u0438\u043b\u0441\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0430, \u0430 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \u043d\u0430 \u043c\u0430\u043a\u0435\u0442\u043a\u0435 \u0440\u0430\u0434\u043e\u0441\u0442\u043d\u043e \u0437\u0430\u043c\u043e\u0440\u0433\u0430\u043b.<\/p>\n<h2>Hello Debug UART  <\/h2>\n<p>\u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0441\u0430\u043c\u044b\u0439 \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u044d\u0442\u0430\u043f \u043f\u043e\u0437\u0430\u0434\u0438. \u041d\u043e \u043c\u044b \u0436\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u043e\u043c, \u0432\u0435\u0440\u043d\u043e? \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0435\u0449\u0435 \u0447\u0442\u043e \u043d\u0438\u0431\u0443\u0434\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435 \u0432 \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 UART \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. \u0414\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u0442 \u0436\u0435 UART, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438. \u041f\u0440\u043e\u0441\u0442\u043e \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0446\u0435\u043f\u043b\u044f\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u0430 \u0438 USB-UART \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043d\u0438\u043a.<\/p>\n<p>\u041f\u0440\u043e\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u044c \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0438 UART0 \u043d\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c 115200 (\u043c\u043e\u0436\u043d\u043e \u0438 \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u043d\u043e \u0442\u0430\u043c \u0435\u0449\u0435 \u043a\u043e\u0435 \u043a\u0430\u043a\u0438\u0435 \u0442\u0435\u043b\u043e\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u044b &#8212; \u043f\u043e\u0438\u0449\u0438\u0442\u0435 vAppMain \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445). \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0432\u044b\u0437\u043e\u0432\u044b DBG_vPrintf \u0432 \u043a\u043e\u0434 \u0438 \u043f\u0435\u0447\u0430\u0442\u0430\u0442\u044c \u0447\u0442\u043e \u043d\u0430\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f.<\/p>\n<pre><code class=\"cpp\">PUBLIC void vAppMain(void) {     int i;     int iteration = 0;      \/\/ Initialize UART     DBG_vUartInit(DBG_E_UART_0, DBG_E_UART_BAUD_RATE_115200);      \/\/ Initialize hardware     vAHI_DioSetDirection(0, BOARD_LED_CTRL_MASK);       while(1)     {         DBG_vPrintf(TRUE, \"Blink iteration %d\\n\", iteration++);          vAHI_DioSetOutput(0, BOARD_LED_PIN);          for(i=0; i&lt;1000000; i++)             vAHI_DioSetOutput(0, BOARD_LED_PIN);          vAHI_DioSetOutput(BOARD_LED_PIN, 0);          for(i=0; i&lt;1000000; i++)             vAHI_DioSetOutput(BOARD_LED_PIN, 0);     } }<\/code><\/pre>\n<p>\u041f\u0435\u0440\u0432\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u0432 DBG_vPrintf \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c\/\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u0435\u0447\u0430\u0442\u0438 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043f\u0440\u0438\u0447\u0435\u043c \u043f\u0440\u044f\u043c\u043e \u0432 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435. \u042d\u0442\u043e \u043f\u0440\u0438\u043a\u043e\u043b\u044c\u043d\u043e.<\/p>\n<p>\u041a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c&#8230;. \u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u0438\u043d\u0430\u0440\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f. \u0417\u0430\u0433\u043b\u044f\u043d\u0443\u0432 \u0432 dbg.h \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u0432\u0435\u0441\u044c \u0434\u0435\u0431\u0430\u0436\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0434\u0435\u0444\u0430\u0439\u043d\u043e\u043c DBG_ENABLE. \u041d\u0443\u0436\u043d\u043e \u0435\u0433\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0446\u0435\u043b\u0443\u044e \u043f\u0430\u0447\u043a\u0443 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a.<\/p>\n<pre><code class=\"cmake\">TARGET_LINK_LIBRARIES(HelloWorld             -Wl,--start-group              PWRM_JN516x             HardwareApi_JN5169             DBG_JN516x             Boot_JN516x              -Wl,--end-group ) <\/code><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0437\u0430\u0442\u043e\u043b\u043a\u0430\u0442\u044c \u0432 \u0433\u0440\u0443\u043f\u043f\u0443. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043b\u0438\u043d\u043a\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0432\u044b\u0431\u0438\u0440\u0430\u044f \u0438\u0437 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u043d\u0443\u0436\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b (\u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442). \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e \u043a \u0443\u0436\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c \u043b\u0438\u043d\u043a\u0435\u0440 \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 DBG_JN516x \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 UART \u0438\u0437 HardwareApi_JN5169, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u0436\u0435 \u0431\u044b\u043b\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 unresolved externals \u0444\u0443\u043d\u043a\u0446\u0438\u0439 UART. \u041a\u043b\u044e\u0447\u0438\u043a\u0430\u043c\u0438 -Wl,&#8212;start-group\/-Wl,&#8212;end-group \u043c\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043b\u0438\u043d\u043a\u0435\u0440\u0443, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0441\u043f\u0435\u0448\u0438\u043b \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u0443\u0436\u0435 \u043f\u0440\u043e\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0430 \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0432\u0441\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0432 \u0433\u0440\u0443\u043f\u043f\u0435 \u043a\u0430\u043a \u043e\u0434\u043d\u0443 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443. \u0422\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 \u043d\u0443\u0436\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f.<\/p>\n<p>\u0420\u0430\u0437\u043c\u0435\u0440 \u0431\u0438\u043d\u0430\u0440\u044f \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u043b\u0441\u044f, \u0438 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0437\u0430\u0432\u0435\u0442\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u0447\u043a\u0438.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f25\/f88\/3f9\/f25f883f9769ae30ff949da790b86858.png\" width=\"505\" height=\"398\"><figcaption><\/figcaption><\/figure>\n<h2>Hello Watchdog  <\/h2>\n<p>\u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u043c, \u0447\u0442\u043e \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0443\u043c\u0435\u0435\u0442 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e 7?<\/p>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0442\u0443\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u0442\u043e\u0440\u043e\u0436\u0435\u0432\u043e\u0439 \u0442\u0430\u0439\u043c\u0435\u0440. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0442\u043e\u0440\u043e\u0436\u0435\u0432\u043e\u0439 \u0442\u0430\u0439\u043c\u0435\u0440 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0438 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0447\u0435\u0440\u0435\u0437 16 \u0441\u0435\u043a\u0443\u043d\u0434. \u0412\u0441\u0435 \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u0442\u043e\u0440\u043e\u0436\u0435\u0432\u043e\u0439 \u0442\u0430\u0439\u043c\u0435\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 vAHI_WatchdogRestart().<\/p>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438 \u0433\u043e\u0432\u043e\u0440\u044f, \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 bAHI_WatchdogResetEvent() \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u043f\u0440\u0438\u0447\u0438\u043d\u0443 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 &#8212; \u0431\u044b\u043b\u043e \u044d\u0442\u043e \u043f\u043e \u0441\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0442\u0430\u0439\u043c\u0435\u0440\u0430, \u0438\u043b\u0438 \u043f\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435.<\/p>\n<pre><code class=\"cpp\">PUBLIC void vAppMain(void) {     int i;     int iteration = 0;     int debugEnabled = 1;      \/\/ Initialize UART     DBG_vUartInit(DBG_E_UART_0, DBG_E_UART_BAUD_RATE_115200);      \/\/ Initialize hardware     vAHI_DioSetDirection(0, BOARD_LED_CTRL_MASK);      if (bAHI_WatchdogResetEvent())     {         DBG_vPrintf(TRUE, \"APP: Watchdog timer has reset device!\\n\");         DBG_vDumpStack();     }         while(1)     {         DBG_vPrintf(debugEnabled, \"Blink iteration %d\\n\", iteration++);          vAHI_DioSetOutput(0, BOARD_LED_PIN);          for(i=0; i&lt;1000000; i++)             vAHI_DioSetOutput(0, BOARD_LED_PIN);          vAHI_DioSetOutput(BOARD_LED_PIN, 0);          for(i=0; i&lt;1000000; i++)            vAHI_DioSetOutput(BOARD_LED_PIN, 0);          vAHI_WatchdogRestart();     } } <\/code><\/pre>\n<h2>Hello software timers  <\/h2>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0438 \u0434\u0440\u0443\u0433\u0430\u044f \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 &#8212; \u0442\u0430\u0439\u043c\u0435\u0440\u044b, \u0428\u0418\u041c, SPI, \u0410\u0426\u041f, \u0438 \u0447\u0442\u043e \u0442\u0430\u043c \u0435\u0449\u0435 \u0435\u0441\u0442\u044c \u0443 JN5169. \u041d\u0435 \u0431\u0443\u0434\u0443 \u0441\u0435\u0439\u0447\u0430\u0441 \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u043d\u0430 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043c\u043d\u0435 \u0431\u044b \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u043e\u043a\u043e\u043f\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0448\u0442\u0443\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u043e\u0442 NXP. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0435 \u0442\u0430\u0439\u043c\u0435\u0440\u044b.<\/p>\n<p>\u0422\u0430\u0439\u043c\u0435\u0440\u044b \u0438\u0434\u0443\u0442 \u0432 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u0435 \u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 ZigBee \u0441\u0442\u0435\u043a\u0430 \u043e\u0442 NXP, \u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435 JN-UG-3113 ZigBee 3.0 Stack User Guide. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430\u0448\u0443 \u043c\u043e\u0440\u0433\u0430\u043b\u043a\u0443 \u043d\u0430 \u0442\u0430\u0439\u043c\u0435\u0440\u0430\u0445.<\/p>\n<pre><code>ZTIMER_tsTimer timers[1]; uint8 blinkTimerHandle;  PUBLIC void vAppMain(void) { \t\/\/ Initialize UART \tDBG_vUartInit(DBG_E_UART_0, DBG_E_UART_BAUD_RATE_115200);  \t\/\/ Initialize hardware \tvAHI_DioSetDirection(0, BOARD_LED_CTRL_MASK);  \t\/\/ Init and start timers \tZTIMER_eInit(timers, sizeof(timers) \/ sizeof(ZTIMER_tsTimer)); \tZTIMER_eOpen(&amp;blinkTimerHandle, blinkFunc, NULL, ZTIMER_FLAG_PREVENT_SLEEP); \tZTIMER_eStart(blinkTimerHandle, ZTIMER_TIME_MSEC(1000));  \twhile(1) \t{ \t\tZTIMER_vTask();  \t\tvAHI_WatchdogRestart(); \t} }  <\/code><\/pre>\n<p>\u0412 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 vAppMain() \u043e\u0431\u044a\u044f\u0432\u0438\u043c, \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c, \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u043d\u0430\u0448 \u0442\u0430\u0439\u043c\u0435\u0440. \u0422\u0430\u0439\u043c\u0435\u0440\u043e\u0432 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e, \u0438 \u0432\u0441\u0435 \u043e\u043d\u0438 \u0436\u0438\u0432\u0443\u0442 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 timers. \u0412 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e ZTIMER_vTask(), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0435 \u0442\u0430\u0439\u043c\u0435\u0440\u044b \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0435 \u0432\u044b\u0437\u043e\u0432\u044b.&nbsp;<\/p>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438 \u043e\u0431 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u0430\u0445. \u041d\u0443\u0436\u043d\u043e \u0436\u0435, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043c\u043e\u0440\u0433\u0443\u043b\u044c\u043a\u0443 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c.<\/p>\n<pre><code class=\"cpp\">PUBLIC void blinkFunc(void *pvParam) { \tstatic int iteration = 0; \tDBG_vPrintf(TRUE, \"Blink iteration %d\\n\", iteration++); \t \tuint32 currentState = u32AHI_DioReadInput(); \tvAHI_DioSetOutput(currentState^BOARD_LED_PIN, currentState&amp;BOARD_LED_PIN); } <\/code><\/pre>\n<p>\u0422\u0443\u0442, \u043a\u0441\u0442\u0430\u0442\u0438, \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u043e\u0437\u0438\u0442\u044c\u0441\u044f \u0441 \u0431\u0438\u0442\u043e\u0432\u043e\u0439 \u043c\u0430\u0433\u0438\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 vAHI_DioSetOutput(), \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430.<\/p>\n<p>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 ZigBee \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445, \u0430 \u043f\u043e\u0442\u043e\u043c\u0443 \u0435\u0435 \u043d\u0443\u0436\u043d\u043e \u044f\u0432\u043d\u043e \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0412 \u0441\u0432\u043e\u0435\u043c CMakeLists.txt \u044f \u0432\u044b\u0434\u0435\u043b\u0438\u043b \u0435\u0435 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443.<\/p>\n<pre><code class=\"cmake\">################################ # Common settings  ADD_DEFINITIONS( \t-DJENNIC_CHIP_NAME=_JN5169 \t-DJENNIC_CHIP_FAMILY_NAME=_JN516x \t-DJENNIC_CHIP_FAMILY_JN516x \t-DJENNIC_CHIP_FAMILY=JN516x \t-DJN516x=5160 \t-DDBG_ENABLE \t-DEMBEDDED )   ################################ # Zigbee Library  SET(ZIGBEE_SRC \t${SDK_PREFIX}\/Components\/ZigbeeCommon\/Source\/ZTimer.c ) ADD_LIBRARY(ZigBee STATIC ${ZIGBEE_SRC}) TARGET_INCLUDE_DIRECTORIES(ZigBee PRIVATE \t${SDK_PREFIX}\/Components\/PWRM\/Include )<\/code><\/pre>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u043e \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0444\u0430\u0439\u043d\u043e\u0432 \u0441\u043e \u0441\u043b\u043e\u0432\u043e\u043c JN5169 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c &#8212; \u0431\u0435\u0437 \u043d\u0438\u0445 \u043d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f. \u041f\u043e\u0434\u043e\u0437\u0440\u0435\u0432\u0430\u044e, \u0447\u0442\u043e \u044d\u0442\u043e \u0435\u0449\u0435 \u043d\u0435 \u0432\u0441\u0435, \u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f.<\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043a\u043e\u0434, \u0438\u0438\u0438\u0438\u0438&#8230; \u041a\u0430\u043a \u0432\u044b \u0443\u0436\u0435 \u0434\u043e\u0433\u0430\u0434\u0430\u043b\u0438\u0441\u044c, \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041f\u043e\u0441\u043b\u0435 \u0442\u0449\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0442\u0430\u0439\u043c\u0435\u0440\u043e\u0432 (\u0431\u043b\u0430\u0433\u043e \u0435\u0441\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438), \u0432\u044b\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0442\u0430\u0439\u043c\u0435\u0440\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f tick timer\u2019\u0430 (\u0435\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0438\u0434 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0442\u0430\u0439\u043c\u0435\u0440\u0430 \u0432 JN5169). \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0441\u043a\u0440\u044b\u0442\u0438\u0435 \u0431\u0438\u043d\u0430\u0440\u044f \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e, \u0447\u0442\u043e \u043a\u043e\u0434 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0432 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u043d\u0435 \u043f\u043e\u043f\u0430\u043b. \u041a\u0430\u043a \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e.<\/p>\n<p>\u041b\u0435\u0437\u0435\u043c \u0432 \u043a\u043e\u0434 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432, \u0438 \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u043e\u0438\u0441\u043a\u043e\u0432 \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u0444\u0430\u0439\u043b\u0438\u043a irq_JN516x.S, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u043a \u043e\u043d\u0430 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443? \u0421\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u043c\u044b \u043c\u043e\u0436\u0435\u043c, \u043d\u043e \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0438\u043a\u0442\u043e \u043d\u0430 \u044d\u0442\u0443 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043d\u0435 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043b\u0438\u043d\u043a\u0435\u0440 \u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u0438\u0437 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438.&nbsp;<\/p>\n<p>\u041d\u043e \u0435\u0441\u0442\u044c \u0437\u0430\u0446\u0435\u043f\u043a\u0430: \u0432 \u0442\u043e\u043c \u0436\u0435 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0440\u044f\u0434\u043e\u043c \u0435\u0441\u0442\u044c \u0435\u0449\u0435 \u043e\u0434\u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u044b \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 &#8212; PIC_ChannelPriorities, \u0438 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u044d\u0442\u0443 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043d\u0435\u0436\u043d\u043e \u0437\u0430\u0432\u0435\u0440\u043d\u0443\u0442\u0430 \u0432 \u043a\u0443\u0441\u043e\u043a \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u0430\u043a\u0440\u043e\u0441\u0430 TARGET_INITIALISE(). \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0437\u0432\u0443\u0447\u0438\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0431\u043d\u0430\u0434\u0435\u0436\u0438\u0432\u0430\u044e\u0449\u0435, \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u043c\u0430\u043a\u0440\u043e\u0441 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0437 vAppMain() \u0432 \u043a\u043e\u0434\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432. \u0426\u0435\u043f\u043e\u0447\u043a\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0442\u0430\u043a\u0436\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0444\u0430\u0439\u043b portasm_JN516x.S, \u0433\u0434\u0435 \u043a\u0430\u043a \u0440\u0430\u0437 \u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0430\u0441\u044c \u0441\u0432\u044f\u0437\u044c \u043c\u0435\u0436\u0434\u0443 TARGET_INITIALIZE() \u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439.<\/p>\n<p>\u041a\u043e\u0440\u043e\u0447\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u0432 \u043c\u043e\u0435\u043c vAppMain() \u043d\u0435\u0445\u0432\u0430\u0442\u0430\u043b\u043e \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u043a\u0443\u0441\u043e\u0447\u043a\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/p>\n<pre><code>        \/\/ Initialize the hardware         TARGET_INITIALISE();         SET_IPL(0);         portENABLE_INTERRUPTS(); <\/code><\/pre>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044f \u043f\u043e\u043d\u044f\u043b \u0438\u0437 \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u043e\u0440\u0443\u043c\u0430 community.nxp.com \u043f\u0440\u0430\u0432\u043a\u0430 \u0444\u0430\u0439\u043b\u0430 irq_JN516x.S &#8212; \u044d\u0442\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043e\u0431\u0449\u0435\u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u0438 \u0438\u0445 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430\u043c\u0438. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u044f \u043d\u0435 \u043d\u0430\u0448\u0435\u043b \u0433\u0434\u0435 \u044d\u0442\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u0440\u044f\u0434\u043e\u043c \u0435\u0441\u0442\u044c \u043a\u043e\u0434 \u0434\u043b\u044f JN5179. \u0422\u0430\u043a \u0432\u043e\u0442 \u0442\u0430\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u044f\u043c\u043e \u0432 \u043a\u043e\u0434\u0435 \u0432\u044b\u0437\u043e\u0432\u043e\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043b\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c. \u0421\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434 \u043c\u043e\u0440\u0433\u043d\u0443\u043b \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0438 \u0437\u0430\u0441\u0442\u044b\u043b. \u0412 \u0447\u0435\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430? \u041e\u043f\u044f\u0442\u044c \u043b\u0435\u0437\u0435\u043c \u0432 \u043a\u043e\u0434 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0445 \u0442\u0430\u0439\u043c\u0435\u0440\u043e\u0432 \u0438 \u0432 \u043a\u043e\u0434\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 ZTIMER_vTask() \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0442\u0430\u0439\u043c\u0435\u0440\u044b \u0443\u043c\u0435\u044e\u0442 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437 &#8212; \u0442\u0430\u043c \u043f\u043e\u043f\u0440\u043e\u0441\u0442\u0443 \u043d\u0435\u0442 \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0446\u0438\u043a\u043b \u0442\u0430\u0439\u043c\u0435\u0440\u0430. \u0418 \u0445\u043e\u0442\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u043d\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442 \u0442\u0440\u0443\u0434\u0430, \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u043b\u043e\u043c\u0430\u0442\u044c \u043a\u043e\u0434 ZigBee \u0441\u0442\u0435\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0442\u0430\u0439\u043c\u0435\u0440\u044b \u0438 \u043d\u0435 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f. \u041f\u0440\u043e\u0449\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0442\u0430\u0439\u043c\u0435\u0440 \u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435.<\/p>\n<pre><code class=\"cpp\">PUBLIC void blinkFunc(void *pvParam) { \tstatic int iteration = 0; \tDBG_vPrintf(TRUE, \"Blink iteration %d\\n\", iteration++);  \tuint32 currentState = u32AHI_DioReadInput(); \tvAHI_DioSetOutput(currentState^BOARD_LED_PIN, currentState&amp;BOARD_LED_PIN);  \tZTIMER_eStart(blinkTimerHandle, ZTIMER_TIME_MSEC(1000)); } <\/code><\/pre>\n<h2>Hello queues  <\/h2>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u043d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0441 \u0447\u0435\u043c \u0431\u044b \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u044d\u0442\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438 (\u0438\u0437\u0432\u0438\u043d\u0438\u0442\u0435 \u0437\u0430 \u0442\u0430\u0432\u0442\u043e\u043b\u043e\u0433\u0438\u044e) \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439. \u0420\u0430\u0437\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0438. \u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u043f\u0443\u0441\u043a\u0430\u0439 \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u043d\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0443\u044e \u043a\u043d\u043e\u043f\u043a\u0443 \u0431\u0443\u0434\u0435\u0442 \u043c\u0435\u043d\u044f\u0442\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u0443 \u043c\u043e\u0440\u0433\u0430\u043d\u0438\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u0430, \u0430 \u0434\u043b\u0438\u043d\u043d\u043e\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u0435 &#8212; \u0431\u0443\u0434\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c\/\u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043c\u043e\u0440\u0433\u0430\u043d\u0438\u0435 \u0446\u0435\u043b\u0438\u043a\u043e\u043c. \u0418 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043c\u044b \u044d\u0442\u043e \u0447\u0435\u0440\u0435\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0438.<\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c 2 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 &#8212; \u043e\u0434\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443, \u0430 \u0434\u0440\u0443\u0433\u0430\u044f &#8212; \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432 vAppMain(). \u0422\u0443\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0430\u0441\u044c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0438\u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0438, \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 pull-up \u0440\u0435\u0437\u0438\u0441\u0442\u043e\u0440\u0430 \u0434\u043b\u044f \u043d\u0435\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u043f\u0443\u0441\u043a \u0435\u0449\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0430\u0439\u043c\u0435\u0440\u0430.&nbsp;<\/p>\n<p>\u041d\u0443 \u0438 \u0441\u0430\u043c\u043e\u0435 \u0432\u0430\u0436\u043d\u043e\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0430 &#8212; \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u0438. \u0414\u0443\u043c\u0430\u044e \u0434\u043b\u0438\u043d\u044b \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0432 3 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e.<\/p>\n<pre><code class=\"cpp\"> \t\/\/ Initialize hardware \tvAHI_DioSetDirection(BOARD_BTN_PIN, BOARD_LED_PIN); \tvAHI_DioSetPullup(BOARD_BTN_PIN, 0);  \t\/\/ Init and start timers \tZTIMER_eInit(timers, sizeof(timers) \/ sizeof(ZTIMER_tsTimer)); \tZTIMER_eOpen(&amp;blinkTimerHandle, blinkFunc, NULL, ZTIMER_FLAG_PREVENT_SLEEP); \tZTIMER_eStart(blinkTimerHandle, ZTIMER_TIME_MSEC(1000)); \tZTIMER_eOpen(&amp;buttonScanTimerHandle, buttonScanFunc, NULL, ZTIMER_FLAG_PREVENT_SLEEP); \tZTIMER_eStart(buttonScanTimerHandle, ZTIMER_TIME_MSEC(10));  \t\/\/ Initialize queue \tZQ_vQueueCreate(&amp;queueHandle, 3, sizeof(ButtonPressType), (uint8*)queue); <\/code><\/pre>\n<p>\u041f\u043e\u0434\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u043a\u043d\u043e\u043f\u043a\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0440\u0430\u0437 \u0432 10\u043c\u0441, \u0438 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0436\u0430\u0442\u0438\u044f. \u0421\u043e\u0432\u0441\u0435\u043c \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f (\u043c\u0435\u043d\u044c\u0448\u0435 50\u043c\u0441) \u0431\u0443\u0434\u0435\u043c \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c, \u0441\u0447\u0438\u0442\u0430\u044f \u044d\u0442\u043e \u0434\u0440\u0435\u0431\u0435\u0437\u0433\u043e\u043c \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432. \u0422\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0442\u044c \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0435 \u0438 \u0434\u043b\u0438\u043d\u043d\u043e\u0435 (&gt;2c) \u043d\u0430\u0436\u0430\u0442\u0438\u044f, \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c.<\/p>\n<pre><code class=\"cpp\">typedef enum { \tBUTTON_SHORT_PRESS, \tBUTTON_LONG_PRESS } ButtonPressType;   PUBLIC void buttonScanFunc(void *pvParam) { \tstatic int duration = 0;  \tuint32 input = u32AHI_DioReadInput(); \tbool btnState = (input &amp; BOARD_BTN_PIN) == 0;  \tif(btnState) \t{ \t\tduration++; \t} \telse \t{ \t\t\/\/ detect long press \t\tif(duration &gt; 200) \t\t{ \t\t\tDBG_vPrintf(TRUE, \"Button released. Long press detected\\n\"); \t\t\tButtonPressType value = BUTTON_LONG_PRESS; \t\t\tZQ_bQueueSend(&amp;queueHandle, (uint8*)&amp;value); \t\t}  \t\t\/\/ detect short press \t\telse if(duration &gt; 5) \t\t{ \t\t\tDBG_vPrintf(TRUE, \"Button released. Short press detected\\n\"); \t\t\tButtonPressType value = BUTTON_SHORT_PRESS; \t\t\tZQ_bQueueSend(&amp;queueHandle, &amp;value); \t\t}  \t\tduration = 0; \t}  \tZTIMER_eStart(buttonScanTimerHandle, ZTIMER_TIME_MSEC(10)); } <\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043c\u043e\u0440\u0433\u0430\u043d\u0438\u044f. \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043f\u0440\u0438\u043d\u044f\u0442\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u043e\u0440\u0433\u0430\u043d\u0438\u044f &#8212; \u0431\u044b\u0441\u0442\u0440\u043e\/\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e, \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e\/\u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043e. \u041d\u0443 \u0438 \u0435\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e, \u0442\u043e \u043c\u043e\u0440\u0433\u0430\u0435\u043c \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e.<\/p>\n<pre><code class=\"cpp\">PUBLIC void blinkFunc(void *pvParam) { \tstatic uint8 fastBlink = TRUE; \tstatic uint8 enabled = TRUE;  \tButtonPressType value;\t \tif(ZQ_bQueueReceive(&amp;queueHandle, (uint8*)&amp;value)) \t{ \t\tif(value == BUTTON_SHORT_PRESS) \t\t\tfastBlink = fastBlink ? FALSE : TRUE;  \t\tif(value == BUTTON_LONG_PRESS) \t\t\tenabled = enabled ? FALSE : TRUE; \t}  \tif(enabled) \t{ \t\tuint32 currentState = u32AHI_DioReadInput(); \t\tvAHI_DioSetOutput(currentState^BOARD_LED_PIN, currentState&amp;BOARD_LED_PIN); \t}  \tZTIMER_eStart(blinkTimerHandle, fastBlink? ZTIMER_TIME_MSEC(200) : ZTIMER_TIME_MSEC(1000)); } <\/code><\/pre>\n<p>\u0412 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0432\u0441\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u043a\u0430\u043a \u043d\u0430\u0434\u043e, \u0438 \u043e\u0431\u043e\u0448\u043b\u043e\u0441\u044c \u0431\u0435\u0437 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0432\u043e\u0437\u043d\u0438 \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439.  <\/p>\n<h2>Hello DIO Interrupts  <\/h2>\n<p>\u041e\u043f\u0440\u043e\u0441 \u043a\u043d\u043e\u043f\u043e\u043a \u0432 \u0446\u0438\u043a\u043b\u0435 \u044d\u0442\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043a\u0440\u0443\u0442\u043e \u0438 \u043f\u0440\u043e\u0441\u0442\u043e, \u043d\u043e \u044d\u043d\u0435\u0440\u0433\u043e\u0437\u0430\u0442\u0440\u0430\u0442\u043d\u043e. \u0414\u043b\u044f \u0431\u0430\u0442\u0430\u0440\u0435\u0439\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043e\u0442\u043e\u0439\u0442\u0438 \u043e\u0442 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0433\u043e \u043e\u043f\u0440\u043e\u0441\u0430 \u043a\u043d\u043e\u043f\u043a\u0438, \u0430 \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u043e \u0441\u043f\u0430\u0434\u0430\u044e\u0449\u0435\u043c\u0443 \u0444\u0440\u043e\u043d\u0442\u0443 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c \u043f\u0438\u043d\u0435.<\/p>\n<p>\u0412\u043e\u0442 \u0442\u0430\u043a \u0442\u0435\u043f\u0435\u0440\u044c \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f.<\/p>\n<pre><code class=\"cpp\">\t\/\/ Initialize hardware \tvAHI_DioSetDirection(BOARD_BTN_PIN, BOARD_LED_PIN); \tvAHI_DioSetPullup(BOARD_BTN_PIN, 0); \tvAHI_DioInterruptEdge(0, BOARD_BTN_PIN); \tvAHI_DioInterruptEnable(BOARD_BTN_PIN, 0);  \t\/\/ Init and start timers \tZTIMER_eInit(timers, sizeof(timers) \/ sizeof(ZTIMER_tsTimer)); \tZTIMER_eOpen(&amp;blinkTimerHandle, blinkFunc, NULL, ZTIMER_FLAG_PREVENT_SLEEP); \tZTIMER_eStart(blinkTimerHandle, ZTIMER_TIME_MSEC(1000)); \tZTIMER_eOpen(&amp;buttonScanTimerHandle, buttonScanFunc, NULL, ZTIMER_FLAG_PREVENT_SLEEP); \t\/\/ZTIMER_eStart(buttonScanTimerHandle, ZTIMER_TIME_MSEC(10)); <\/code><\/pre>\n<p>\u041f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u0444\u0440\u043e\u043d\u0442\u0443 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 vAHI_DioInterruptEdge() \u0438 vAHI_DioInterruptEnable(). \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u044f \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0441\u0442\u0430\u0440\u0442 \u0442\u0430\u0439\u043c\u0435\u0440\u0430 \u043e\u043f\u0440\u043e\u0441\u0430 \u043a\u043d\u043e\u043f\u043e\u043a (\u043d\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0430\u0439\u043c\u0435\u0440\u0430 ZTIMER_eOpen() \u043f\u043e \u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u0430)<\/p>\n<p>\u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 ATMega \u0438\u043b\u0438 STM32, \u0432 JN5169 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u043d\u0430 \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 &#8212; vISR_SystemController(). \u0422\u0443\u0442 \u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043e\u0442 \u043a\u043e\u043c\u043f\u0430\u0440\u0430\u0442\u043e\u0440\u0430, \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u0438\u043d\u0430, \u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435 \u043f\u0438\u0442\u0430\u043d\u0438\u044f, \u0438 \u043f\u0440\u043e\u0441\u044b\u043f\u0430\u043d\u0438\u0435 \u043f\u043e \u0442\u0430\u0439\u043c\u0435\u0440\u0443, \u0438 \u0447\u0442\u043e-\u0442\u043e \u0442\u0430\u043c \u0435\u0449\u0435. \u0412\u044b\u044f\u0441\u043d\u0438\u0442\u044c \u0447\u0442\u043e \u0436\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0441\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0437\u043e\u0432\u043e\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439.<\/p>\n<pre><code class=\"cpp\">PUBLIC void vISR_SystemController(void) {     DBG_vPrintf(TRUE, \"In vISR_SystemController\\n\");      if(u32AHI_DioInterruptStatus() &amp; BOARD_BTN_PIN)     {         DBG_vPrintf(TRUE, \"Button interrupt\\n\");          ZTIMER_eStart(buttonScanTimerHandle, ZTIMER_TIME_MSEC(10));     } } <\/code><\/pre>\n<p>\u041d\u0430\u043c \u043f\u043e\u043a\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 DIO Interrupt. \u0421\u043e\u0431\u044b\u0442\u0438\u0435 \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442 \u043f\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044e \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443. \u0412 \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u0443\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043c\u0435\u043b\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0442\u0430\u0439\u043c\u0435\u0440 \u043e\u043f\u0440\u043e\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u043f\u0438\u043d \u043f\u043e\u043a\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u043d\u0435 \u043e\u0442\u043f\u0443\u0441\u0442\u044f\u0442.<\/p>\n<p>\u041e\u043f\u0440\u043e\u0441 \u043a\u043d\u043e\u043f\u043e\u043a \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0441\u044f \u043b\u0438\u0448\u044c \u043d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e. \u0422\u0435\u043f\u0435\u0440\u044c \u0442\u0430\u0439\u043c\u0435\u0440 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043a\u0430 \u043d\u0430\u0436\u0430\u0442\u0430 \u043a\u043d\u043e\u043f\u043a\u0430.<\/p>\n<pre><code class=\"cpp\">PUBLIC void buttonScanFunc(void *pvParam) { \tstatic int duration = 0;  \tuint32 input = u32AHI_DioReadInput(); \tbool btnState = (input &amp; BOARD_BTN_PIN) == 0;  \tif(btnState) \t{ \t\tduration++; \t\tDBG_vPrintf(TRUE, \"Button still pressed for %d ticks\\n\", duration); \t\tZTIMER_eStart(buttonScanTimerHandle, ZTIMER_TIME_MSEC(10)); \t} \telse \t{ \t\t\/\/ detect long press \t\tif(duration &gt; 200) \t\t{ \t\t\tDBG_vPrintf(TRUE, \"Button released. Long press detected\\n\"); \t\t\tButtonPressType value = BUTTON_LONG_PRESS; \t\t\tZQ_bQueueSend(&amp;queueHandle, (uint8*)&amp;value); \t\t}  \t\t\/\/ detect short press \t\telse if(duration &gt; 10) \t\t{ \t\t\tDBG_vPrintf(TRUE, \"Button released. Short press detected\\n\"); \t\t\tButtonPressType value = BUTTON_SHORT_PRESS; \t\t\tZQ_bQueueSend(&amp;queueHandle, &amp;value); \t\t}  \t\tduration = 0; \t} } <\/code><\/pre>\n<p>\u041a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u043e\u0442 Tick Timer\u2019\u0430, \u0444\u0443\u043d\u043a\u0446\u0438\u044e vISR_SystemController() \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0432 \u0444\u0430\u0439\u043b\u0435 irq_JN516x.S.<\/p>\n<p>\u0421\u0442\u043e\u0438\u043b\u043e \u043b\u0438 \u0442\u0430\u043a \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u043c\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u0442\u0430\u0439\u043c\u0435\u0440\u0430\u043c\u0438? \u041d\u0435 \u0444\u0430\u043a\u0442, \u043d\u043e \u043c\u043d\u0435 \u0432\u0430\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u0449\u0443\u043f\u0430\u0442\u044c DIO Interrupt, \u043a\u043e\u0433\u0434\u0430 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b (\u043e\u043f\u0440\u043e\u0441 \u043a\u043d\u043e\u043f\u043e\u043a) \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u043f\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044e \u043d\u0430 \u043f\u0438\u043d\u0435.<\/p>\n<h2>Hello sleep\/wake  <\/h2>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435, \u0447\u0442\u043e \u044f \u0431\u044b \u0445\u043e\u0442\u0435\u043b \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0441\u044b\u043f\u0430\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430. \u0421\u043a\u0430\u0436\u0443 \u0447\u0442\u043e \u0442\u0443\u0442 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0438\u0437\u0440\u044f\u0434\u043d\u043e \u043f\u043e\u0432\u043e\u0437\u0438\u0442\u044c\u0441\u044f. \u041d\u0435 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u044d\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u043e, \u0430 \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u043a\u0440\u043e\u0438\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435\u0439 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438. \u0422\u0435\u043f\u0435\u0440\u044c \u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u043f\u043e\u0447\u0435\u043c\u0443 \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u0442\u0430\u043a \u0432\u0441\u0435 \u0437\u0430\u043f\u0443\u0442\u0430\u043d\u043d\u043e &#8212; \u0443 \u043c\u0435\u043d\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0431\u044b\u0442\u044c \u0442\u0430\u043a\u0436\u0435 \ud83d\ude42<\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0430\u044f \u0441 \u0437\u0430\u0441\u044b\u043f\u0430\u043d\u0438\u0435\u043c\/\u043f\u0440\u043e\u0441\u044b\u043f\u0430\u043d\u0438\u0435\u043c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043c\u043e\u0434\u0443\u043b\u044c PWRM (\u043d\u0430\u0434\u043e \u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c Power Management). \u0424\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c 2 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043f\u0435\u0440\u0435\u0434 \u0432\u0445\u043e\u0434\u043e\u043c \u0432 \u0440\u0435\u0436\u0438\u043c \u0441\u043d\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0445\u043e\u0434\u0430.<\/p>\n<pre><code class=\"cpp\">static PWRM_DECLARE_CALLBACK_DESCRIPTOR(PreSleep); static PWRM_DECLARE_CALLBACK_DESCRIPTOR(Wakeup);  PWRM_CALLBACK(PreSleep) {     DBG_vPrintf(TRUE, \"Going to sleep..\\n\\n\");     DBG_vUartFlush();      ZTIMER_vSleep();      \/\/ Disable UART (if enabled)     vAHI_UartDisable(E_AHI_UART_0);      \/\/ clear interrupts     u32AHI_DioWakeStatus();                               \/\/ Set the wake condition on falling edge of the button pin     vAHI_DioWakeEdge(0, BOARD_BTN_PIN);     vAHI_DioWakeEnable(BOARD_BTN_PIN, 0); }  PWRM_CALLBACK(Wakeup) {     \/\/ Stabilise the oscillator     while (bAHI_GetClkSource() == TRUE);      \/\/ Now we are running on the XTAL, optimise the flash memory wait states     vAHI_OptimiseWaitStates();      \/\/ Re-initialize Debug UART     DBG_vUartInit(DBG_E_UART_0, DBG_E_UART_BAUD_RATE_115200);      DBG_vPrintf(TRUE, \"\\nWaking..\\n\");     DBG_vUartFlush();      \/\/ Re-initialize hardware and interrupts     TARGET_INITIALISE();     SET_IPL(0);     portENABLE_INTERRUPTS();      \/\/ Wake the timers     ZTIMER_vWake(); }   void vAppRegisterPWRMCallbacks(void) {     PWRM_vRegisterPreSleepCallback(PreSleep);     PWRM_vRegisterWakeupCallback(Wakeup);\t } <\/code><\/pre>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f PreSleep() \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u0432\u0441\u0435\u0445 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 &#8212; \u0443\u0441\u044b\u043f\u043b\u044f\u0435\u0442 \u0442\u0430\u0439\u043c\u0435\u0440\u044b, \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u0442 UART \u0438, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e, GPIO. \u0421\u0430\u043c\u043e\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u044d\u0442\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0441\u044b\u043f\u0430\u043d\u0438\u0435 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u043f\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044e \u043a\u043d\u043e\u043f\u043a\u0438.<\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f Wakeup() \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0443 &#8212; \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0439 UART, \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u0434\u0440\u0443\u0433\u0443\u044e \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u044e, \u0431\u0443\u0434\u0438\u0442 \u0442\u0430\u0439\u043c\u0435\u0440\u044b. \u041f\u043e \u0441\u0443\u0442\u0438 \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u0435\u043b\u0430\u0435\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u044e \u0442\u0430\u043a\u0443\u044e \u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u0436\u0435\u043b\u0435\u0437\u0430 \u043a\u0430\u043a \u0438 vAppMain(), \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u0442\u0430\u0439\u043c\u0435\u0440\u044b \u043d\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442.<\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043c\u043e\u0440\u0433\u0430\u043d\u0438\u044f \u0441\u043b\u0435\u0433\u043a\u0430 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0430\u0441\u044c (\u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0443 \u0438\u0437 \u0440\u0430\u0437\u0434\u0435\u043b\u0430 \u043f\u0440\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438).<\/p>\n<pre><code class=\"cpp\">uint8 enabled = TRUE;  PUBLIC void blinkFunc(void *pvParam) { \tstatic uint8 fastBlink = TRUE;  \tButtonPressType value;\t \tif(ZQ_bQueueReceive(&amp;queueHandle, (uint8*)&amp;value)) \t{ \t\tDBG_vPrintf(TRUE, \"Processing message in blink task\\n\");  \t\tif(value == BUTTON_SHORT_PRESS) \t\t\tfastBlink = fastBlink ? FALSE : TRUE;  \t\tif(value == BUTTON_LONG_PRESS) \t\t{ \t\t\tDBG_vPrintf(TRUE, \"Stop Blinking\\n\"); \t\t\tvAHI_DioSetOutput(BOARD_LED_PIN, 0); \t\t\tenabled = FALSE; \t\t} \t}  \tif(enabled) \t{ \t\tuint32 currentState = u32AHI_DioReadInput(); \t\tvAHI_DioSetOutput(currentState^BOARD_LED_PIN, currentState&amp;BOARD_LED_PIN); \t}  \tZTIMER_eStart(blinkTimerHandle, fastBlink? ZTIMER_TIME_MSEC(200) : ZTIMER_TIME_MSEC(1000)); } <\/code><\/pre>\n<p>\u0424\u043b\u0430\u0436\u043e\u043a enabled \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0435\u0445\u0430\u043b \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u0442.\u043a. \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0442 \u0444\u043b\u0430\u0433 \u0431\u0443\u0434\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0437\u0430\u0441\u044b\u043f\u0430\u043d\u0438\u0435\u043c. \u0412\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0442\u0430\u043a\u0438\u043c \u0436\u0435.<\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u043f\u0440\u043e\u0441\u0430 \u043a\u043d\u043e\u043f\u043a\u0438 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0430\u0441\u044c. \u0418 \u0445\u043e\u0442\u044f \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u0437\u0430\u0441\u043d\u0443\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u044f\u043c\u043e \u0432 \u043d\u0435\u0439 \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043e \u0434\u043b\u0438\u043d\u043d\u043e\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u0435, \u044f \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e \u0432\u0441\u0435 \u0442\u0430\u043a\u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043c\u043e\u0440\u0433\u0430\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u0434\u0430\u0442\u044c \u0442\u043e\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u0434\u0435\u043b\u0430 \u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434.<\/p>\n<pre><code class=\"cpp\">PUBLIC void buttonScanFunc(void *pvParam) { \tstatic int duration = 0;  \tuint32 input = u32AHI_DioReadInput(); \tbool btnState = (input &amp; BOARD_BTN_PIN) == 0;  \tif(btnState) \t{ \t\tduration++; \t\tDBG_vPrintf(TRUE, \"Button still pressed for %d ticks\\n\", duration); \t} \telse \t{ \t\t\/\/ detect long press \t\tif(duration &gt; 200) \t\t{ \t\t\tDBG_vPrintf(TRUE, \"Button released. Long press detected\\n\"); \t\t\tButtonPressType value = BUTTON_LONG_PRESS; \t\t\tZQ_bQueueSend(&amp;queueHandle, (uint8*)&amp;value); \t\t}  \t\t\/\/ detect short press \t\telse if(duration &gt; 5) \t\t{ \t\t\tDBG_vPrintf(TRUE, \"Button released. Short press detected\\n\"); \t\t\tButtonPressType value = BUTTON_SHORT_PRESS; \t\t\tZQ_bQueueSend(&amp;queueHandle, &amp;value); \t\t}  \t\tduration = 0; \t}  \tZTIMER_eStart(buttonScanTimerHandle, ZTIMER_TIME_MSEC(10)); } <\/code><\/pre>\n<p>\u041a\u0430\u043a \u0436\u0435, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0437\u0430\u0441\u044b\u043f\u0430\u043d\u0438\u0435 \u0438 \u043f\u0440\u043e\u0441\u044b\u043f\u0430\u043d\u0438\u0435? \u0412\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 vAppMain(). \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0431\u0440\u0430\u0449\u0443 \u0432\u0430\u0448\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0442\u0430\u0439\u043c\u0435\u0440\u044b \u0442\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u0441 \u0444\u043b\u0430\u0433\u043e\u043c ALLOW_SLEEP. \u0420\u0430\u043d\u044c\u0448\u0435 \u043c\u044b \u0438\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0438 \u0441 \u0444\u043b\u0430\u0433\u043e\u043c PREVENT_SLEEP, \u0447\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043d\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0441\u043f\u0430\u0442\u044c, \u043f\u043e\u043a\u0430 \u0442\u0430\u043a\u0438\u0435 \u0442\u0430\u0439\u043c\u0435\u0440\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442. \u0418\u0445 \u043d\u0443\u0436\u043d\u043e \u0432 \u044f\u0432\u043d\u043e\u043c \u0432\u0438\u0434\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u0441\u044b\u043f\u0430\u043d\u0438\u0435\u043c. \u042f \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0442\u0430\u043a \u0434\u0435\u043b\u0430\u0442\u044c, \u043d\u043e \u044d\u0442\u043e \u0435\u0449\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043a\u043e\u0434\u0430. \u041f\u0443\u0441\u043a\u0430\u0439 \u043e\u043d\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0438\u043a\u0430\u044e\u0442 \u0432\u0441\u0435\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043d\u0435 \u0441\u043f\u0438\u0442, \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u0441\u044b\u043f\u0430\u044e\u0442 \u0438 \u043f\u0440\u043e\u0441\u044b\u043f\u0430\u044e\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c.<\/p>\n<pre><code class=\"cpp\">\t\/\/ Init and start timers \tZTIMER_eInit(timers, sizeof(timers) \/ sizeof(ZTIMER_tsTimer)); \tZTIMER_eOpen(&amp;blinkTimerHandle, blinkFunc, NULL, ZTIMER_FLAG_ALLOW_SLEEP); \tZTIMER_eStart(blinkTimerHandle, ZTIMER_TIME_MSEC(1000)); \tZTIMER_eOpen(&amp;buttonScanTimerHandle, buttonScanFunc, NULL, ZTIMER_FLAG_ALLOW_SLEEP); \tZTIMER_eStart(buttonScanTimerHandle, ZTIMER_TIME_MSEC(10)); <\/code><\/pre>\n<p>\u0412\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0446\u0438\u043a\u043b  <\/p>\n<pre><code>PRIVATE uint8 keepAliveTime = 10; PRIVATE pwrm_tsWakeTimerEvent wakeStruct;  PUBLIC void vAppMain(void) { ...  \t\/\/ Let the device go to sleep if there is nothing to do \tPWRM_vInit(E_AHI_SLEEP_OSCON_RAMON);  \twhile(1) \t{ \t\tZTIMER_vTask();  \t\tvAHI_WatchdogRestart();  \t\tif(enabled == FALSE) \t\t{ \t\t\tDBG_vPrintf(TRUE, \"Scheduling wake task\\n\"); \t\t\tPWRM_eScheduleActivity(&amp;wakeStruct, keepAliveTime * 32000, wakeCallBack); \t\t}  \t\tPWRM_vManagePower(); \t} <\/code><\/pre>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0438\u0442\u0430\u043d\u0438\u0435\u043c (\u0438 \u0437\u0430\u0441\u044b\u043f\u0430\u043d\u0438\u0435\u043c) \u0432\u044b\u0437\u043e\u0432\u043e\u043c PWRM_vInit(). \u0422\u0443\u0442 \u043c\u044b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0441\u0442\u0435\u043f\u0435\u043d\u044c \u0437\u0430\u0441\u044b\u043f\u0430\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 &#8212; E_AHI_SLEEP_OSCON_RAMON, \u0447\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 wake up timer \u043d\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u044c, \u043f\u0430\u043c\u044f\u0442\u044c \u043d\u0435 \u043e\u0447\u0438\u0449\u0430\u0442\u044c. \u041f\u0440\u043e \u043f\u0430\u043c\u044f\u0442\u044c \u044d\u0442\u043e \u0432\u0430\u0436\u043d\u043e &#8212; \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0444\u043b\u0430\u0436\u043e\u043a enabled. \u0415\u0441\u043b\u0438 \u043f\u0430\u043c\u044f\u0442\u044c \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c, \u0442\u043e \u0442\u043e\u0433\u0434\u0430 \u043f\u0440\u0438 \u043f\u0440\u043e\u0441\u044b\u043f\u0430\u043d\u0438\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u0444\u043b\u0430\u0433\u0430. \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 wake up \u0442\u0430\u0439\u043c\u0435\u0440 \u043d\u0430\u043c, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c, \u0438 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d &#8212; \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u043e\u0441\u044b\u043f\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u043a\u043d\u043e\u043f\u043a\u0435, \u043d\u043e \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u0437\u0430\u0434\u0430\u0447 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 ZigBee.<\/p>\n<p>\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0437\u0430\u0441\u044b\u043f\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 PWRM_vManagePower(). \u041d\u043e \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043d\u0435 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u0430 \u043a\u0430\u043a \u043a\u0430\u0436\u0435\u0442\u0441\u044f. \u041e\u043d\u0430 \u0441\u0430\u043c\u0430 \u0440\u0435\u0448\u0430\u0435\u0442 \u043c\u043e\u0436\u0435\u0442 \u043b\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u0441\u0435\u0439\u0447\u0430\u0441 \u0441\u043f\u0430\u0442\u044c \u0438\u043b\u0438 \u043d\u0435\u0442. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u0432\u0443\u0445 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0435\u0432. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u0439\u043c\u0435\u0440\u043e\u0432 \u0441 \u0444\u043b\u0430\u0433\u043e PREVENT_SLEEP). \u0410 \u0432\u043e-\u0432\u0442\u043e\u0440\u044b\u0445 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u0442\u0430\u0439\u043c\u0435\u0440 \u043f\u0440\u043e\u0441\u044b\u043f\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 PWRM_eScheduleActivity(), \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0444\u043b\u0430\u0433\u0430 enabled.<\/p>\n<p>\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 &#8212; \u0432 \u043d\u0435\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043b\u0435\u0442\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043f\u0440\u043e\u0441\u043d\u0443\u043b\u0441\u044f<\/p>\n<pre><code class=\"cpp\">PUBLIC void vISR_SystemController(void) {     \/\/ clear pending DIO changed bits by reading register     uint8 u8WakeInt = u8AHI_WakeTimerFiredStatus();     uint32 u32IOStatus = u32AHI_DioInterruptStatus();      DBG_vPrintf(TRUE, \"In vISR_SystemController\\n\");      if(u32IOStatus &amp; BOARD_BTN_PIN)     {         DBG_vPrintf(TRUE, \"Button interrupt\\n\");         enabled = TRUE;         PWRM_vWakeInterruptCallback();     }      if(u8WakeInt &amp; E_AHI_WAKE_TIMER_MASK_1)     {         \/* wake timer interrupt got us here *\/         DBG_vPrintf(TRUE, \"APP: Wake Timer 1 Interrupt\\n\");          PWRM_vWakeInterruptCallback();     } } <\/code><\/pre>\n<p>\u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c 2 \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0440\u0430\u0437\u0431\u0443\u0434\u0438\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 &#8212; \u043f\u043e \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044e \u043e\u0442 \u043a\u043d\u043e\u043f\u043a\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0442 \u0431\u0443\u0434\u0438\u043b\u044c\u043d\u0438\u043a\u0430. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u0432\u0437\u0432\u0435\u0434\u0435\u043c \u0444\u043b\u0430\u0433 enabled, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0443\u043f\u0443\u0441\u0442\u0438\u0442 \u043c\u043e\u0440\u0433\u0430\u043b\u043a\u0443. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u043e\u0441\u044b\u043f\u0430\u043d\u0438\u044f \u043f\u043e \u0442\u0430\u0439\u043c\u0435\u0440\u0443 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u043c\u0441\u044f \u0438 \u043f\u043e\u0439\u0434\u0435\u043c \u0441\u043f\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435. \u0424\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 PreSleep() \u0438 Wakeup(), \u0430 \u0442\u0430\u043a\u0436\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b\u043b\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 PWRM_eScheduleActivity().<\/p>\n<pre><code class=\"cpp\">PUBLIC void wakeCallBack(void) {     DBG_vPrintf(TRUE, \"wakeCallBack()\\n\"); } <\/code><\/pre>\n<p>\u0412\u043e\u0442 \u0442\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0437\u0430\u0441\u044b\u043f\u0430\u043d\u0438\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u043e \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c\u0443 \u043d\u0430\u0436\u0430\u0442\u0438\u044e \u043a\u043d\u043e\u043f\u043a\u0438, \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0440\u043e\u0441\u044b\u043f\u0430\u043d\u0438\u0435 \u043f\u043e \u0431\u0443\u0434\u0438\u043b\u044c\u043d\u0438\u043a\u0443, \u0438, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u043f\u0440\u043e\u0441\u044b\u043f\u0430\u043d\u0438\u0435 \u043f\u043e \u043a\u043d\u043e\u043f\u043a\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/caa\/e68\/f7f\/caae68f7f28ce583a82c7ae4674cbf8b.png\" width=\"826\" height=\"882\"><figcaption><\/figcaption><\/figure>\n<h2>Hello Deep Sleep  <\/h2>\n<p>\u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0439 \u0440\u0435\u0436\u0438\u043c \u0441\u043d\u0430 &#8212; \u0440\u0430\u0431\u043e\u0442\u0430\u043b wake up \u0442\u0430\u0439\u043c\u0435\u0440, \u0438 \u043f\u0430\u043c\u044f\u0442\u044c \u043d\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u043b\u0430\u0441\u044c. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0434\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u0430\u0442\u0430\u0440\u0435\u0439\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u044d\u0442\u043e \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442, \u0438 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0440\u0435\u0436\u0438\u043c\u044b \u0431\u043e\u043b\u0435\u0435 \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0433\u043e \u0441\u043d\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u043a.<\/p>\n<pre><code class=\"cpp\">PUBLIC void vAppMain(void) { ... \t\/\/ Let the device go to sleep if there is nothing to do \tPWRM_vInit(E_AHI_SLEEP_DEEP);  \twhile(1) \t{ \t\tZTIMER_vTask();  \t\tvAHI_WatchdogRestart();  \t\tif(enabled == FALSE) \t\t{ \t\t\tDBG_vPrintf(TRUE, \"Scheduling sleep\\n\"); \t\t\tPWRM_vManagePower(); \t\t} \t} } <\/code><\/pre>\n<p>\u041d\u0443 \u043c\u043e\u0436\u043d\u043e \u0435\u0449\u0435 \u0443\u0431\u0440\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 wake up \u0442\u0430\u0439\u043c\u0435\u0440\u0430 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 vISR_SystemController(), \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e.  <\/p>\n<p>\u041f\u0440\u0438 \u0442\u0430\u043a\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u0435\u0441\u0442\u044c \u043e\u0434\u0438\u043d \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0439 \u043d\u044e\u0430\u043d\u0441. \u041e\u043d \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0437\u0430\u0441\u044b\u043f\u0430\u043d\u0438\u0438 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c. \u0410 \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u0438 \u043f\u0440\u043e\u0441\u044b\u043f\u0430\u043d\u0438\u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 (\u043f\u043e\u043b\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430) &#8212; \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f vAppMain() \u0432\u043c\u0435\u0441\u0442\u043e Wakeup(). \u0410 \u044d\u0442\u043e \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0440\u0435\u0436\u0438\u043c \u043c\u043e\u0440\u0433\u0430\u043d\u0438\u044f \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c\u0441\u044f, \u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u0442\u044c \u0441 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u043e\u0440\u0433\u0430\u043d\u0438\u044f. \u0418 \u0445\u043e\u0442\u044f \u0434\u043b\u044f \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043d\u043e\u0439 \u043c\u043e\u0440\u0433\u0430\u043b\u043a\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u043d\u0435 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e, \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0436\u0434\u0443 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430\u043c\u0438.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u043c \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f EEPROM. \u0418 \u0442\u0443\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 2 \u043f\u043e\u0434\u0445\u043e\u0434\u0430<\/p>\n<ol>\n<li>\n<p>\u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 EEPROM &#8212; \u043c\u043e\u0436\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u044c \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432 EEPROM \u0441\u044b\u0440\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 \u0431\u0430\u0439\u0442<\/p>\n<\/li>\n<li>\n<p>Persistent Data Manager (PDM) &#8212; \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 key-value storage \u0432 EEPROM<\/p>\n<\/li>\n<\/ol>\n<p>\u0411\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434, \u0442.\u043a. \u044d\u0442\u043e \u0441\u043e\u0433\u043b\u0430\u0441\u0443\u0435\u0442\u0441\u044f \u0441 ZigBee \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 PDM, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b.&nbsp;<\/p>\n<p>\u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u0432\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u044d\u0442\u043e\u043c \u043d\u0435\u0442. \u041f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.<\/p>\n<pre><code class=\"cpp\">#define PDM_ID_BLINK_MODE   \t    0x2 #define BLINK_MODE_SLOW\t\t    0 #define BLINK_MODE_FAST\t\t    1  uint8 blinkMode = BLINK_MODE_SLOW;  void storeBlinkMode(uint8 mode) { \tblinkMode = mode; \tPDM_teStatus status = PDM_eSaveRecordData(PDM_ID_BLINK_MODE, &amp;blinkMode, sizeof(blinkMode)); \tDBG_vPrintf(TRUE, \"Storing blink mode. Status %d, value %d\\n\", status, blinkMode);\t }  void restoreBlinkMode() { \tuint16 readBytes; \tPDM_teStatus status = PDM_eReadDataFromRecord(PDM_ID_BLINK_MODE, &amp;blinkMode, sizeof(blinkMode), &amp;readBytes);  \tDBG_vPrintf(TRUE, \"Reading blink mode. Status %d, size %d, value %d\\n\", status, readBytes, blinkMode);\t } <\/code><\/pre>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0431\u0443\u0434\u0435\u043c \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 blinkFunc(), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u0436\u0435 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u044d\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044e \u0438\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 (\u043d\u0435 \u0431\u0443\u0434\u0443 \u043e\u043f\u044f\u0442\u044c \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043a\u043e\u0434 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0442\u0430\u043c \u043d\u0438\u0447\u0435\u0433\u043e \u043a\u0440\u043e\u043c\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 blinkFunc() \u043d\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u043e\u0441\u044c). \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0431\u0443\u0434\u0435\u043c \u0432 vAppMain() &#8212; \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043f\u0440\u0438 \u0432\u044b\u0445\u043e\u0434\u0435 \u0438\u0437 \u0440\u0435\u0436\u0438\u043c\u0430 \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0433\u043e \u0441\u043d\u0430. \u041a\u0441\u0442\u0430\u0442\u0438, \u0447\u0442\u043e\u0431\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 PDM \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u043d\u0435 \u0437\u0430\u0431\u044b\u0442\u044c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442.<\/p>\n<pre><code class=\"cpp\">PUBLIC void vAppMain(void) { ... \t\/\/ Restore blink mode from EEPROM \tPDM_eInitialise(0); \trestoreBlinkMode(); <\/code><\/pre>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435  <\/h2>\n<p>\u041d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u043c JN5169 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u043e, \u0445\u043e\u0442\u044f \u043f\u0443\u0442\u044c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u043c \u043c\u043e\u0433 \u0431\u044b \u0431\u044b\u0442\u044c \u0438 \u043f\u043e\u043f\u0440\u043e\u0449\u0435. \u041c\u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u043d\u0435\u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0438 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0435 \u0432 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0435 \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u0435, \u0433\u0434\u0435 \u044f \u043f\u043e\u043d\u0438\u043c\u0430\u044e \u0441\u0443\u0442\u044c (\u043f\u043e\u0447\u0442\u0438) \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u0438.&nbsp;<\/p>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e HelloWorld &#8212; \u0441\u0435\u0440\u0438\u044f \u0441\u043e\u0432\u0441\u0435\u043c \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0443\u043f\u0440\u0430\u0436\u043d\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430. \u041c\u043d\u0435 \u043f\u043e \u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u0441\u044a\u0435\u0441\u0442\u044c \u0441\u043b\u043e\u043d\u0430 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c ZigBee. \u041d\u043e \u0445\u043e\u0442\u044f \u0431\u044b \u043a\u0443\u0441\u043e\u0447\u0435\u043a \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u043e\u043d\u0430 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0442\u043a\u0443\u0441\u0438\u0442\u044c, \u043f\u0440\u043e\u0436\u0435\u0432\u0430\u0442\u044c, \u0438 \u043f\u0435\u0440\u0435\u0432\u0430\u0440\u0438\u0442\u044c.<\/p>\n<p>\u0417\u0430 \u043a\u0430\u0434\u0440\u043e\u043c \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441 \u0437\u0430\u043b\u0438\u0432\u043a\u0438 \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0438 \u0438\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u0438, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c BeyondStudio. \u041a\u0430\u043a \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0430 \u0438 \u0441\u0431\u043e\u0440\u043a\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0438\u0437 \u0441\u0430\u043c\u043e\u0439 BeyondStudio. \u0411\u0443\u0434\u0435\u0442 \u043a\u0440\u0443\u0442\u043e, \u0435\u0441\u043b\u0438 \u0437\u043d\u0430\u0442\u043e\u043a\u0438 Eclipse\/BeyondStudio \u043c\u043d\u0435 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u0434 \u044d\u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f CMake.<\/p>\n<p>\u0411\u0443\u0434\u0443 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u0435\u043d \u0437\u0430 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u0438\u0432\u043d\u0443\u044e \u043a\u0440\u0438\u0442\u0438\u043a\u0443 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445.<\/p>\n<p>\u041a\u043e\u0434 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432: <a href=\"https:\/\/github.com\/grafalex82\/hellojn5169world\" rel=\"noopener noreferrer nofollow\"><u>https:\/\/github.com\/grafalex82\/hellojn5169world<\/u><\/a><\/p>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f:<\/p>\n<p><a href=\"https:\/\/www.nxp.com\/docs\/en\/user-guide\/JN-UG-3113.pdf\" rel=\"noopener noreferrer nofollow\"><u>https:\/\/www.nxp.com\/docs\/en\/user-guide\/JN-UG-3113.pdf<\/u><\/a><\/p>\n<p><a href=\"https:\/\/www.nxp.com\/docs\/en\/user-guide\/JN-UG-3116.pdf\" rel=\"noopener noreferrer nofollow\"><u>https:\/\/www.nxp.com\/docs\/en\/user-guide\/JN-UG-3116.pdf<\/u><\/a><\/p>\n<p><a href=\"https:\/\/www.nxp.com\/docs\/en\/user-guide\/JN-UG-3087.pdf\" rel=\"noopener noreferrer nofollow\"><u>https:\/\/www.nxp.com\/docs\/en\/user-guide\/JN-UG-3087.pdf<\/u><\/a><\/p>\n<p><a href=\"https:\/\/www.rcscomponents.kiev.ua\/datasheets\/e75-2g4m10s_usermanual_en_v1_1.pdf\" rel=\"noopener noreferrer nofollow\"><u>https:\/\/www.rcscomponents.kiev.ua\/datasheets\/e75-2g4m10s_usermanual_en_v1_1.pdf<\/u><\/a><\/p>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/547374\/\"> https:\/\/habr.com\/ru\/post\/547374\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0415\u0441\u0442\u044c \u0443 \u043c\u0435\u043d\u044f \u043e\u0434\u043d\u0430 \u0438\u0434\u0435\u0439\u043a\u0430 &#8212; \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0443 \u0434\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 ZigBee \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 Xiaomi. \u041d\u043e \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: \u044f \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0441 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u043c\u0438 NXP JN5169, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 Xiaomi. NXP \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 IDE, \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u044b\u0441\u044f\u0447 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u0434\u0435\u0432\u0435\u043b\u043e\u043f\u0435\u0440\u0441\u043a\u0443\u044e \u0431\u043e\u0440\u0434\u0443 \u0437\u0430 $650, \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442 \u0437\u0430\u043f\u0443\u0442\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432. \u041d\u043e \u0432\u043e\u0442 \u043a\u0430\u043a\u043e\u0433\u043e \u043d\u0438\u0431\u0443\u0434\u044c \u0432\u043d\u044f\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e\u0433\u043e \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u043d\u0435 \u043d\u0430\u0448\u043b\u043e\u0441\u044c.<\/p>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u043d\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0431\u0435\u043b, \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 Hello World \u0434\u043b\u044f \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 NXP JN5169. \u041f\u043e\u0435\u0445\u0430\u043b\u0438.<\/p>\n<h2>\u041c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u044f<\/h2>\n<p>\u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u0441\u043a\u0430\u0437\u0430\u043b, NXP \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0433\u043e\u0442\u043e\u0432\u0443\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u043e\u0434 \u0441\u0432\u043e\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430:&nbsp;<\/p>\n<ul>\n<li>\n<p>BeyondStudio IDE \u043d\u0430 \u0431\u0430\u0437\u0435 Eclipse, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 JN5169, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u043c\u043e\u0447\u044c \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 ZigBee \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432<\/p>\n<\/li>\n<li>\n<p>SDK \u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0435\u0439, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e ZigBee \u0441\u0442\u0435\u043a\u0430<\/p>\n<\/li>\n<li>\n<p>\u0412\u0441\u0435 \u044d\u0442\u043e \u043f\u043e\u0434\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439, \u0434\u0430\u0442\u0430\u0448\u0438\u0442\u0430\u043c\u0438, API Reference, \u0438 \u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u043c\u0438 Application Notes<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0441\u044f \u044d\u0442\u0430 \u0448\u0442\u0443\u043a\u043e\u0432\u0438\u043d\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043c\u043e\u043d\u0441\u0442\u0440\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u0430, \u0430 \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 \u044d\u0442\u043e\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u0443\u0442\u043e\u043d\u0435\u0442 \u0438 \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u0434\u0430\u0436\u0435 \u043b\u0430\u043c\u043f\u043e\u0447\u043a\u043e\u0439 \u043f\u043e\u043c\u043e\u0440\u0433\u0430\u0442\u044c. \u041a \u0441\u0432\u043e\u0435\u043c\u0443 \u0441\u0442\u044b\u0434\u0443 \u043c\u043e\u0433\u0443 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0434\u0430\u0436\u0435 \u0441\u043b\u0435\u0434\u0443\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043d\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0438\u0437 SDK \u0443 \u043c\u0435\u043d\u044f \u0443\u0448\u043b\u043e \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u043f\u043e\u043b\u0434\u043d\u044f &#8212; BeyondStudio \u0442\u043e \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u043c\u043e\u0433 \u043d\u0430\u0439\u0442\u0438 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0442\u043d\u044b\u0439 make, \u0442\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440, \u0442\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0442\u043e \u0435\u0449\u0435 \u0447\u0442\u043e \u043d\u0438\u0431\u0443\u0434\u044c. \u0412\u0441\u0435 \u044d\u0442\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043d\u0430 \u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0438 \u0447\u0435\u0440\u0442 \u0435\u0433\u043e \u0437\u043d\u0430\u0435\u0442 \u0447\u0442\u043e \u0435\u0449\u0435. \u0412 \u043e\u0431\u0449\u0435\u043c, \u043d\u0438\u0430\u0441\u0438\u043b\u0438\u043b, \u0445\u043e\u0442\u044f \u043f\u043e \u0438\u0442\u043e\u0433\u0443 \u0447\u0442\u043e-\u0442\u043e \u0442\u0430\u043c \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u043e\u0441\u044c.<\/p>\n<p>\u041d\u043e \u044d\u0442\u043e \u0435\u0449\u0435 \u043f\u043e\u043b\u0431\u0435\u0434\u044b. \u041f\u0440\u0438\u043c\u0435\u0440\u044b ZigBee \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442, \u043a\u043e\u0434 \u043f\u043e\u0434\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u043b\u0435\u0442\u0430\u0435\u0442\u0441\u044f. \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043d\u0430\u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u0442 \u0438\u0437 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0445 \u0430\u0431\u0431\u0440\u0435\u0432\u0438\u0430\u0442\u0443\u0440, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0432\u0435\u043d\u0433\u0435\u0440\u0441\u043a\u0443\u044e \u043d\u043e\u0442\u0430\u0446\u0438\u044e \u0438 \u0432 2 \u0440\u0430\u0437\u0430 \u0434\u043b\u0438\u043d\u043d\u0435\u0435, \u0447\u0435\u043c \u043c\u043e\u0433\u043b\u0438 \u0431\u044b. \u0421\u0430\u043c \u043a\u043e\u0434 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043b\u0430\u043f\u0448\u0443 \u0438\u0437 \u0434\u0435\u0444\u0430\u0439\u043d\u043e\u0432 \u0438 \u0441\u043e\u0442\u0435\u043d \u0441\u0442\u0440\u043e\u043a Makefile\u2019\u043e\u0432. \u0412\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 \u043a\u043e\u0434 \u043f\u0435\u0440\u0435\u043c\u0435\u0436\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u0431\u0430\u0439\u0442\u043d\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u043e\u0439 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 MAC \u0443\u0440\u043e\u0432\u043d\u044f \u0441\u0435\u0442\u0438, \u0432\u0441\u0435 \u044d\u0442\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043e \u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432, \u0430 \u0441 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0432\u043e\u043e\u0431\u0449\u0435 \u0441\u0445\u043e\u0434\u0443 \u043d\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u0448\u044c\u0441\u044f. \u0412 \u043e\u0431\u0449\u0435\u043c \u043a\u0440\u043e\u0432\u044c \u0438\u0437 \u0433\u043b\u0430\u0437, \u0438 \u0431\u0435\u0437 \u043f\u043e\u043b\u043b\u0438\u0442\u0440\u044b \u043d\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u0448\u044c\u0441\u044f (\u0435\u0441\u043b\u0438 \u0447\u0442\u043e, \u0440\u0435\u0447\u044c \u0438\u0434\u0435\u0442 \u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0435 JN-AN-1219-Zigbee-3-0-Controller-and-Switch)<\/p>\n<p>\u042f \u0443\u0432\u0435\u0440\u0435\u043d, \u0447\u0442\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u044d\u0442\u043e\u043c \u0432\u0441\u0435\u043c \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043d\u043e \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u043a \u044d\u0442\u043e\u043c\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043c\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u0443\u0433\u0430\u0441\u043d\u0435\u0442. \u0422\u0443\u0442 \u043d\u0443\u0436\u0435\u043d \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434. \u041e\u0431\u044b\u0447\u043d\u043e, \u0435\u0441\u043b\u0438 \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u043d\u043e\u0432\u043e\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438, \u044f \u043f\u0440\u043e\u0431\u0443\u044e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e \u043d\u0438\u0431\u0443\u0434\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0435. \u041c\u0435\u0433\u0430\u0431\u0430\u0439\u0442\u044b \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0438 \u0442\u044b\u0441\u044f\u0447\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 &#8212; \u044d\u0442\u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e, \u043d\u043e \u043a\u0430\u043a \u043f\u043e \u043c\u043d\u0435 \u043b\u0443\u0447\u0448\u0435 \u043d\u0430\u0447\u0430\u0442\u044c \u0441\u043e \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043d\u043e\u0439 \u043c\u043e\u0440\u0433\u0430\u043b\u043a\u0438. \u0412 \u043e\u0431\u0449\u0435\u043c, \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441 \u043d\u0443\u043b\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440\u0447\u0438\u043a, \u0447\u0442\u043e\u0431\u044b \u0448\u0430\u0433 \u0437\u0430 \u0448\u0430\u0433\u043e\u043c \u043f\u043e\u0441\u0442\u0438\u0433\u0430\u0442\u044c \u0433\u043b\u0443\u0431\u0438\u043d\u044b \u0433\u043b\u0443\u0431\u0438\u043d JN5169.<\/p>\n<h2>\u0416\u0435\u043b\u0435\u0437\u043e<\/h2>\n<p>\u0422\u0440\u0430\u0442\u0438\u0442\u044c $650 \u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043c\u0438\u0433\u0430\u0442\u044c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c &#8212; \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0436\u0438\u0440\u043d\u043e. \u0411\u043b\u0430\u0433\u043e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f EBYTE \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043a\u043e\u043f\u0435\u0435\u0447\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c E75-2G4M10S (\u043d\u0430 \u041a\u0414\u041f\u0412). \u041d\u0430 \u043d\u0435\u043c \u0438 \u0431\u0443\u0434\u0435\u043c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0414\u043b\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u043e\u0431\u0435\u0440\u0435\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0441\u0445\u0435\u043c\u0443<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0412 \u0441\u0445\u0435\u043c\u0435 \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u043e\u0434\u043d\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u0438 \u043e\u0434\u0438\u043d \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434. \u041f\u0438\u043d\u044b GPIO \u0432\u044b\u0431\u0440\u0430\u043d\u044b \u043d\u0430\u043e\u0431\u0443\u043c. \u041f\u0440\u043e\u0448\u0438\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c \u043c\u043e\u0436\u043d\u043e \u0447\u0435\u0440\u0435\u0437 UART. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u0436\u0430\u0442\u044c \u043f\u0438\u043d SPI_MISO \u043a \u0437\u0435\u043c\u043b\u0435 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0435\u0441\u0435\u0442\u0430, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u0441\u043b\u0443\u0436\u0430\u0442 2 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043d\u043e\u043f\u043a\u0438.&nbsp;<\/p>\n<p>\u0421\u0431\u043e\u0440\u043a\u0430 \u043d\u0430 <s>\u0441\u043e\u043f\u043b\u044f\u0445 <\/s>\u043c\u0430\u043a\u0435\u0442\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0435<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0421 \u0436\u0435\u043b\u0435\u0437\u043e\u043c \u0432\u0441\u0435, \u043f\u043e\u0440\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438.<\/p>\n<h2>Toolchain file <\/h2>\n<p>\u0414\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c CMake. \u0413\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0442\u0443\u043b\u0447\u0435\u0439\u043d\u0430 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u043d\u0435 \u043d\u0430\u0448\u043b\u043e\u0441\u044c, \u043d\u043e \u0435\u0433\u043e \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e. \u041d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0434\u0430\u044e\u0442 \u043f\u0443\u0442\u044c \u043a \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u043c \u0444\u0430\u0439\u043b\u0430\u043c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0444\u043b\u0430\u0433\u0438.<\/p>\n<p>\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0434\u0435\u0442 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 BeyondStudio (\u043d\u0435 \u0437\u043d\u0430\u044e \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u0435\u0433\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e). \u041d\u0430 \u0434\u0435\u043b\u0435 \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 gcc \u043a\u0440\u043e\u0441\u0441 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440.<\/p>\n<pre><code class=\"cmake\">SET(CMAKE_SYSTEM_NAME Generic)  IF(NOT TOOLCHAIN_PREFIX)      MESSAGE(STATUS \"No TOOLCHAIN_PREFIX specified\") ENDIF()  IF (WIN32)     SET(TOOL_EXECUTABLE_SUFFIX \".exe\") ELSE()     SET(TOOL_EXECUTABLE_SUFFIX \"\") ENDIF()  SET(TARGET_PREFIX \"ba-elf\")  SET(TOOLCHAIN_BIN_DIR ${TOOLCHAIN_PREFIX}\/bin) SET(TOOLCHAIN_INC_DIR ${TOOLCHAIN_PREFIX}\/include) SET(TOOLCHAIN_LIB_DIR ${TOOLCHAIN_PREFIX}\/lib)  SET(CMAKE_C_COMPILER ${TOOLCHAIN_BIN_DIR}\/${TARGET_PREFIX}-gcc${TOOL_EXECUTABLE_SUFFIX}) SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_BIN_DIR}\/${TARGET_PREFIX}-g++${TOOL_EXECUTABLE_SUFFIX})  SET(CMAKE_OBJCOPY ${TOOLCHAIN_BIN_DIR}\/${TARGET_PREFIX}-objcopy${TOOL_EXECUTABLE_SUFFIX} CACHE INTERNAL \"objcopy tool\") SET(CMAKE_OBJDUMP ${TOOLCHAIN_BIN_DIR}\/${TARGET_PREFIX}-objdump${TOOL_EXECUTABLE_SUFFIX} CACHE INTERNAL \"objdump tool\") SET(CMAKE_SIZE ${TOOLCHAIN_BIN_DIR}\/${TARGET_PREFIX}-size${TOOL_EXECUTABLE_SUFFIX} CACHE INTERNAL \"size tool\") SET(CMAKE_DEBUGER ${TOOLCHAIN_BIN_DIR}\/${TARGET_PREFIX}-gdb${TOOL_EXECUTABLE_SUFFIX} CACHE INTERNAL \"debuger\") SET(CMAKE_CPPFILT ${TOOLCHAIN_BIN_DIR}\/${TARGET_PREFIX}-c++filt${TOOL_EXECUTABLE_SUFFIX} CACHE INTERNAL \"C++filt\")  SET(CMAKE_C_FLAGS_DEBUG \"-Og -g\" CACHE INTERNAL \"c compiler flags debug\") SET(CMAKE_CXX_FLAGS_DEBUG \"-Og -g\" CACHE INTERNAL \"cxx compiler flags debug\") SET(CMAKE_ASM_FLAGS_DEBUG \"-g\" CACHE INTERNAL \"asm compiler flags debug\") SET(CMAKE_EXE_LINKER_FLAGS_DEBUG \"\" CACHE INTERNAL \"linker flags debug\") SET(CMAKE_C_FLAGS_RELEASE \"-Os -g\" CACHE INTERNAL \"c compiler flags release\") SET(CMAKE_CXX_FLAGS_RELEASE \"-Os -g\" CACHE INTERNAL \"cxx compiler flags release\") SET(CMAKE_ASM_FLAGS_RELEASE \"-g\" CACHE INTERNAL \"asm compiler flags release\") SET(CMAKE_EXE_LINKER_FLAGS_RELEASE \"\" CACHE INTERNAL \"linker flags release\")  SET(CMAKE_C_FLAGS \"\" CACHE INTERNAL \"c compiler flags\") SET(CMAKE_CXX_FLAGS \"\" CACHE INTERNAL \"cxx compiler flags\") SET(CMAKE_ASM_FLAGS \"\" CACHE INTERNAL \"asm compiler flags\") SET(CMAKE_EXE_LINKER_FLAGS \"\" CACHE INTERNAL \"executable linker flags\") SET(CMAKE_MODULE_LINKER_FLAGS \"\" CACHE INTERNAL \"module linker flags\") SET(CMAKE_SHARED_LINKER_FLAGS \"\" CACHE INTERNAL \"shared linker flags\")  SET(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_PREFIX} ${EXTRA_FIND_PATH}) SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) <\/code><\/pre>\n<p>\u041d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0441\u043b\u043e\u0436\u043d\u044b\u043c, \u043d\u043e \u0442\u0443\u0442 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e. \u042d\u0442\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e TOOLCHAIN_PREFIX (\u0432 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u043d\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 C:\/NXP\/bstudio_nxp\/sdk\/Tools\/ba-elf-ba2-r36379 &#8212; \u043f\u0443\u0442\u044c \u0433\u0434\u0435 \u043b\u0435\u0436\u0438\u0442 \u0442\u0443\u043b\u0447\u0435\u0439\u043d), \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0438\u0437 \u044d\u0442\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0443\u0442\u0438 &#8212; \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440, objdump, objcopy, \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 GNU\u0441\u043d\u044b\u0435 \u0448\u0442\u0443\u043a\u0438. \u0422\u0430\u043a\u0436\u0435 \u0442\u0443\u0442 \u0437\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u043a\u043b\u044e\u0447\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0438 \u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a\u0430 (\u043f\u043e\u043a\u0430 \u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0438\u0445 \u043f\u0443\u0441\u0442\u044b\u043c\u0438 &#8212; \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043a\u0430).&nbsp;<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442&nbsp;<\/p>\n<pre><code class=\"cmake\">SET(CMAKE_BUILD_TYPE Release) SET(CMAKE_TOOLCHAIN_FILE JN5169.cmake)  PROJECT(GPSLogger) CMAKE_MINIMUM_REQUIRED(VERSION 3.8) ENABLE_LANGUAGE(CXX)  ADD_EXECUTABLE(Test Test.c) <\/code><\/pre>\n<pre><code class=\"cpp\">#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt;  int main(void) { \treturn EXIT_SUCCESS; } <\/code><\/pre>\n<p>\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0432 \u0436\u0435\u043b\u0435\u0437\u043a\u0443 \u044d\u0442\u043e \u043f\u043e\u043a\u0430 \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e, \u043d\u043e \u0432\u043e \u0432\u0441\u044f\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u043d\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f<\/p>\n<details class=\"spoiler\">\n<summary>\u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>D:\\Projects\\NXP\\HelloJN5169World\\build&gt;cmake -G \"MinGW Makefiles\" -DTOOLCHAIN_PREFIX=C:\/NXP\/bstudio_nxp\/sdk\/Tools\/ba-elf-ba2-r36379 .. -- ====================== -- Toolchain paths -- TOOLCHAIN_BIN_DIR = C:\/NXP\/bstudio_nxp\/sdk\/Tools\/ba-elf-ba2-r36379\/bin -- TOOLCHAIN_INC_DIR = C:\/NXP\/bstudio_nxp\/sdk\/Tools\/ba-elf-ba2-r36379\/include -- TOOLCHAIN_LIB_DIR = C:\/NXP\/bstudio_nxp\/sdk\/Tools\/ba-elf-ba2-r36379\/lib -- CMAKE_C_COMPILER = C:\/NXP\/bstudio_nxp\/sdk\/Tools\/ba-elf-ba2-r36379\/bin\/ba-elf-gcc.exe -- CMAKE_CXX_COMPILER = C:\/NXP\/bstudio_nxp\/sdk\/Tools\/ba-elf-ba2-r36379\/bin\/ba-elf-g++.exe -- CMAKE_OBJCOPY = C:\/NXP\/bstudio_nxp\/sdk\/Tools\/ba-elf-ba2-r36379\/bin\/ba-elf-objcopy.exe -- CMAKE_OBJDUMP = C:\/NXP\/bstudio_nxp\/sdk\/Tools\/ba-elf-ba2-r36379\/bin\/ba-elf-objdump.exe -- CMAKE_SIZE = C:\/NXP\/bstudio_nxp\/sdk\/Tools\/ba-elf-ba2-r36379\/bin\/ba-elf-size.exe -- CMAKE_DEBUGER = C:\/NXP\/bstudio_nxp\/sdk\/Tools\/ba-elf-ba2-r36379\/bin\/ba-elf-gdb.exe -- CMAKE_CPPFILT = C:\/NXP\/bstudio_nxp\/sdk\/Tools\/ba-elf-ba2-r36379\/bin\/ba-elf-c++filt.exe -- ====================== -- Compiler flags -- CMAKE_C_FLAGS = -- CMAKE_CXX_FLAGS = -- CMAKE_ASM_FLAGS = -- CMAKE_EXE_LINKER_FLAGS = -- CMAKE_MODULE_LINKER_FLAGS = -- CMAKE_SHARED_LINKER_FLAGS = -- CMAKE_C_FLAGS_DEBUG = -Og -g -- CMAKE_CXX_FLAGS_DEBUG = -Og -g -- CMAKE_ASM_FLAGS_DEBUG = -g -- CMAKE_EXE_LINKER_FLAGS_DEBUG = -- CMAKE_C_FLAGS_RELEASE = -Os -g -- CMAKE_CXX_FLAGS_RELEASE = -Os -g -- CMAKE_ASM_FLAGS_RELEASE = -g -- CMAKE_EXE_LINKER_FLAGS_RELEASE = -- Configuring done -- Generating done -- Build files have been written to: D:\/Projects\/NXP\/HelloJN5169World\/build    D:\\Projects\\NXP\\HelloJN5169World\\build&gt;mingw32-make [ 50%] Building C object CMakeFiles\/Test.dir\/Test.c.obj [100%] Linking C executable Test [100%] Built target Test  <\/code><\/pre>\n<\/div>\n<\/details>\n<h2>Hello World \u043f\u043e \u0436\u0435\u043b\u0435\u0437\u044f\u0447\u043d\u043e\u043c\u0443. \u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u21161  <\/h2>\n<p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0432 \u044d\u0442\u0438 \u0431\u0435\u0437\u0434\u0443\u0448\u043d\u044b\u0435 \u0431\u0443\u043a\u043e\u0432\u043a\u0438 \u0432\u0434\u043e\u0445\u043d\u0443\u0442\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0436\u0438\u0437\u043d\u0438. \u041f\u043e \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u0438 \u0431\u0443\u0434\u0435\u043c \u043c\u0438\u0433\u0430\u0442\u044c \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u043e\u043c.&nbsp;<\/p>\n<p>\u041a\u043e\u0434 \u043f\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e GPIO (\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0435\u0439) \u043d\u0430\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 SDK. \u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f NXP \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 416-\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0436\u0435\u043b\u0435\u0437\u044f\u0447\u043d\u043e\u0435 API (JN-UG-3087 JN516x Integrated Peripherals API User Guide).<\/p>\n<p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f. \u041f\u043e\u043a\u0430 \u043f\u0443\u0441\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0439 \u043a DIO17.<\/p>\n<pre><code class=\"cpp\">#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt;  #include \"AppHardwareApi.h\"  #define BOARD_LED_BIT               (17) #define BOARD_LED_PIN               (1UL &lt;&lt; BOARD_LED_BIT) #define BOARD_LED_CTRL_MASK         (BOARD_LED_PIN)   int main(void) { \t\/\/ Initialize hardware \tvAHI_DioSetDirection(0, BOARD_LED_CTRL_MASK); \tvAHI_DioSetOutput(0, BOARD_LED_PIN);  \treturn EXIT_SUCCESS; } <\/code><\/pre>\n<p>\u041c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438\u0437 API \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438<\/p>\n<pre><code class=\"cmake\">IF(NOT SDK_PREFIX)      MESSAGE(FATAL_ERROR \"No SDK_PREFIX specified\") ENDIF()   INCLUDE_DIRECTORIES( \t${SDK_PREFIX}\/Components\/Common\/Include \t${SDK_PREFIX}\/Components\/HardwareAPI\/Include )  LINK_DIRECTORIES( \t${SDK_PREFIX}\/Components\/Library )  ADD_DEFINITIONS( \t-DJENNIC_CHIP_NAME=_JN5169 \t-DJENNIC_CHIP_FAMILY_NAME=_JN516x )  ADD_EXECUTABLE(HelloWorld HelloWorld.cpp) TARGET_LINK_LIBRARIES(HelloWorld \tHardwareApi_JN5169 ) <\/code><\/pre>\n<p>\u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c, \u043f\u0440\u0430\u0432\u0434\u0430,<\/p>\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-319712","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/319712","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=319712"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/319712\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=319712"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=319712"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=319712"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}