#include <M5StickCPlus.h> void setup() { M5.begin(); Serial.begin(115200); M5.Lcd.setRotation(3); } void showmem(){ delay(100); Serial.printf("===============================================================\n"); Serial.printf("Mem Test\n"); Serial.printf("===============================================================\n"); Serial.printf("esp_get_free_heap_size() : %6d\n", esp_get_free_heap_size() ); Serial.printf("esp_get_minimum_free_heap_size() : %6d\n", esp_get_minimum_free_heap_size() ); //xPortGetFreeHeapSize()(データメモリ)ヒープの空きバイト数を返すFreeRTOS関数です。これはを呼び出すのと同じheap_caps_get_free_size(MALLOC_CAP_8BIT)です。 // Serial.printf("xPortGetFreeHeapSize() : %6d\n", xPortGetFreeHeapSize() ); // //xPortGetMinimumEverFreeHeapSize()また、関連heap_caps_get_minimum_free_size()するものを使用して、ブート以降のヒープの「最低水準点」を追跡できます。 // Serial.printf("xPortGetMinimumEverFreeHeapSize() : %6d\n", xPortGetMinimumEverFreeHeapSize() ); //heap_caps_get_free_size() さまざまなメモリ機能の現在の空きメモリを返すためにも使用できます。 // Serial.printf("heap_caps_get_free_size(MALLOC_CAP_EXEC) : %6d\n", heap_caps_get_free_size(MALLOC_CAP_EXEC) ); // Serial.printf("heap_caps_get_free_size(MALLOC_CAP_32BIT) : %6d\n", heap_caps_get_free_size(MALLOC_CAP_32BIT) ); // Serial.printf("heap_caps_get_free_size(MALLOC_CAP_8BIT) : %6d\n", heap_caps_get_free_size(MALLOC_CAP_8BIT) ); Serial.printf("heap_caps_get_free_size(MALLOC_CAP_DMA) : %6d\n", heap_caps_get_free_size(MALLOC_CAP_DMA) ); // Serial.printf("heap_caps_get_free_size(MALLOC_CAP_PID2) : %6d\n", heap_caps_get_free_size(MALLOC_CAP_PID2) ); // Serial.printf("heap_caps_get_free_size(MALLOC_CAP_PID3) : %6d\n", heap_caps_get_free_size(MALLOC_CAP_PID3) ); // Serial.printf("heap_caps_get_free_size(MALLOC_CAP_PID3) : %6d\n", heap_caps_get_free_size(MALLOC_CAP_PID4) ); // Serial.printf("heap_caps_get_free_size(MALLOC_CAP_PID4) : %6d\n", heap_caps_get_free_size(MALLOC_CAP_PID5) ); // Serial.printf("heap_caps_get_free_size(MALLOC_CAP_PID5) : %6d\n", heap_caps_get_free_size(MALLOC_CAP_PID6) ); // Serial.printf("heap_caps_get_free_size(MALLOC_CAP_PID6) : %6d\n", heap_caps_get_free_size(MALLOC_CAP_PID7) ); // Serial.printf("heap_caps_get_free_size(MALLOC_CAP_PID7) : %6d\n", heap_caps_get_free_size(MALLOC_CAP_PID3) ); // Serial.printf("heap_caps_get_free_size(MALLOC_CAP_SPIRAM) : %6d\n", heap_caps_get_free_size(MALLOC_CAP_SPIRAM) ); // Serial.printf("heap_caps_get_free_size(MALLOC_CAP_INTERNAL) : %6d\n", heap_caps_get_free_size(MALLOC_CAP_INTERNAL) ); // Serial.printf("heap_caps_get_free_size(MALLOC_CAP_DEFAULT) : %6d\n", heap_caps_get_free_size(MALLOC_CAP_DEFAULT) ); //Serial.printf("heap_caps_get_free_size(MALLOC_CAP_IRAM_8BIT) : %6d\n", heap_caps_get_free_size(MALLOC_CAP_IRAM_8BIT) ); // Serial.printf("heap_caps_get_free_size(MALLOC_CAP_INVALID) : %6d\n", heap_caps_get_free_size(MALLOC_CAP_INVALID) ); //heap_caps_get_largest_free_block()ヒープ内の最大の空きブロックを返すために使用できます。これは、現在可能な最大の単一割り当てです。この値を追跡し、合計空きヒープと比較すると、ヒープの断片化を検出できます。 // Serial.printf("heap_caps_get_largest_free_block(MALLOC_CAP_EXEC) : %6d\n", heap_caps_get_largest_free_block(MALLOC_CAP_EXEC) ); // Serial.printf("heap_caps_get_largest_free_block(MALLOC_CAP_32BIT) : %6d\n", heap_caps_get_largest_free_block(MALLOC_CAP_32BIT) ); // Serial.printf("heap_caps_get_largest_free_block(MALLOC_CAP_8BIT) : %6d\n", heap_caps_get_largest_free_block(MALLOC_CAP_8BIT) ); // Serial.printf("heap_caps_get_largest_free_block(MALLOC_CAP_DMA) : %6d\n", heap_caps_get_largest_free_block(MALLOC_CAP_DMA) ); // Serial.printf("heap_caps_get_largest_free_block(MALLOC_CAP_PID2) : %6d\n", heap_caps_get_largest_free_block(MALLOC_CAP_PID2) ); // Serial.printf("heap_caps_get_largest_free_block(MALLOC_CAP_PID3) : %6d\n", heap_caps_get_largest_free_block(MALLOC_CAP_PID3) ); // Serial.printf("heap_caps_get_largest_free_block(MALLOC_CAP_PID3) : %6d\n", heap_caps_get_largest_free_block(MALLOC_CAP_PID4) ); // Serial.printf("heap_caps_get_largest_free_block(MALLOC_CAP_PID4) : %6d\n", heap_caps_get_largest_free_block(MALLOC_CAP_PID5) ); // Serial.printf("heap_caps_get_largest_free_block(MALLOC_CAP_PID5) : %6d\n", heap_caps_get_largest_free_block(MALLOC_CAP_PID6) ); // Serial.printf("heap_caps_get_largest_free_block(MALLOC_CAP_PID6) : %6d\n", heap_caps_get_largest_free_block(MALLOC_CAP_PID7) ); // Serial.printf("heap_caps_get_largest_free_block(MALLOC_CAP_PID7) : %6d\n", heap_caps_get_largest_free_block(MALLOC_CAP_PID3) ); // Serial.printf("heap_caps_get_largest_free_block(MALLOC_CAP_SPIRAM) : %6d\n", heap_caps_get_largest_free_block(MALLOC_CAP_SPIRAM) ); // Serial.printf("heap_caps_get_largest_free_block(MALLOC_CAP_INTERNAL) : %6d\n", heap_caps_get_largest_free_block(MALLOC_CAP_INTERNAL) ); // Serial.printf("heap_caps_get_largest_free_block(MALLOC_CAP_DEFAULT) : %6d\n", heap_caps_get_largest_free_block(MALLOC_CAP_DEFAULT) ); // //Serial.printf("heap_caps_get_largest_free_block(MALLOC_CAP_IRAM_8BIT): %6d\n", heap_caps_get_largest_free_block(MALLOC_CAP_IRAM_8BIT) ); // Serial.printf("heap_caps_get_largest_free_block(MALLOC_CAP_INVALID) : %6d\n", heap_caps_get_largest_free_block(MALLOC_CAP_INVALID) ); // //heap_caps_get_minimum_free_size()指定された機能を持つすべての領域の合計最小空きメモリを取得します。 // Serial.printf("heap_caps_get_minimum_free_size(MALLOC_CAP_EXEC) : %6d\n", heap_caps_get_minimum_free_size(MALLOC_CAP_EXEC) ); // Serial.printf("heap_caps_get_minimum_free_size(MALLOC_CAP_32BIT) : %6d\n", heap_caps_get_minimum_free_size(MALLOC_CAP_32BIT) ); // Serial.printf("heap_caps_get_minimum_free_size(MALLOC_CAP_8BIT) : %6d\n", heap_caps_get_minimum_free_size(MALLOC_CAP_8BIT) ); // Serial.printf("heap_caps_get_minimum_free_size(MALLOC_CAP_DMA) : %6d\n", heap_caps_get_minimum_free_size(MALLOC_CAP_DMA) ); // Serial.printf("heap_caps_get_minimum_free_size(MALLOC_CAP_PID2) : %6d\n", heap_caps_get_minimum_free_size(MALLOC_CAP_PID2) ); // Serial.printf("heap_caps_get_minimum_free_size(MALLOC_CAP_PID3) : %6d\n", heap_caps_get_minimum_free_size(MALLOC_CAP_PID3) ); // Serial.printf("heap_caps_get_minimum_free_size(MALLOC_CAP_PID3) : %6d\n", heap_caps_get_minimum_free_size(MALLOC_CAP_PID4) ); // Serial.printf("heap_caps_get_minimum_free_size(MALLOC_CAP_PID4) : %6d\n", heap_caps_get_minimum_free_size(MALLOC_CAP_PID5) ); // Serial.printf("heap_caps_get_minimum_free_size(MALLOC_CAP_PID5) : %6d\n", heap_caps_get_minimum_free_size(MALLOC_CAP_PID6) ); // Serial.printf("heap_caps_get_minimum_free_size(MALLOC_CAP_PID6) : %6d\n", heap_caps_get_minimum_free_size(MALLOC_CAP_PID7) ); // Serial.printf("heap_caps_get_minimum_free_size(MALLOC_CAP_PID7) : %6d\n", heap_caps_get_minimum_free_size(MALLOC_CAP_PID3) ); // Serial.printf("heap_caps_get_minimum_free_size(MALLOC_CAP_SPIRAM) : %6d\n", heap_caps_get_minimum_free_size(MALLOC_CAP_SPIRAM) ); // Serial.printf("heap_caps_get_minimum_free_size(MALLOC_CAP_INTERNAL) : %6d\n", heap_caps_get_minimum_free_size(MALLOC_CAP_INTERNAL) ); // Serial.printf("heap_caps_get_minimum_free_size(MALLOC_CAP_DEFAULT) : %6d\n", heap_caps_get_minimum_free_size(MALLOC_CAP_DEFAULT) ); // //Serial.printf("heap_caps_get_minimum_free_size(MALLOC_CAP_IRAM_8BIT) : %6d\n", heap_caps_get_minimum_free_size(MALLOC_CAP_IRAM_8BIT) ); // Serial.printf("heap_caps_get_minimum_free_size(MALLOC_CAP_INVALID) : %6d\n", heap_caps_get_minimum_free_size(MALLOC_CAP_INVALID) ); //heap_caps_get_info()multi_heap_info_t上記の関数からの情報に加えて、ヒープ固有の追加データ(割り当て数など)を含む構造体を返します。 //Skip // heap_caps_print_heap_info()が返す情報の要約をstdoutに出力しheap_caps_get_info()ます。 //Serial.printf("heap_caps_print_heap_info(MALLOC_CAP_INTERNAL) :\n"); //heap_caps_print_heap_info(MALLOC_CAP_INTERNAL); // heap_caps_dump()そしてheap_caps_dump_all()意志出力は、ヒープ内の各ブロックの構造に関する情報を詳述します。これは大量の出力になる可能性があることに注意してください。 //Serial.printf("heap_caps_dump() :\n"); //heap_caps_dump(MALLOC_CAP_INTERNAL); } void loop() { M5.update(); // 各ボタンの状態を(読み取って)更新する:ボタンを判定するときは必須。 if (M5.BtnA.wasReleasefor(1000) ) { Serial.println("[A] was Pressed longer than 1s"); showmem(); } else if (M5.BtnA.wasReleased()) { Serial.println("[A] was Pressed"); } else if (M5.BtnB.wasReleasefor(1000) ) { Serial.println("[B] was Pressed longer than 1s"); } else if (M5.BtnB.wasReleased()) { Serial.println("[B] was Pressed"); } else if (M5.Axp.GetBtnPress() == 2) { Serial.println("[Power] was Pressed"); } delay(10); }