ESP8266_RTOS - 儲存篇(1) spi_flash_write& spi_flash_read

   前言
     要做一個專案,儲存是一個很重要的功能,目前據我所了解的,ESP8266有3種方式可以用:
  1. 直接寫入flash
  2. nvs
  3. spiffs
此篇為flash的讀寫筆記

正文

可以看到有三個函式可以用,分別為:

  • 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!!
















留言

這個網誌中的熱門文章

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

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

C語言筆記-文本處理(1) 善用 asprintf取代sprintf