Only the source folders (with the “C” symbol displayed on the folder icon) are scanned for the build. The non-source folders are excluded from the build.
To create a new source folder or convert an existing folder into source folder, Go to the menu File or the contextual menu in the project explorer, then select New > Source Folder.
You can also open the build properties dialog for your folder (folder >> Properties >> C/C++ Build) and uncheck the Exclude resource from build checkbox.
You probably have created a project which use a static library. If an error like “error: ./source.o uses VFP register arguments, myproject.elf does not” is displayed, it means that the project and the static library have not been built with the same floating-point options (-mfloat-abi and -mfpu).
Please, ensure the build options between your executable project and the libraries are consistent in Properties > C/C++ Build > Settings > Tools Settings > MCU Settings.
System Workbench for STM32 contains a few GPL-licensed components, like the compiler or the debugger.
For the C and C++ compilers and debuggers, as well as the C library, we use the Linaro-provided version of arm-none-gnueabi; you can get both the binary distribution we use and the source code from the Linaro web site at https://www.linaro.org/downloads/ (the last section on the web page directs you to the latest version, which is usually the one we use).
The only component for which we modify the source code is the OpenOCD debug interface, where we need to add advanced support features to be able to debug the newest STM32 chips and boards. We use patches developped by STMicroelectronics, that they in parallel submit for inclusion in th emailnine OpenOCD source code; however we can’t wait for their inclusion so need to recompile OpenOCD by ourselves.
For OpenOCD we thus maintain our own GIT repository that may be cloned freely to get the current source code base we use. You can clone it by:
git clone git://git.ac6.fr/openocd
There are tags for all the releases of System Workbench for STM32 where we need to use modified source code; these are named
The problem is due to the fact that, in the HAL files, this symbol (and others) are defined by a lot of files (one per supported MCU), only one of them being effectively used in your project (the one describing the MCU you selected).
When trying to resolve this symbol (to be able to display its value) System Workbench then do not know which one to choose, as these files content are not conditionnaly compiled; th efile is rather conditionnaly included by other files.
Thus this symbol cannot be resolved, not because the indexer do not find it, but because it find too many versions of this symbol, in several files...
To solve this error, you should request that System Workbench do not parse files that are not used by your project, by opening th eindexer properties dialog (project >> Properties >> C/C++ General >> Indexer) then check the Enable project specific settings checkbox and uncheck the Index unused headers checkbox.
You may also suppress indexing of unused headers for all projects that do not have project-specific indexer settings by modifying the workspace settings at Window >> Preferences >> C/C++ >> Indexer.
Note that when you create projects using th eSystem Workbench for STM32 wizard, this option is automatically set for the firmware librery projects; however CubeMX currently do not set it in its generated projects.