我已經爲32位ARM內核微控制器項目編寫了一個C程序。該項目有一個LCD,所以我寫了加載文本的功能,以顯示在LCD的內部RAM,功能:用於調用函數的代碼存儲器(C ARM-GCC)
/*-------------------------------------------
* Name : LCD_Show_String
* Description : Load a line of text to LCD's RAM
* Argument(s) : row - load to which row in LCD.
* *str - The text
* *font_table - the font table to be used
* *font_descriptor - information of the font table
* align - Align ALIGN_LEFT, ALIGN_CENTER or ALIGN_RIGHT
* print_now - 0: Do not print the text on LCD now
* 1: Print the text on LCD immediately
* mode - PIXEL_ON, PIXEL_OFF or PIXEL_XOR (method to print each pixel)
*
* Return value: Total width of the string printed.
* -----------------------------------------------*/
UINT16_T LCD_Show_String(UINT8_T row, const UINT8_T *str, const UINT8_T *font_table, \
const UINT16_T *font_descriptor, LCD_Align_t align,
UINT8_T print_now, LcdPixelMode mode)
當我調用該函數:
LCD_Show_String(7, "TEST", small_font_bitmap,
small_font_des, ALIGN_CENTER, 0, PIXEL_ON);
我發現每個當我調用這個函數時,它使用了40個字節的代碼存儲器。另外如果我增加了函數中的參數個數,所需的內存會更多。例如最初我在這個函數中有13個參數,每次我調用這個函數時,它使用了大約100個字節。
我想問問這是正常的嗎?爲什麼它用盡了這麼多的內存?我可以減少使用的內存嗎?
編譯器是ARM GCC編譯器
謝謝。
你的MCU有多少內存? –
它有16KB的RAM,但我說的是程序存儲器,而不是RAM。它有256KB的內存,但我幾乎用完了它。 – eepty
是否嘗試在'-Os'模式下編譯? –