tft每日頭條

 > 生活

 > 單片機各代碼含義

單片機各代碼含義

生活 更新时间:2024-07-23 18:13:55

之前一直很奇怪一個問題,每次寫好單片機程序之後,用燒錄軟件進行燒錄時,能看到燒錄文件也就是 hex 的文件大小:

我用的單片機芯片是 STM32F103C8T6,程序儲存器(FLASH)隻有 64K。

從上圖可以看出,hex 有 128K。

我有兩點疑問,

1. 隻是一個很簡單的平衡小車程序而已,有 128K,這麼大嗎?

2. 就算有 128K,能下載到隻有 64K 容量的單片機中去?

這可能是一道送命題!

下面開始我們的探索之旅,以 STM32 開發為例。在 keil 中進行程序編譯之後,在界面部分:

單片機各代碼含義(單片機的程序有多大)1

很多朋友估計看到這界面,也隻關心 2 個點:

第一、自己編寫的程序是否正确生成了 hex!第二、自己編寫的程序有沒有錯誤,有沒有警告!

在圖中紅線部分:

有 4 個:Code、RO-data、RW-data、ZI-data。

Code:表示所要執行的代碼,程序中所有的函數都位于此處。

RO-data:表示隻讀數據,程序中所定義的全局常量數據和字符串都位于此處。

RW-data:表示已初始化的讀寫數據,程序中定義并且初始化的全局變量和靜态變量位于此處。

ZI-data:表示未初始化的讀寫數據,程序中定義了但沒有初始化的全局變量和靜态變量位于此處。

從描述中可以得出:

1. 下載到單片機 FLASH 的程序是:Code RO-data RW-data(上圖中數據為字節數,kb=byte/1024);

hex=(39546 5862 12428)/1024=56.48

2. 運行在 RAM 中的數據是:RW-data ZI-data;

原來 window 下顯示的 hex 大小,并非是我們下載到單片機中的 hex 大小。

關于為什麼顯示不同,這又是一個十分有趣的問題,有興趣的朋友可以一起探讨下。

最後,貌似 C8T6 這個芯片的資源差不多被榨幹了,要考慮換芯片了。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved