ESP8266_RTOS - 儲存篇(1) spi_flash_write& spi_flash_read
前言
要做一個專案,儲存是一個很重要的功能,目前據我所了解的,ESP8266有3種方式可以用:
- spi_flash_erase_sector
- spi_flash_write
- spi_flash_read
要注意的是flash的使用,是以4K為一個單位進行讀寫
程式碼
用結構(struct)儲存在flash
#include <esp_spi_flash.h> //一定要加
=================
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | static void setup_tests() { if (start == 0) { start = 0x7C*4*1024; printf("Test data partition @ 0x%x\n", start); } } typedef struct test{ int a; int b; }TT; void test() { setup_tests(); spi_flash_erase_sector(start); TT tet={ .a=123, .b=666 }; ESP_ERROR_CHECK(spi_flash_write(start,(uint8_t*)&tet,sizeof(struct test))); TT read={0}; ESP_ERROR_CHECK(spi_flash_read(start,(uint8_t*)&read,sizeof(struct test))); } |
上述程式碼中,第23行與26行中 (uint8_t*)一定要加,不加會crash!!
留言
張貼留言