stm32編譯
1. STM32程序編譯出現錯誤,請各位幫忙
STM32程序編譯出現錯誤,是設置錯誤造成的,解決方法如下:
1、首先打開STM32 ST-LINK Utility,依次選擇「File ->Open File...」或者按快捷鍵「CTRL + O」准備打開一個燒錄文件。
2. stm32編譯時出錯問題解決
對於比較小的程序,一般只有一個c文件和一個頭文件,全局變數我們通常會直接定義在c文件中,在程序之前加int i定義。如果要在頭文件中定義有以下兩種方法:用extern來聲明:extern int i;這一句只是對變數 i 進行聲明,在c文件的程序之前必須加上int i進行定義。extern int i=0;這一句聲明和定義都做了。 對於大一點的程序,有很多c文件和頭文件,這個時候全局變數就必須在頭文件中聲明(不需要初始化),然後在一個c文件中定義(該初始化的要初始化)。如果在頭文件中定義,則編譯的時候會出現重復定義的錯誤。如果只有頭文件中聲明就會出現沒有定義有警告。 *** ERROR L104: MULTIPLE PUBLIC DEFINITIONS SYMBOL: K MODULE: 222.obj (222)出現上述錯誤則是因為變數k重復定義,把你的頭文件中的變數定義前加extern(只是變數聲明不用初始化),再在某一個你要調用該變數的c文件的程序之前再定義(注意第一個調用的c文件要負責附帶初始化該變數,其他調用的c文件就不需要初始化過程啦)一下就可以了。另外: 下次最好能把程序貼出來stm32編譯時出錯問題解決
3. STM32編譯出錯
error: #137: expression must be a modifiable lvalue
描述:表達式必須是一個可以修改的左值
主要出現在這種現象
:a=NUM;
NUM是一個數值或表達式
,a為一個變數
但a被定義為像const這種不可更改的類型導致NUM不能賦值給變數
解決方法要麼放棄賦值要麼修改變數屬性
4. 如何用arino的ide編譯stm32
用arino的ide編譯stm32方法:
1,先說說arino是個什麼東西
arino說白了就是有人寫了一個庫把晶元寄存器還有一些外圍的部件抽象出來了,使用arino就像是在pc上寫模擬器一樣,不需要我們寫任何硬體相關代碼
2,stm32如果要像arino的avr系列那樣控制的話,也需要有一個庫能把他抽象出來,把他的一些寄存器封裝起來,能夠直接調用,恩嗯,stm32的庫開發就是這樣的,不過還是要配置一些寄存器(為了加強控制能力)。
所以如果要把你在arino上的抽象搬到stm32上去,理論上是沒有問題的,不過需要注意版本是不是一樣的,stm32的型號有很多種,不同的型號外圍部件的操作方式會有些變化,所以一般對應一個版本定製一個版本庫
5. STM32編譯錯誤,初學者求指點
原因:
出現上述錯誤則是因為變數k重復定義,把你的頭文件中的變數定義前加extern(只是變數聲明不用初始化),再在某一個你要調用該變數的c文件的程序之前再定義(注意第一個調用的c文件要負責附帶初始化該變數,其他調用的c文件就不需要初始化過程啦)一下就可以了。
6. kiel tutinstm32文件能編譯嗎
可以。
STM32是ARM7核,而KEIL是ARM旗下的,KEIL只是一個開發環境,支持什_還需要下載相應的編譯器,你原來如果是學51的,肯定有C51編譯器,但是你需要去官網下載KEIL MDK就是所說的RVMDK,就是ARM的編譯器,包含STM32,然後安裝,然後看著教程打開KEIL選擇相應的晶元來建立工程就行了,不過需要破解。
一般在STM32工程使用Keil編譯之後,keil的build output窗口中會出現如圖所示的輸出信息,其中會顯示code_笮。_O-data、RW-data、ZI-data大小。ARM程序的組成(ARM系統中正在執行的程序,而非保存在ROM中的BIN映像文件,請注意區別):一個ARM程序包含3個部分:RO,RW和ZI,RO是程序中的指令和常量;RW是程序中已經初始化的變數;ZI是程序中未經初始化的變數;以上3點可以理解為:RO就是readonly,RW就是read/write,ZI就是zeroARM映像文件的組成:所謂的ARM映像文件就是燒錄到ROM中的BIN文件,也稱為Image文件,以下用Image文件來替代。Image文件包含了RO和RW數據,之所以Image文件不包含ZI數據,那是因為ZI數據都是0,沒必要包含,運行之前將ZI數據數據所在的區域清零即可,包含進去反而浪費存儲空間補充一個問題:Q:為什麼Image必須O,RW?A:因為RO中的指令和常量以及RW中初始化過的變數是不能像ZI那樣無中生有的。
7. stm32 用什麼編譯器好
應該IAR好很多。
同樣的ucosII本家的移植代碼Micrium-ST-uCOS-II-LCD-STM32,
用裡面自帶的keil工程和IAR工程編譯,
都設置為最大尺寸優化,
keil的編譯結果:
Program Size: Code=27562 RO-data=4870 RW-data=196 ZI-data=9240
FLASF佔用:Code+RO-data+RW-data = 27562 +4870 +196 = 32628位元組
RAM佔用:RW-data+ZI-data = 196 + 9240 = 9436位元組
IAR的編譯結果:
13 730 bytes of readonly code memory
5 618 bytes of readonly data memory
8 636 bytes of readwrite data memory
FLASF佔用:13 730 + 5 618 = 19348位元組
RAM佔用:8 636位元組
KEIL比IAR佔用FLASH多:32628- 19348 = 13280位元組
8. stm32編譯時出現error: #147-D的錯誤,該怎麼解決(keill環境下)
keill環境下,使用stm32編譯時出現error: #147-D的錯誤的解決方法:
1、右鍵我的電腦-管理-本地用戶和組-用戶-把裡面你的中文用戶名改成英文。
3、把MDK安裝在英文目錄。
STM32是基於ARM® Cortex® M 處理器內核的 32位快閃記憶體微控制器,為MCU用戶開辟了一個全新的自由開發空間,並提供了各種易於上手的軟硬體輔助工具。
STM32 MCU融高性能、實時性、數字信號處理、低功耗、低電壓於一身,同時保持高集成度和開發簡易的特點。業內最強大的產品陣容,基於工業標準的處理器,大量的軟硬體開發工具,讓STM32單片機成為各類中小項目和完整平台解決方案的理想選擇。按內核架構分為不同產品系列。
STM32中文官網:
2013年上線至今,為中國地區用戶提供快捷的途徑訪問、下載關於ST MCU的全部產品信息和技術文檔,同時也是一個和意法半導體直接溝通關於微控制器的平台。
用戶可以通過網站了解最新的32位Cortex-M單片機STM32及8位STM8單片機產品信息,下載熱門的ST MCU設計資源,涵蓋完整的晶元文檔、固件和軟體、評估開發板、開發工具及本地化的中文譯文、FAE實戰經驗、STM32培訓課件與視頻等資料。
此外,用戶還可以直接報名參加STM32全國研討會、STM32峰會、技術培訓等。
9. STM32原子的程序編譯時出現問題求解答
首先下載ST-LINK的驅動:,這是網路雲下載地址。解壓後執行dpinst_x86.exe,若不能用卸載後再執行dpinst_amd64.exe。完成後如圖所示。把ST-Link通過usb連接到電腦,然後打開設備管理器,可以看到會多出一個設備將圖中的ST-LINK連接到開發板後,再通過usb介面和電腦相連接,之後通過電源線給開發板供電。打開已經編寫好的程序,編譯一遍確保程序可用。(默認前提:MDK已經下載安裝,且添加了stm32的的支持包)根據圖中步驟,配置MDK,注意不要錯選漏選。點擊「SETTING」後出現圖中所示,按照途中信息配置(也可根據自己的需求配置)點擊「flashdownload」,勾選以框中3項,根據自己使用的stm32晶元配置第二個框中的晶元,確定回到上一界面。(默認前提:MDK已經下載安裝,且添加了stm32的的支持包)選擇「Utilities」,勾選圖中選項,完成後點擊確定。配置完成後,確保開發板開啟且正常使用,點擊「load」下載程序至開發板。完成後會有相應提示。
10. stm32編譯問題
在頭文件usart.h裡面是沒有定義它的,在不完全手冊里提到過,上面是這樣寫的
「這里需要注意一點,因為我們使用到了串口的中斷接收,必須在 usart.h 裡面義EN_USART1_RX 。該函數才會配置中斷使能,以及開啟串口 1 的 NVIC 中斷。這里我們把串口 1 中斷放在組 2,優先順序設置為組 2 裡面的最低。」
在原頭文件usart.h中是這樣寫的"//#define EN_USART1_RX //使能串口1接收"他以備註解釋的形式出現的,要把前面的「//」給去掉,「symbol usart_RX BUF」就唄定義了