STM32開發(一):簡介及開發環境


1. 背景

  • STM32是意法(ST)公司開發的基於ARM Cortex-M系列的一系列微控制器(MCU)。
  • 有兩種庫
    • 標准外設庫(StdPeriph_Driver、Standard Peripheral library):是開發STM32比較經典的庫,直接反應底層(寄存器)的代碼,適合初學者,或需要深入理解的人。
    • HAL庫(STM32Cube HAL):是由ST公司推出的一個較標准庫更高層次抽象的庫,多用於STM32CubeMX生成的代碼,有點類似面向對象的庫,里面封裝了很多東西,對於想理解深入或底層的人, 不適合用這個庫。
  • 固件驅動等
    • 官網固件/驅動庫
    • MCU固件包F4系列固件包,STM32CubeMX或者Keil會用到。
    • 包括Low level drivers, hardware abstraction layers, and middleware like RTOS, USB stacks, graphic stacks
    • 下下來解壓后,包括_htmresc、Utilities、Project、Libraries目錄和一些文件,KEIL的工程目錄通常和這些類似。
  • 軟件開發工具

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM