We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I have a problem with the configuration of Keil microvision 5 with the STM32L Discovery Development board. I set up a template project according to the tutorial present in this page fabioangeletti.altervista.org/.../ that is however for a different version of STM32 board (STM32F0 Discovery). When I click on the build all button, I receive a lot of error messages. Following is a part of the errors list (176 in total). Any suggestion on how to fix it? Thanks in advance.
.\obj\Project.axf: Error: L6200E: Symbol DAC_IRQHandler multiply defined (by startup_stm32l1xx_md.o and startup_stm32l1xx_hd.o). .\obj\Project.axf: Error: L6200E: Symbol DAC_IRQHandler multiply defined (by startup_stm32l1xx_mdp.o and startup_stm32l1xx_hd.o). .\obj\Project.axf: Error: L6200E: Symbol DAC_IRQHandler multiply defined (by startup_stm32l1xx_xl.o and startup_stm32l1xx_hd.o). .\obj\Project.axf: Error: L6200E: Symbol DMA1_Channel1_IRQHandler multiply defined (by startup_stm32l1xx_md.o and startup_stm32l1xx_hd.o). .\obj\Project.axf: Error: L6200E: Symbol DMA1_Channel1_IRQHandler multiply defined (by startup_stm32l1xx_mdp.o and startup_stm32l1xx_hd.o). .\obj\Project.axf: Error: L6200E: Symbol DMA1_Channel1_IRQHandler multiply defined (by startup_stm32l1xx_xl.o and startup_stm32l1xx_hd.o).
Not enough information to list image symbols. Not enough information to list the image map. Finished: 2 information, 0 warning and 176 error messages. ".\obj\Project.axf" - 176 Error(s), 0 Warning(s). Target not created
So *.o files are generated by your compiler or part of a library file.
But the collision happens because you have requested a collision.
Like having two *.s files included in the project when expected to instead have selected the *.s file that matched your processor or your evaluation board.
In the end, you have to figure out why the project tries to use competing files. And you have to figure out which file that is the correct one for your target. Just as you, when out driving a car or a bike, have to figure out if you need to turn left or right to avoid hitting a dog in front of you. Being a developer means you can't depend on the net for all your problems - you also have to make own decisions based on the facts available to you. A puzzle has one single solution. Real-world programming problems have many - or even infinite - solutions possible. Which also means that the developer has to make many decisions.
Your project currently has FOUR start up files, pick ONE
startup_stm32l1xx_md.s startup_stm32l1xx_hd.s startup_stm32l1xx_mdp.s startup_stm32l1xx_xl.s
You have a LINKER error indicating you have TOO MANY instances of the same definition. The ASSEMBLER just processes the files you have added to the project, having multiple .S files in a project is not an error, but they should should not replicate the functionality of each other.
ST's templates for Keil on the STM32L-Discovery boards appear to use the MD variant, and defines USE_STDPERIPH_DRIVER STM32L1XX_MD