čtvrtek 16. července 2020

STM32 CubeIDE and CMSIS bare metal project

Remarks:
Steps:
  • Install and run STM32 CubeIDE 
  • Create new project – select STM32 Project (from menu File or right-click in Project Explorer)
  • In MCU/MPU selector type “f411” select “STM32F411RE” or search in List
  • Fill Project Name and select radio-button Empty in Targeted Project Type
  • CubeIDE creates default file-structure “empty” project:
  • Simplify files structure – remove file …RAM.ld, move file startup….s to Src folder and remove Startup folder
  • Create a ”New Source Folder” named “CMSIS” in the project tree – at the same level as Src folder
  • Find a place, where is Repository of CubeIDE – see menu Window/Preferences item STM32Cube/FirmwareUpdater
  • Search the directory from preferences and there must be at least one folder – STM32Cube_FW_F4_Vx.xx.x
  • If it’s not there, you've never created a “F4 Cube” project and you have to do it at least once:
    • Create new project with any STM32F4 with choice Targeted Project Type to STM32Cube (!)
    • CubeIDE automatically downloads necessary files for F4 projects (firmware)
  • You can delete created project (even from disk), firmware files remains in repo-folder
  • Or simpler alternative – menu Help / Manage embedded software packages and install last repo for STM32F4
 
  • Now copy files (drag-drop etc.) from repository folder STM32Cube_FW_F4_Vx.xx.x (select last installed version) to project - into our CMSIS folder:
    • Drivers\CMSIS\Include\cmsis_compiler.h
    • Drivers\CMSIS\Include\cmsis_gcc.h
    • Drivers\CMSIS\Include\cmsis_version.h
    • Drivers\CMSIS\Include\core_cm4.h
    • Drivers\CMSIS\Include\mpu_armv7.h
    • Drivers\CMSIS\Device\ST\STM32F4xx\Include\stmf4xx.h
    • Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f411xe.h
    • Drivers\CMSIS\Device\ST\STM32F4xx\Include\system_stm32f4xx.h
    • Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c
  • Folder tree looks like this:
  • OK, files are located to their folders, now we must be update “project settings”
    • Right click on project and last menu-item “Properties” or menu Project or …
    • Item C/C++ General / Path and Symbols / tab Includes … add path to CMSIS folder – there are our new header files (and check “For all configurations”)
  • Next, if wee created CMSIS folder as “Source folder”, item in tab Source location is filled
    • If not, add CMSIS folder to “Source folders”
  • Add primary include (#include <stm32f4xx.h>) to beginning of main.c file and you will receive error (not just one) after compilation (e.g. Build):
    • “Please select first the target STM32F4xx device used in your application (in stm32f4xx.h file)”
  • OK, we use F411RE – copy symbol STM32F411xE from line 154 in file stm32f4xx.h and add to symbols in project
    • Project/PropertiesC/C++ Build/Settings – tab Tool Settings – item MCU GCC Compiler/Preprocesor
    • Add our symbol STM32F411xE
    • Remove ambiguous symbol STM32F411RETx
...
 
  • Now program can be compiled with only one warning about FPU, but “FPU things” solves function SystemInit in source file system_stm32f4xx.c, so we can remove preprocessor lines from the file main.c
  • Try simple LED blinking code and it works !!



pátek 3. července 2020

Odkazy z prohlížeče - 3.7.2020

CodeProject
Hack-a-Day
HW, robotika, NXT
Ostatní