Si su objetivo es comprender en detalle cómo funciona el microcontrolador, simplemente use el archivo de declaración de registro (stm32fxxx.h) y trabaje directamente con el hardware. No es tan difícil, y para algunos periféricos diría que puede ser mucho más simple, ya que las bibliotecas ST agregan una gran cantidad de código de marco que pocas personas realmente necesitan. Una vez que haya aprendido a configurar y usar cada periférico, probablemente querrá usar una biblioteca para hacer el trabajo de la placa de la caldera, pero en ese momento tendrá el conocimiento para poder decidir si desea utilizar la propia. o use una de las ofertas de ST (y, lo que es más importante, depure esas bibliotecas si termina por usarlas).
También tenga en cuenta que CMSIS es un poco diferente del otro tipo de bibliotecas de 'abstracción de hardware' que podría estar viendo. Esencialmente, es una capa de software independiente del proveedor muy liviana definida por ARM para administrar las funciones de soporte de la CPU central (interrupciones, fpu, memoria, etc.). La razón por la que crearon esto es que en los primeros días de los microcontroladores ARM, ARM solo suministraba la CPU central. Estos no se desarrollaron inicialmente para el trabajo del microcontrolador de un solo chip, por lo que tenían un esquema de manejo de interrupciones muy simple: básicamente, solo un mecanismo para guardar el estado de la CPU y derivar a un solo vector en la afirmación de la línea IRQ. Si deseaba tener diferentes fuentes de interrupción, entonces el proveedor del chip tenía que agregar un periférico de controlador de interrupción. El problema fue que cada proveedor comenzó a desarrollar sus propios sistemas de manejo de interrupciones, lo que significaba que el código no podía ser portado tan fácilmente entre chips.
Cuando ARM lanzó la línea Cortex-M, dirigida específicamente a aplicaciones de microcontroladores, incorporaron algunos de estos periféricos de soporte más comunes con el núcleo de la CPU IP. Para proporcionar acceso a estos periféricos, también definieron el CMSIS.
En la práctica, casi siempre usarás las bibliotecas CMSIS en tus proyectos, pero deberías poder ver en el código fuente que gran parte de eso es solo un registro de definiciones, y es muy liviano.