Sí, así es. Mientras que todos los de la Corteza M controladores comparten el mismo núcleo, y algunos de los principales periféricos, todos los demás periféricos son específicas del proveedor.
Incluso el uso de CMSIS no le ayudará mucho en ese escenario, ya que sólo cubrirá las cosas siempre por el BRAZO, que es el núcleo y el núcleo periféricos (NVIC, Systick...)
Así que al final, si usted cambia de un proveedor a otro, usted tendrá que leer la hoja de datos, la referencia (o usuario) manual y averiguar cómo realmente funciona. Usted no necesariamente tiene que aprender todos los nombres de registro como ahora, los proveedores de proporcionar periférica bibliotecas que poner una capa abstracta en la parte superior de hardware.
Pero no es difícil o desafiante, que es lo que tienes que hacer - yo diría que es incluso uno de los aspectos más divertidos de averiguar cómo los periféricos de trabajo.
Y después de que usted se dio cuenta de esto, usted podría querer escribir una Capa de Abstracción de Hardware para evitar que su firmware ser completamente inútil para otro controlador. Si usted tiene un estable HAL, al menos puede obtener los controladores de dispositivo y de la aplicación de capas en el siguiente controlador y sólo hay que implementar el HAL de nuevo.
Aunque los vendedores ofrecen periférica de las bibliotecas, que funcionan como un HAL, no hay ningún estándar a través de los vendedores. Así en el nivel más bajo tendrá que adaptar su software, por lo que me dijo, que usted podría querer escribir una HAL (en el que puede utilizar el HAL de el vendedor).
Si desea implementar una estable HAL, sus características más probable es que se limita a la funcionalidad muy básica de los periféricos comunes, por lo que cada controlador puede ser extraída. Normalmente, usted va a perder algunas características más avanzadas de los periféricos, debido a que no están disponibles en todas partes (digamos, una velocidad en baudios mecanismo de detección automática o tiempo muerto entre canales PWM). Ese será el precio a pagar. Si tenemos los mecanismos para nuestra aplicación, podemos escribir un hardware especializado controlador para ese propósito, por lo que el resto puede seguir trabajando con el común de HAL.
Con este enfoque porté una aplicación a otros dos microcontroladores sólo la aplicación de la HAL, el resto puede ser compilado sin un solo cambio en el software.