1. 背景
- STM32是意法(ST)公司開發的基於ARM Cortex-M系列的一系列微控制器(MCU)。
- 有兩種庫
- 標准外設庫(StdPeriph_Driver、Standard Peripheral library):是開發STM32比較經典的庫,直接反應底層(寄存器)的代碼,適合初學者,或需要深入理解的人。
- HAL庫(STM32Cube HAL):是由ST公司推出的一個較標准庫更高層次抽象的庫,多用於STM32CubeMX生成的代碼,有點類似面向對象的庫,里面封裝了很多東西,對於想理解深入或底層的人, 不適合用這個庫。
- 固件驅動等
- 軟件開發工具
2. 開發環境及工具
- IDE
- IAR
- KEIL
- 官網
- 也就是uVision,是Keil公司出品的,屬於所謂的MDK - Microcontroller Development Kit。
- 不僅支持STM32等ARM Cortext-M系列MCU單片機的開發,還支持51等其他單片機,但要選擇不同的版本下載,STM32對應MDK-ARM。
- 分為MDK-Lite、MDK-Essential、MDK-Plus、MDK-Professional等級別,不使用秘鑰生成器破解的話,直接下載的是第一個Lite版本,代碼大小限制只有32K。
- 使用
- STM32開發環境搭建
- Keil的使用方法(匯總)
- 官網下載安裝包(ARM版)時需要注冊
- 安裝完成后,如果要開發的芯片MDK不支持,那么需要通過彈出的Pack Installer去安裝相應的包(也可以去官網下載),也可以先忽略關掉(后面可以再到Project->Options for Target xxx->Debug下面配置,或者File->Device Database),如果沒有安裝,會報錯:device not included in legacy device database。
- 選擇芯片后,需要在創建固定的工程結構(在Manage Project Items彈窗中手動創建)
- 自己的代碼目錄(名稱可變)可以叫做App、User等
- MDK-ARM或者Startup Code(名稱可變)下面是startup_stm32xxxx_xd.s等啟動文件(初始化堆棧、程序計數器、設置向量表異常事件的入口地址、調用main函數),結尾的ld、md、hd分別對應小、中、大容量產品。
- CMSIS
- xxx_StdPeriph_Driver
- 還可以有FreeRTOS
- 還可以有HARDWARE
- 配置輸出時創建Hex(在Project->Options for Target xxx->Output下面)
- 配置下載/調試(在Project->Options for Target xxx->Debug下面)
- 配置C/C++(在Project->Options for Target xxx->C/C++下面)
- 配置包含路徑(鏈接用,在Project->Options for Target xxx->C/C++下面)
- 配置復位並運行設置(鏈接用,在Project->Options for Target xxx->Utilities下面)
- SW4STM32 + STM32CubeMX
- 參考-使用STM32CubeMX和SW4STM32在Nucleo-F401RE開發板輕松實現Blinky閃爍
- STM32CubeMX
- STM32CubeMX官方界面
- 簡介
- 是意法(ST)公司官方提供的初始代碼生成器。
- 圖形化的
- 便於配置STM32 microcontrollers
- 能一步步生成C代碼
- 生成的代碼有固定結構,限制較大,開發時也可以不用這個工具
- STM32Cube包含STM32CubeMX,除此之外還有許多example
- 使用(創建Project和生成代碼)
- 配置網絡
- 一般如果沒有設置網絡連接,那么打開時就會提醒進行配置(也可以后面生成代碼的時候再配置),用於下載固件等庫。如果用了公司代理,那么選擇手動配置代理,使用系統代理沒有效果可能是因為公司用的是pac腳本設置的代理呢,系統並沒有指定代理的ip。然后填入代理信息,ip(瀏覽器有時會彈出讓填賬號密碼,上面會有代理的ip)不要包含http://,端口也要填。
- 連接檢查和配置成功后,會自動下載一些配置文件。然后在后面生成代碼的時候,也會去下載MCU相應的firmware。
- 雖然也可以手動導入固件zip包,但官網上好像只有最新版,STM32CubeMX不一定能用最新版的,下載后,可以在Project Manager頁面的最后取消使用默認固件位置,然后選擇想要的版本的固件解壓文件夾(下載時自動加壓zip包)。
- 先要選擇芯片系列
- 左側可以根據MCU或板子進行搜索,找到后可以修改一些配置,然后選中;也可以一級一級地手動選型號,從上到下是Core、Series、Line,當然也可以直接選下面具體的。
- 然后在左側再做一些其他的配置,就可以在右側的MCU列表上雙擊某行創建Project了,或者選中某行后點擊右上角的創建按鈕。
- 在Project Manager標簽頁,填上項目名稱、項目路徑、選擇目標IDE(在"Toolchain / IDE"下面,生成代碼時會生成對應的結構,比如選SW4STM32)
- 配置界面
- 在Pinout & COnfiguration、Clock Configuration等標簽頁做配置。
- 點擊菜單上的“GENERATE CODE”按鈕(如果之前沒有設置過網絡連接,這里可能會讓再設置一下,也可以點擊繼續,但是會少一些包,只生成源碼)。結束后會有一個“Open Project”的按鈕,可以直接用SW4STM32導入和打開項目,導入后其實也就是多了個.settings/language.settings.xml文件,是CDT插件的配置?
- 生成的代碼結構
- Inc文件夾:頭文件文件夾,初始就只有main.h、stm32f4xx_hal_conf.h、stm32f4xx_it.h
- Src文件夾:源文件文件夾,初始就只有main.c、stm32f4xx_hal_conf.c、stm32f4xx_it.c
- .mxproject文件:頭文件文件夾路徑及文件列表、源文件文件夾路徑及文件列表、使用的lib庫文件LibFiles路徑(多個)
- xxx.ioc文件:可視化做的那些配置,比如MCU、pin、clock的配置
- 配置網絡
- STM32CubeMX用於配置串口中斷等硬件的東西,一般不用改。
- 打開軟件或生成代碼時,需要配置連接/代理,用於自動下載配置文件和相應MCU的固件。proxy的地址直接寫ip,不要帶http://,端口也要填,SNC用的是140.231.192.162:8080,還要填上認證信息。
- 配置硬件之前需要先過濾和選擇MCU型號,左側用於過濾,右側是符合條件的MCU列表用於選擇。
- 最后自動生成項目代碼時可以選擇不同IDE,一般選擇SW4STM32的代碼結構用其進行后續開發,因為免費。
- 如果成功下載了相應MCU的固件(firmware),在生成的項目代碼中會有相關文件夾和文件,否則只會生成源碼部分。
- SW4STM32
- SW4STM32官方界面
- 簡介
- 是意法(ST)公司官方提供的IDE
- 專為STM32單片機開發服務
- 支持標准外設庫和HAL庫驅動
- 支持使用ST-LINK
- 基於Eclipse的開源免費
- 沒有代碼規模限制
- 跨平台、使用GCC C/C++ compiler
- 使用GDB-based debugger
- 使用
- SW4Stm32開發環境搭建:固件安裝、stlink v2使用和手動復位問題修復
- sw4stm32開發stm32:stm32cubemx結合SW4Stm32
- import現有工程后報錯:C Error 127 occurred while running autoreconf
- 有的說需要下載修復工具
- 因為FreeRTOS基於linux,編譯時用到automake生成makefile,所以需要安裝automake並在環境變量和SW4STM32中配好?那么就要mingw這種linux環境下安裝?然后又依次間接需要autoconf、m4?參考
- 每個的安裝都要在其目錄下運行./configure –prefix=/usr/loca、make和make install
- automake下載
- autoconf下載
- m4下載
- 如果正確安裝了CubeMX和SW4STM32,工具欄會有一個小錘子按鈕,用來build project。
- 一定要把自己的代碼寫在/ * USER CODE BEGIN * /和/ * USER CODE END * /之間,否則CubeMX重新生成代碼時會丟失代碼。
- 調試/下載程序/仿真
- JTAG(只是一種接口/協議?)
- st link v2