cancel
Showing results for 
Search instead for 
Did you mean: 

CMSIS 3.1.0 vs Standard Peripheral Library 2.0.1

SomeDeveloper
Associate II

I am used to find the CMSIS files (especially stm32f10x.h) in the same ZIP file as the STM32F10x standard peripheral library.

In my legacy project, someone used the SPL V2.0.1 together with a stm32f10x.h V3.1.0.

Unfortunately, the code won't compile under certain circumstances due to symbol overlap, namely duplicate definitions of types (like u32) defined in both stm32f10x.h and stm32f10x_type.h files. My interpretation is that someone has used an incompatible CMSIS and SPL version.

I have checked the SPL V2.0.1 archive and it does not contain CMSIS at all. Nevertheless, I assume that CMSIS already existed in SPL V2.0.1 times.

My question: Which CMSIS version is compatible with SPL V2.0.1? Where can I get this CMSIS package?

1 ACCEPTED SOLUTION

Accepted Solutions

Looking deeply at my archive I found the full library at V2.0.1 version dated 06/13/2008. Again you're lucky 😉!

See attachement.

Looks like at that time (mid 2008) CMSIS was not yet introduced and the register mapping was managed in stm32f10x_map.h file and types definitions in stm32f10x_type.h file.

Hope it helps 😊!

To give better visibility on the answered topics, please click on "Accept as Solution" on the reply which solved your issue or answered your question.

View solution in original post

5 REPLIES 5
SofLit
ST Employee

Again you with a "fossile" libs? 😀

Hard to tell! but from my archive the oldest stm32f10x.h version I have is 3.0.0 (2009 almost 15 years ago) in the attachement.

I think CMSIS library were introduced in 2008 or 2009 I don't remember. 

To give better visibility on the answered topics, please click on "Accept as Solution" on the reply which solved your issue or answered your question.

Yes, greetings from the digital Neander Valley 🙂

SPL V2.0.1 is dated 06/13/2008. So could it be that there was no CMSIS back then? That is very important for me to know. How can I find out?

I think I lack the conceptual knowledge about CMSIS and SPL to make progress.

CMSIS defines macros for registers and the like, right? So how did SPL access the registers before CMSIS came along? Did it have its own CMSIS-like abstraction header(s)? Did each SPL module define its own register macros?

When CMSIS came on the scene, did SPL start using the CMSIS register access macros instead?

I think if you could give me some clarifications, I could check the sources to find out if SPL V2.0.1 was built to use CMSIS or if it was built to work standalone.

This could be a serious problem for us, so I'd appreciate any clues, no matter how small :(

Looking deeply at my archive I found the full library at V2.0.1 version dated 06/13/2008. Again you're lucky 😉!

See attachement.

Looks like at that time (mid 2008) CMSIS was not yet introduced and the register mapping was managed in stm32f10x_map.h file and types definitions in stm32f10x_type.h file.

Hope it helps 😊!

To give better visibility on the answered topics, please click on "Accept as Solution" on the reply which solved your issue or answered your question.

You are my hero! That helps me a lot! Thank you!
I guess this will lead to some interesting internal discussions 🙂
Just the right moment to go on vacation ;-)))


Just the right moment to go on vacation ;-)))


I'm already in holiday 😊 and Happy holidays than ..

Please select "Accept as solution" my answer that gave you what you need 🙂

 

 

To give better visibility on the answered topics, please click on "Accept as Solution" on the reply which solved your issue or answered your question.