{"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_73 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 Content\"><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\" title=\"Grunds\u00e4tzliches\">Grunds\u00e4tzliches<\/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\" title=\"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\" title=\"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\" title=\"Conclusion\">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\" title=\"Related Posts\">Related Posts<\/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\" title=\"Sources\">Sources<\/a><\/li><\/ul><\/nav><\/div>\n\n<p>Hier beschreibe ich wie ein neues IDF Projekt angelegt wird. <\/p>\n\n\n\n<p>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><li><a href=\"https:\/\/www.fambach.net\/en\/espressif-idf-fuer-esp32-s2-installieren\/\" data-type=\"post\" data-id=\"6629\">Install Espressif IDF for ESP32-S2<\/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>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>Dieser Ordner enth\u00e4lt fast alles, was f\u00fcr ein neues Projekt ben\u00f6tigt wird. <\/p>\n\n\n\n<p>Den Unterordner components habe ich der Vollst\u00e4ndigkeit halber hinzugef\u00fcgt. Dieser enth\u00e4lt gekapselte Projekte wie zum Beispiel Bibliotheken. <\/p>\n\n\n\n<p>Die CMakeList.txt enth\u00e4lt 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>Ein \u00e4nlicher Inhalt ist im Makefile zu finden.<\/p>\n\n\n\n<p>Die Readme.md beschreibt das Beispielprojekt, kann sp\u00e4ter aber zur Dokumentation des eigenen Projektes dienen.<\/p>\n\n\n\n<p>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\u00fcr das Hauprogramm ist die component.mk nur ein Dummy, sie wird sp\u00e4ter f\u00fcr die &#8222;richtigen&#8220; Komponenten im Componets Ordner ben\u00f6tigt.<\/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>Die CMakeLists.txt Datei enth\u00e4lt die Komponentenbeschreibung f\u00fcr 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>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>und optional aus den ben\u00f6tigten Komponenten zusammen. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>COMPONENTS \"Comp1\" \"Comp2\"<\/code><\/pre>\n\n\n\n<p>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>Die main.c Datei enth\u00e4lt nur eine Funktione die main_app. Diese wird vom Controller aufgerufen und ist der Startpunkt f\u00fcr 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>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>Related Posts<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p><a href=\"https:\/\/www.fambach.net\/en\/?p=6943\">Hauptbeitrag<\/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><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><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\u00fcr 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\">Continue reading <span class=\"screen-reader-text\">\"Espressif IDF &#8211; GPIOs\"<\/span> <span class=\"meta-nav\">&rarr;<\/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],"modified_by":"sfambach","_links":{"self":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts\/7102"}],"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:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/media\/6947"}],"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}]}}