Question
Any chance for CMSIS headers to be consistent across families?
Posted on February 23, 2017 at 11:18
The consistency of CMSIS headers for different STM32 families is really terrible, which makes writing a multiplatform project a misery. The project I'm talking about is obviously my C++ RTOS (
), and SOME OF the problems I'm facing (just the few I remember now) are:- FLASH_SR_RDERR is defined only for STM32F72 and STM32F73, so the define is not available when you use any other STM32F7, F0, F1 or F4 chip.
- Any defines for FLASH->KEY are not available for STM32F7 and F4, while available for F0 and F1.
- Headers for F0 and F7 define just GPIO_OTYPER_OT_x, headers for F4 have GPIO_OTYPER_OTx, GPIO_OTYPER_OT_x and the 'new' '..._Pos' and '..._Msk' defines. The same is true for IDR, ODR, BSRR, but not true for others (like OSPEEDR, PUPDR, ...).
- All headers I've checked have FLASH_SR_SOP, while the manuals always lists that this should be '..._OPERR' (which is not defined in any header).
- ...
I'm talking about the most recent versions of these packages (unless you uploaded new versions within last 2 weeks). You're generating all of that with a script, so why not just try to make ALL of the families consistent?
I've only checked F0, F1, F4 and F7, but I'm pretty sure that when I check other families, the situation will be much worse...
#cmsis #header-files