{"id":7102,"date":"2021-01-07T10:58:45","date_gmt":"2021-01-07T10:58:45","guid":{"rendered":"https:\/\/www.fambach.net\/?p=7102"},"modified":"2021-01-07T16:01:06","modified_gmt":"2021-01-07T16:01:06","slug":"espressif-idf-projekt-erstellen","status":"publish","type":"post","link":"https:\/\/www.fambach.net\/en\/espressif-idf-projekt-erstellen\/","title":{"rendered":"Espressif IDF \u2013 Create Project"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 ez-toc-wrap-left counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Contents\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewbox=\"0 0 24 24\" version=\"1.2\" baseprofile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks-2\/#Grundsatzliches\" >Grunds&auml;tzliches<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks-2\/#Ausgang\" >Ausgang<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks-2\/#Eingang\" >Eingang<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks-2\/#Fazit\" >Conclusion<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks-2\/#Verwandte_Beitrage\" >Verwandte Beitr&auml;ge<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks-2\/#Quellen\" >Sources<\/a><\/li><\/ul><\/nav><\/div>\n\n<p class=\"wp-block-paragraph\">Hier beschreibe ich wie ein neues IDF Projekt angelegt wird. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wie die IDF, auch in Verbindung mit VS-Code, genutzt und installiert wird, habe ich unter folgenden Links schon beschrieben und ist nicht Gegenstand dieses Beitrags. <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.fambach.net\/en\/espressif-idf-fuer-esp32-s2-installieren\/\" data-type=\"post\" data-id=\"6629\">Espressif IDF f&uuml;r ESP32-S2 Installieren<\/a><\/li><li><a href=\"https:\/\/www.fambach.net\/en\/vs-code-espressif-idf\/\" data-type=\"post\" data-id=\"6541\">VS-Code Espressif IDF<\/a><\/li><li><a href=\"https:\/\/www.fambach.net\/en\/lilygo-ep32-s2-v1-1\/\" data-type=\"post\" data-id=\"6274\">LILYGO EP32 S2 V1.1<\/a> (1. Anwendung)<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ein guter Start ist das IDF-Beispiel examples\/get-started\/sample_project aus dem esp-idf Ordner zu kopieren.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"199\" height=\"159\" src=\"https:\/\/www.fambach.net\/wp-content\/uploads\/2021-01-01-14_31_51.jpg\" alt=\"\" class=\"wp-image-6944\"><figcaption>IDF Beispiele &#8211; sample_project Ordnerinhalt<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Dieser Ordner enth&auml;lt fast alles, was f&uuml;r ein neues Projekt ben&ouml;tigt wird. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Den Unterordner components habe ich der Vollst&auml;ndigkeit halber hinzugef&uuml;gt. Dieser enth&auml;lt gekapselte Projekte wie zum Beispiel Bibliotheken. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die CMakeList.txt enth&auml;lt einen Verweis auf die standard Make-Datei und den Projekt Namen. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>include($ENV{IDF_PATH}\/tools\/cmake\/project.cmake)\nproject(main)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ein &auml;nlicher Inhalt ist im Makefile zu finden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Readme.md beschreibt das Beispielprojekt, kann sp&auml;ter aber zur Dokumentation des eigenen Projektes dienen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der Ordner main ist die Spielwiese des neuen Projektes. Hier finden wir unser Hauptprogramm (main.c), eine weitere CMakeLists.txt Datei und die component.mk. Hier werden auch alle Unterprogramm-Dateien abgelegt. F&uuml;r das Hauprogramm ist die component.mk nur ein Dummy, sie wird sp&auml;ter f&uuml;r die &#8222;richtigen&#8220; Komponenten im Componets Ordner ben&ouml;tigt.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"291\" height=\"121\" src=\"https:\/\/www.fambach.net\/wp-content\/uploads\/2021-01-01-14_42_12.jpg\" alt=\"\" class=\"wp-image-6945\"><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Die CMakeLists.txt Datei enth&auml;lt die Komponentenbeschreibung f&uuml;r unser Hauptprogramm. Sie setzt sich aus den verwendeten Quellcode-Dateien <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SRCS=\"main.c\" \"datei1.c\" \"datei2.c\" \"...\" <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">den Include-Pfaden<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>INCLUDE_DIRS \".\" \"pfad2\" \"pfad ...\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">und optional aus den ben&ouml;tigten Komponenten zusammen. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>COMPONENTS \"Comp1\" \"Comp2\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Unsere intiale Version  sieht wie folgt aus<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>idf_component_register(SRCS \"main.c\"\n INCLUDE_DIRS \".\" )<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Die main.c Datei enth&auml;lt nur eine Funktione die main_app. Diese wird vom Controller aufgerufen und ist der Startpunkt f&uuml;r unser Programm. Die Standard IO wird auch schon referenziert.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"303\" height=\"198\" src=\"https:\/\/www.fambach.net\/wp-content\/uploads\/2021-01-02-14_40_10.jpg\" alt=\"\" class=\"wp-image-6947\"><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Fazit\"><\/span>Conclusion<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Das Projekt ist schnell kopiert und man hat fast alles was man braucht. Je nachdem welche Applikation erstellt werden soll, bietet es sich an eines der anderen Projekte im Beispielordner zu kopieren.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Verwandte_Beitrage\"><\/span>Verwandte Beitr&auml;ge<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.fambach.net\/en\/?p=6943\">Main contribution<\/a><\/p>\n\n\n<div class=\"display-posts-listing\">\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-projekt-erstellen\/\">Espressif IDF \u2013 Create Project<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-konsolenausgabe\/\">Espressif IDF \u2013 Console Output<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-fehlerbehandlung\/\">Espressif IDF \u2013 Error Handling<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-log-nachrichten\/\">Espressif IDF \u2013 Log Messages<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-timer\/\">Espressif IDF \u2013 Timer<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-menuconfig\/\">Espressif IDF \u2013 Menuconfig<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks\/\">Espressif IDF \u2013 Tasks<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks-2\/\">Espressif IDF \u2013 GPIOs<\/a><\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Quellen\"><\/span>Sources<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/docs.espressif.com\/projects\/esp-idf\/en\/latest\/esp32\/get-started\/index.html#step-5-start-a-project\" target=\"_blank\" rel=\"noreferrer noopener\">IDF-Start a Project<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a rel=\"noreferrer noopener\" href=\"https:\/\/docs.espressif.com\/projects\/esp-idf\/en\/latest\/esp32\/contribute\/creating-examples.html\" target=\"_blank\">IDF-Creating Examples<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Hier beschreibe ich wie ein neues IDF Projekt angelegt wird. Wie die IDF, auch in Verbindung mit VS-Code, genutzt und installiert wird, habe ich unter folgenden Links schon beschrieben und ist nicht Gegenstand dieses Beitrags. Espressif IDF f&uuml;r ESP32-S2 Installieren VS-Code Espressif IDF LILYGO EP32 S2 V1.1 (1. Anwendung) Ein guter Start ist das IDF-Beispiel &#8230;<\/p>\n<a href=\"https:\/\/www.fambach.net\/en\/espressif-idf-tasks-2\/\" class=\"read-more-link\">Carry on reading <span class=\"screen-reader-text\">\"Espressif IDF &#8211; GPIOs\"<\/span> <span class=\"meta-nav\">\u2192<\/span><\/a>","protected":false},"author":1,"featured_media":6947,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"no","_lmt_disable":"no","footnotes":""},"categories":[184,188,472,473,496],"tags":[497,477,465,474,498,476,351],"class_list":["post-7102","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c-c","category-esp-32","category-esp32-s2","category-espressif-idf","category-how-to","tag-c-2","tag-esp-idf","tag-espressif","tag-espressif-idf","tag-framework","tag-idf","tag-programmierung","penguin-post","penguin-post-not-sticky"],"modified_by":"sfambach","_links":{"self":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts\/7102","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/comments?post=7102"}],"version-history":[{"count":7,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts\/7102\/revisions"}],"predecessor-version":[{"id":7115,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts\/7102\/revisions\/7115"}],"wp:attachment":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/media?parent=7102"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/categories?post=7102"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/tags?post=7102"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}