發表文章

ESP32學習筆記(五)-ESP32-IDF 使用官方步驟建置教學

圖片
由於安信可的Aithinker IDE有瑕疵,從git少上 clone下來的無法使用 只好乖乖使用官方的ESP-IDF建置來使用 準備工作: 1.MSY32: 下載 2.TTL轉COMPORT  ---------------------------------------------------------------- 1.下載後將MSY32移出至PC,運行c:\msys32/mingw32.exe 2.輸入 cd c:/msys32/home 4.從github上clone esp-idf下來: - git clone --recursive https://github.com/espressif/esp-idf.git 注意這裡有個 --recursive 選項。 如果你克隆ESP-IDF時沒有帶這個選項,你還需要運行額外的命令來獲取子模塊: cd esp-idf git submodule update --init 5.接下來要設定IDF_PATH: -打開C:\msys32\etc\profile.d -新增一個檔案  export_idf_path.sh( 每次打開msy32窗口都會進入 ) ,  並用 用記事本或notepad+開啟 -在裡面新增:export IDF_PATH="C:/msys32/home/esp-idf" -重新打開msy32.exe,輸入 printenv IDF_PATH 6.創建專案: - cd c:/msys32/home/esp-idf -  mkdir app (建立一個資料夾) - cd app -  cp -r $IDF_PATH/examples/get-started/hello_world . - cd hello_world (也可以直接打開資料夾將example的檔案移出在改名) 7.準備就緒: -到此步驟完成,準備build code,先將開發版或串口接好並確認com port -  cd  c:/msys32/home/esp-idf/app/Hello_World ...

ESP32學習筆記(四)-關閉Ecpipse 錯誤提示

圖片
-用Aithinker IDE有一個問題就是程式碼長長出現錯誤提示: 造成程式碼閱讀困難 關閉方法: Windows->Preferences->General->Editors->Text Editors->Annotations -點選Code Errors -旁邊勾勾取消 完成

ESP32學習筆記(三)-使用example步驟

圖片
此篇為要從esp-idf example中的範例移至app資料夾的步驟,拿hello_world為舉例 1.打開專案中的/app資料夾 -將資料夾main的內容全部刪除 -將/app資料夾中除了/build 以及/.git資料夾之外的資料刪除 -打開example/get-started/hello_world -將main資料夾內全部檔案移至/app/main -其餘資料複製至/app資料夾內 2.打開Aithinker_IDE,Build code步驟參考學習筆記(一)

ESP32學習筆記(二)-esp32燒錄固件步驟

圖片
1.接腳設定: -由於開發版多種,但本質上都是透過uart進行燒入,tx/rx接好即可 2.到樂鑫下載flash tool: - flash Tool下載網頁 -打開flash_download_tools_v3.6.5.exe(目前版本) -點擊ESP32 Download Tool 3.設定參數: -參考官方文件,燒入有3個檔案 -按下圖進行設定 -注意事項: START之前記得將GPIO0接地後重啟 下一篇: ESP32學習筆記(三)-使用example步驟

ESP32學習筆記(一)-ESP32-IDF 建置步驟

圖片
官方文件的IDE使用上複雜,跟ESP8266一樣使用安信可的AithinkerIDE 載點: AIthinkerIDE 這套IDE使用上簡單明瞭,安裝方法簡單就不多寫了 ------------------------------------------- 1.安裝Aithinker_IDE 2.打開configTool.exe 3.Cygwin/home/aithinker/project -將esp-idf資料夾整個刪掉 -到 esp sdk網站 下載ESP32-IDF -載完後將esp-idf-v3.1.3(目前下載版號為3.1.3)拉到Cygwin/home/aithinker/project 4.打開cygwin/Cygwin.bat - cd project - cd esp-idf-v3.1.3 - git clone https://github.com/espressif/esp-idf-template app  5.打開AiThinker_IDE.exe 6.刪除原本的esp-idf專案 7.導入專案:File->Import->點選"Existing Code as Makefile Project" 8.導入cygwin/home/aithinker/project/esp-idf-v3.1.3    -點選Cygwin GCC   -Finish 9.設定 -esp-idf-v3.1.3右鍵->Properties -c/c++ Build -Build directory欄後面加上app -Apply -ok 10設定Target -右鍵->Make Targets->Create -Target name: MeanuConfig -Build command : mintyy.exe -e make menuconfig -第二欄Make Target的Same as the target name勾勾取消,Make target清空 ...

ESP32學習筆記(前言)-ESP32 相關筆記

圖片
ESP32-WROOM-32 腳位圖

FreeRTOS學習筆記 (三)-時間管理vTaskDelay()及vTaskDelayUntil()

FreeRTOS 任務中,在函數中使用延時函數就會讓任務進入阻塞狀態 (block) , 通常使用 vTaskDelay() 及 vTaskDelayUntil() 。 -vTaskDelay() 為相對延時 -vTaskDelayUntil() 為絕對延時 要使用則在 FreeRTOSConfig.h 中必須定義 : #define INCLUDE_vTaskDelay          1 #define INCLUDE_pcTaskGetTaskName    1 -------------------------------------------------------- 1.vTaskDelay() 其原型為 : void vTaskDelay ( const TickType_t xTicksToDelay ) -參數: const TickType_t xTicksToDelay 如果直接給數值,如 vTaskDelay(100) ,則表示暫停 100 個 ticks ,由於每個 MCU 的 Ticks 不同, FreeRTOS 提供了 #define portTICK_RATE_MS portTICK_PERIOD_MS #define portTICK_PERIOD_MS  ( ( TickType_t ) 1000 / configTICK_RATE_HZ ) 幫我們轉為 ms ,故 vTaskDelay(100) 就是讓任務暫停 100ms 2.vTaskDelayUntil() 其原型為: void vTaskDelayUntil ( TickType_t * const pxPreviousWakeTime, const TickType_t xTimeIncrement ) 使用範例: // Perform an action every 10 ticks. void vTaskFunction( void * pvParameter...

FreeRTOS學習筆記 (二)-任務創建和刪除(xTaskCreate及vTaskDelete)

圖片
函數 功能 xTaskCreate() 動態創建一個任務 xTaskCreateStatic() 靜態創建一個任務 xTaskCreateRestricted() 創建使用 MPU 進行限制任務 vTaskDelay() 任務刪除 1. xTaskCreate ()      --創建一個任務,RAM默認使用heap_4.c(後面章節補充)管理內存。 新創建的任務默認是就緒狀態,如果當前無更高優先權的任務運行,此任務將立刻執行: pvTaskCode :任務函數(函數名稱) pcName :任務名子,名稱不能超過 configMAX_TASK_NAME_LEN, 會自動刪除超過字串 usStackDepth :任務的棧大小 pvParameters :傳遞給任務的參數 uxPriority :任務的優先權,0~configMAX_PRIORITIES-1 pvCreatedTask : 任務句柄。任務創建成功會返回此任務句柄,其他API也會用到      返回值: errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY:失敗,內存不夠 pdPASS:成功 2. vTaskDelete () --刪除任務函數,被刪除的任務將不存在也不再運行。 任務被刪除後,句柄將無法 繼 續使用,若使用 xTaskCreate() 創立則刪除後會釋放掉內存,申請的記憶體會在空閒任務中釋放,所以刪掉任務需要一點時間給空閒任務。 參數: xTaskToDelete :要刪除的任務句柄 返回值:無 ------------------------------------------------------------------------------ 測試: 1.啟動兩個Task void vTaskFunction1 ( void * pvParameters ) {   while (1)  {  taskENTER_CRITICAL();   pr...

FreeRTOS學習筆記(一) -基礎知識與了解

圖片
     FreeRTOS為一個輕量可裝載於MCU上的作業系統,與裸機最大差別在於可在MCU上執行多任務(TASK),任務特性: 支持搶占 可設定任務優先級 每個任務都有自己的記憶體空間(有時候不好去估算需要的大小,目前我都是先估算一個大小後再開始調整,以不浪費空間為主) 使用簡單 一, 任務狀態 --FreeRTOS狀態只會出現下圖中狀態之一 Running : 任務運行中,在單核心的MCU中永遠只會有一個任務在運行。 Ready : 任務處於準備中(沒有被掛起也無進入阻塞),因為目前有優先級更高的任務在執行。 Block (阻塞): 若任務處於此狀態,通常都是因為調用vTaskDelay()進入阻塞狀態,超過阻塞時間則進入Ready狀態。 Suspend (掛起): 任務進入此狀態都是調用了vTaskSuspend(),進入此狀態的任務將不再被調度器調用至運行狀態,直到調用vTaskResume()恢復。 二, 任務函式 -通常任務多為一個永久迴圈, void vTaskFunction ( void * pvParameters )  { for( ;; ) {                /*                    自己的任務運行程式                       */ vTaskDelay( xDelay ); /*也可用其他API進行延時,後面補充*/ }           vTaskDelete(NULL); /*要退出且刪除任務,一定要調用vTaskDelete()*/  } 任務函數沒有返回值 pvParameters :傳遞資料 若跳出迴圈,一定要使用vTaskDelet...

FreeRTOS學習筆記 (零 )-FreeRTOS系統配置

圖片
    FreeRTOS使用前該如何知道怎麼配置系統是很重要的,通常都是在FreeRTOSConfig.h中定義。 ====================================================== (1) #define configUSE_PREEMPTION     -設為1使用搶佔模式;設為0則為協作式模式     -搶佔式由系統決定如何調度     -協作式模式只有在某些時候才會進行任務切換:            >任務調用了taskYIELD()            >任務調用了會進入bLOCK的API            >中斷 (2) #define configUSE_IDLE_HOOK     -為1時使用空閒任務,被刪掉的任務都會在空閒任務釋放並分配空間,故使用vTaskDelete()       刪除任務要確保空閒任務有處理時間。     -空閒任務是為了確保至少有一個任務在運行,因此優先權通常為最低     -空閒任務原型:     void vApplicationMallocFailedHook( void ) (3) #define configUSE_TICK_HOOK     -為1則可以設立一個時間片中斷函式,可做定時器,其原型: void vApplicationTickHook ( void ) (4) #define configCPU_CLOCK_HZ     - 設置CPU時脈 (5) #define configTICK_RATE_HZ     -為系統節拍的頻率,每單位時間內有幾次tick,通常都是設1000 1ms (6) #define configM...