發表文章

目前顯示的是 8月, 2019的文章

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 << ETS_GPIO_INUM); //Enable the GPIO interrupt } void buttonInit(void) {       GPIO_ConfigTypeDef gpio_in_cfg;       gpio_in_cfg. GPIO_IntrType = GPIO_PIN_INTR_NEGEDGE;       gpio_in_cfg. GPIO_Mode = GPIO_Mode_Inp

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_mask, uint32 enable_mask, uint32 disable_mask) {     GPIO_REG_WR

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 */     GPIO_Mode_Output ,              /**< GPIO mode : Output */     GPIO_Mode_Sigma_Delta ,         /**< GPIO mode : Sigma_Delta */ } GPIOMode_TypeDef ; typedef enum {     GPIO_PullUp_DIS = 0x0,      /**< disable GPIO pullup */     GPIO_PullUp_EN  = 0

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語言不夠精通的關係所導致