cubeide編譯器優化
⑴ stm32cubeide中hex文件老是生不成是怎麼回事
stm32cubeide不要使用默認即可生成hex文件。根據查詢相關公開信息:在編譯後邊有一個小魔術棒類似的按鈕,點擊找到output一欄,勾選生成hex文件,再去建工程的路徑下去找就會有了。
⑵ stm32cubemx stm32cubeprog stm32cubeide分別是做什麼的啊,必須要一起用嗎
STM32CubeMX--圖形化配置工具,
STM32CubeProg--軟體下載工具,
STM32CubeIDE--開發環境。
⑶ 嵌入式新手學寄存器還是庫函數
如果有相關嵌入式開發基礎,可以從寄存器開始學。如果是第一次接觸單片機,建議從庫函數開始學,這樣上手快,等熟練後分析庫函數,就可以學習各寄存器了。這還用問嗎?當然是寄存器了。
哦,不對,當然是庫函數了。
下面是我以前寫了一篇匯總文章,可以看一下;
【STM32系列匯總】博主的STM32實戰快速進階之路(持續更新)_GREYWALL-CSDN博客
先說一下目前ST推出的CubeMX;
STM32 基於 CubeMX配置GPIO點亮LED燈(超級詳細+圖文並茂)
嘗試使用Cube進行一些開發學習,這里對此做一個梗概,先有一個全面的了解。
Cube全家桶
曾幾何時,ST剛推出CubeMX的時候,自動生成的外設初始化代碼都會有這樣那樣的錯誤,而如今,隨著軟體的迭代升級,Cube生態也越來越完善,並且使用也越來越方便,ST推出的STM32Cube Ecosystem提供了免費整套的開發軟體工具和嵌入式軟體包,其中可以從晶元的外設配置,程序開發,程序下載以及系統監視一系列的功能。如下圖所示;
STM32 CubeMX 幾乎STM32的設備都可以使用這個工具初始化配置代碼,這個是基於Java開發的圖形化界面配置軟體,可以為Cortex-M自動生成需要配置的C代碼,還可以為支持Linux系統的Cortex-A內核生成設備樹。
STM32 CubeIDE 這是一款ST推出的免費的集成開發環境,基於Eclipse和GNU C/C++ 等開源工具鏈,可以編譯調試代碼,並且官方也將STM32 CubeMX集成到IDE中,這樣整個軟體的配置和開發變得渾然一體,便捷非常。
STM32CubeProgrammer 軟體編程工具,支持(JTAG,SWD,UART,USB DFU,I2C,SPI,CAN)等方式對設備和外部存儲器進行讀寫。
STM32CubeMonitor 系列工具。強大的監視工具可幫助開發人員實時微調其應用程序的行為和性能,這個目前還沒有嘗試,暫且先相信官方的自誇吧。
所以使用以上的ST Cube全家桶進行STM32的軟體開發,還是有不少坑要在實踐過程中慢慢爬,整體的一個流程基本如下;
第一步:使用 CubeMX初始化相應的晶元外設功能等等;
第二步:使用CubeIDE進行代碼編輯調試等操作,當然,如果你喜歡也可以使用IAR,Keil,或者VSCode,這個完全出自個人喜好和習慣,但是據說CubeIDE里集成了CubeMX,這個難道不香嗎? 加上如果想使用 gcc編譯器,那也省去了很多配置的麻煩;
第三步:使用CubeProgrammer進行程序燒錄,主要是支持的協議多啊,還可以吧,感覺是吹的挺厲害的;
第四步:以後可能會出更多的功能插件,目前感覺不是十分必要。
CubeMX
STM32 CubeMX的安裝,十分簡單,不過下載需要提交郵箱,基本根據系統提示就可以完成,另外,STM32 CubeMX目前自動生成的代碼支持官方的HAL庫和LL庫,像以前筆者常用的標准外設庫就已經被ST拋棄了,最新的STM32F7已經不支持標准外設庫了。 同時,CubeMX初始化生成C代碼項目,最終的工程可以符合IAR,Keil MDK和GCC,所以這里相對來說比較方便,不用對著手冊擼寄存器了,也不用對著官方標准外設庫demo進行移植,真的是哪裡不會點哪裡。
HAL庫的封裝相對來說好一點,但是代碼讀起來相對比較冗雜,通用性和移植性好,符合軟體工程的設計思想,那麼會犧牲一點效率了。
LL庫會再底層一點,這幾個的選擇還是看個人喜好和團隊的需要了。
CubeIDE
再官網下載CubeIDE這個軟體並安裝,假設你已經成功安裝並打開了軟體,會看到;
這時候CubeIDE已經集成了CubeMX了,新建STM32工程,step by step即可快速開始了。
CubeProg
整體看了一下 STM32 CubeProg 的介紹,其實有點還是可以的,首先這個軟體支持多平台如:Windows, Linux, macOS等等,Java 進行開發的有點,這一系列差不多都是用Java開發的吧,另外可能對st-link的支持比較好,如果使用jlink的話,用個openocd也無妨,但是畢竟是套裝,下面簡單羅列一下;
支持擦除,讀寫Flash等等操作;
支持Motorola S19, HEX, ELF 和 二進制格式;
ST-LINK的固件升級;
多平台:Windows, Linux, macOS,其實就看好這一點;
結語
對於Cube進行了簡單的學習和介紹,目前還有不少坑要爬,建議看一下HAL的封裝,有必要LL也可以看看,基本上還是符合CMSIS那套標准。另外關於開發環境,如果需要使用CubeIDE進行開發,它已經集成了CubeMAX,則無需另外下載了,直接一站式服務搞定,如果只需要生成初始化代碼,那麼CubeMAX還是有必要單獨裝一下的。至於寄存器,開發起來比較費時間。
手動碼字,嚴重影響了我拔刀的速度,如果你覺得我走心,文章對您有所幫助,點贊,支持一波吧!
歡迎關注@極客小麥
編輯於 2021-04-09著作權歸作者所有
贊同 25
⑷ 如何利用stm32cubeide的原有工程改寫代碼
第一步:用VSCode打開創建好的STM32cubeIDE工程的文件夾
⑸ 使用STM32CubeIDE編寫EC11 定時器中斷方式
原貼地址 使用STM32CubeIDE編寫EC11
從上圖可以看出旋轉EC11時,A相上升沿時,B相高電平為順時針轉動,B相低電平則為逆時針轉動。所以我們利用這一特性,使用STM32的定時器捕獲功能對A相進行電平捕獲,然後與B相電平進行比較從而判斷旋轉方向。
首先要開啟定時器TIM3,我們使用這個 HAL_TIM_IC_Start_IT(htim, Channel); 啟動定時器。
使用定時器回調函數
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
在裡面編寫上面的程序,因為我們將B相接在PA7引腳,所以我們使用switch case語句進行判斷引腳電平,如果單片機檢測到A相為高電平就會進入這個中斷判斷B相電平,低電平為反轉,高電平極為正轉(程序中的cnt為計數作用)。
經測試通過串口列印數據,EC11非常穩定,也沒有出現丟步和亂跳的情況。
⑹ 意法半導體STM32CubeIDE生成hex、bin文件
1、在Project Exploer滑鼠右鍵點擊工程名
2、選擇properties ----> c/c++ Build ----> Settings
3 、Tool Settings ----> MCU Post build outputs
4、bin文件:選Convert to binary file (-O binary)
5、hex文件:選Convert to Hex file (-O ihex)
如下圖所示:
⑺ STM32CubeIDE有沒有類似IAR的__no_init用法,不對變數進行初始化
STM32CubeMX,是一個圖形化的軟體配置工具。
為了使用圖形向導生成C初始化代碼,減少開發人員工作、時間和成本,使開發人員的生活更輕松。
STM32CubeMX嵌入了一個完整的軟體平台,准確點說是,每個系列都有一個嵌入式軟體平台,比如STM32CubeF4對應STM32F4系列的開發。
這個平台包括STM32Cube HAL、stm32Cube LL、以及一組一致的中間件組件,如RTOS、USB、TCP/IP和圖形。
所有的嵌入式軟體平台工具都提供了完整的示例。
因為STM32CubeMX是一個圖形化的配置工具,所以它可以很容易的配置STM32,通過下面一步一步的操作,就可以生成對應的C初始化代碼。
首先,選擇一個STM32型號,與所需外設匹配。
然後,配置所需要的每一個嵌入式軟體。
最後,生成C代碼,可以用於KEIL、IAR、GCC等編譯器。
⑻ STM32CubeIDE安裝問題
STM32CubeIDE安裝過程中遇到兩個問題:
1. Error lanunching installer
安裝程序存放的路徑存在中文,所以將安裝程序拷貝到非中文路徑或根目錄即可。
2. Error! Can't initialize plug-ins directory. Please try again later.
修改環境變數參數
軟體安裝後再將環境變數恢復原來的內容。
⑼ cubeide閃退
系統不兼容。STM32CubeIDE是一個多功能的集成開發工具。cubeide閃退是由於系統不兼容導致的,需要進行更新系統即可。cubeide是STM32Cube軟體生態系統的一部分。
⑽ stm32cubeide設置文件編譯順序
對一個加法函數的庫項目的建立和編譯整個過程如下:
1、這里就要選擇ARMMCU的GCC編譯器了。
2、選擇和MCU型號的綁定關系了,畢竟編譯的庫是給MCU項目所用,這里選擇STM32F401CCU6的晶元。
2、添加源文件編寫加法函數,編寫加法函數進行編譯。
3、編譯成功,在工程目錄里就可以找到編譯好的庫文件了,庫文件的調用,配置一個對應MCU的基本工程,建立一個STM32F401CCU6的工程,並配置USART2作為串口輸出。
4、保存後產生基本工程代碼,重載printf函數方便列印輸出,參考STM32UART串口printf函數應用及浮點列印代碼空間節省。
5、在工程的core/inc/目錄新建一個和庫文件同名的頭文件,將庫文件libLib_C_Demo.a放置到工程的源文件目錄core/src/,則在工程目錄樹立可以看到。
6、因為編譯器默認只是識別C語言源代碼(.c文件),還需要進行庫文件的指定,這樣編譯器才會對二進制庫文件(.a)進行識別。
7、先打開屬性菜單,進行庫文件所在目錄和庫文件名的添加指定,注意庫文件名前需要加冒號,ApplyandClose後,就可以在工程文件里對庫文件進行調用,首先要引入庫文件的頭文件。
8、在while循環里進行列印輸出,列印數據為庫函數調用的加法和,編譯下載到STM32F401CCU6晶元後運行,通過串口工具觀察列印結果,輸出列印結果正確,庫函數正常調用成功。
