發表文章

ESP32學習筆記(零)-RTOS SDK使用筆記(包含燒錄)

圖片
最近都有用ESP8266 RTOS 怕之後又要花時間記憶怎麼build code跟燒code,在此先記錄一下 1.先到官方文件中提供的網址下載vitualBox: Please download VirtualBox from: https://www.virtualbox.org/wiki/Downloads 2.下載ESP8266_lubuntu_20141021.ova:     http://downloads.espressif.com/FB/ESP8266_GCC.zip --------------------------------------------------------------------------- 載完,配置一下(' 下載的SDK放入共享資料夾)就可以進入了: 1.打開LXterminal: 輸入"./mount.sh",會出現"sudo] password for esp8266:",輸入espressif 2.輸入 "cd Share":(Share為我在配置時設定的共享資料夾) 3.輸入"ls":    -理論上會出現你在共享資料夾放的SDK 4.現在打開sdk:    5.輸入"./gen_misc.sh",畫面會顯示設定: 按照流程自己做設定即可    6.完成畫面: 7.在用官方提供的flashDownloasTool進行燒錄:

筆記-array 刪除

之後要用到的,先在這邊留筆記 int arr[]={1,5,4,3,6,2}; void print_arr(int *arr) { int i=0; for(i=0;i<sizeof(arr);i++) { printf("%d ",arr[i]); } printf("\n"); } int search_data(int *arr,int data) { int i=0; for(i=0;i<sizeof(arr);i++) { if(arr[i]==data) { printf("find it!!\n"); return i; } } printf("\n"); return -1; } int delete_data(int *arr,int index) { int i=0; for(i=index;i<sizeof(arr);i++) { if(i==sizeof(arr)-1) arr[i]=0; else arr[i]=arr[i+1]; } print_arr(arr); } int find(int *arr,int data) { int index=search_data(arr,data); if(index!=-1) { delete_data(arr,index); return 0; } else { printf("can not find it\n"); return -1; } } int main(int argc, char *argv[]) { print_arr(arr); find(arr,6); find(arr,1); find(arr,9); return 0; }

ESP8266 RTOS 筆記(三)-如何在sdk中將.c放入自己的資料夾

圖片
        有時候寫code會想要新增一個資料夾來放自己的 lib 在esp8266中需要一些步驟才能成功編譯 ======================================================== 假設我在我的專案中新增一個資料夾叫做my_lib 在裡面新增一個.c檔跟一個show()函式,build code會出現以下訊息: 很明顯可以看到找不到show()。 解決方法如下: 先打開user資料夾,裡面會有一個Makefile檔案,將Makefile複製到資料夾mylib 打開在mylib資料夾中的Makefile: 在前面的地方會有 將 GEN_LIBS = libuser.a 改成 GEN_LIBS = libmylib.a 接下來打開專案的Makefile 先找到 SUBDIRS= 新增自己新增的資料夾 my_lib 到下面找 COMPONENTS_eagle.app.v6 = 新增  my_lib/libmylib.a 現再進行build code,就可以成功通過了! 自己遇到這問題時,不知道該怎麼處理 直到前陣子自己稍微完一下Makeflie與GCC,對Makefile有稍微了解 所以回頭來看這問題就很自然的從makefile中下手,就設定完成了 最大的原因還是自己經驗不夠,對makefile不熟 技術這條路真的永遠也走不完!!

ESP8266 RTOS 筆記(三)-GPIO(3)_input使用

這篇直接講解怎麼設定esp8266 gpio input 中斷如何使用 實例: void gpio_intr_handler(void) {     _xt_isr_mask(1<<ETS_GPIO_INUM);    //disable interrupt     os_delay_us(20*1000);//delay 20ms     if(!GPIO_INPUT_GET(GPIO_ID_PIN(12)))     {         printf( "\r\n receive gpio12 press!\n" );     }     if(!GPIO_INPUT_GET(GPIO_ID_PIN(13)))     {     printf( "\r\n receive gpio13 press!\n" );     }     if(!GPIO_INPUT_GET(GPIO_ID_PIN(2)))     {     printf( "\r\n receive gpio2 press!\n" );     }     if(!GPIO_INPUT_GET(GPIO_ID_PIN(14)))     {     printf( "\r\n receive gpio14 press!\n" );     }     GPIO_REG_WRITE(             GPIO_STATUS_W1TC_ADDRESS,GPIO_Pin_2|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14 ); //clear interrupt mask     _xt_isr_unmask(1 << ET...

ESP8266 RTOS 筆記(二)-GPIO(2)_OUTPUT設定與介紹

    此章節為記錄 esp8266的gpio output部分 從關方手冊可以看到幾個有關GPIO的registers: Output enable register: GPIO_ENABLE_W1TS Output disable register: GPIO_ENABLE_W1TC Output low level register GPIO_OUT_W1TC   Output high level register GPIO_OUT_W1TS  每個REGISTER皆為16個bits,bit[15:0] 1.GPIO_ENABLE_W1TS: 相對應的bit設為1,此IO的output將至能 例如:   欲將gpio4設為output,則此register設為0x10   欲將gpio5設為output,則此register設為0x20   若希望gpio4與gpio5皆設為output,則此register設為0x30 2.GPIO_ENABLE_W1TC: 關閉output功能, 相對應的bit設為1,此IO的output將被關閉 例如:   欲將gpio4的output失能,則此register設為0x10   欲將gpio5的output失能,則此register設為0x20   gpio4與gpio5的output皆失能,則此register設為0x30 3. GPIO_OUT_W1TC   bit[15:0] output low level bit 設為1則腳位為為High level 例如: gpio4要設為low,則此register設為0x10 4. GPIO_OUT_W1TS  bit[15:0] output high level bit 設為1則腳位為為High level 例如: gpio4要設為high,則此register設為0x10 看完register後再來看一下gpio.h中的一些定義: void gpio_output_conf ( uint32 set_mask, uint32 clear_ma...

ESP8266 RTOS 筆記(一)-GPIO(1)

    此章節為 記錄ESP8266的gpio設定筆記 從gpio.h可以看到GPIO的結構參數,定義很簡單: typedef enum {     GPIO_PIN_INTR_DISABLE = 0,      /**< disable GPIO interrupt */     GPIO_PIN_INTR_POSEDGE = 1,      /**< GPIO interrupt type : rising edge */     GPIO_PIN_INTR_NEGEDGE = 2,      /**< GPIO interrupt type : falling edge */     GPIO_PIN_INTR_ANYEDGE = 3,      /**< GPIO interrupt type : bothe rising and falling edge */     GPIO_PIN_INTR_LOLEVEL = 4,      /**< GPIO interrupt type : low level */     GPIO_PIN_INTR_HILEVEL = 5       /**< GPIO interrupt type : high level */ } GPIO_INT_TYPE ; typedef enum {     GPIO_Mode_Input = 0x0,          /**< GPIO mode : Input */     GPIO_Mode_Out_OD ,               /**< GPIO mode : Output_OD */   ...

RTL8711-sdram使用方法與心得

圖片
       RTL8711使用中,因為需要放幾kb的字串,顧考慮將這些字串放置sdram, 不過使用中遇到些許陷阱,在這裡筆記一下。 一開始按照文件的方式將字串宣告前面加上 SECTION(".sdram.data") Build Code還是出現SRAM不夠,我就好奇,先翻了一下手冊 可以知道: SRAM的address從 0x10000000~0x1006FFFF SDRAM的address從 0x30000000~0x301FFFFF 用&確認字串位址有無在SDRAM,結果如下: e 發現除了testt這個指向char指標有被放在SDRAM,他指向的內容都還是在SRAM 原因在於宣告的方式有問題: _ 這樣宣告只有讓testt這個指向char的指標放在SDRAM裡面,改成這樣即可: 其結果為: 這個問題非常有趣,沒有仔細去處理就是一個問題 應該算是一個本身對C語言不夠精通的關係所導致

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 腳位圖