No se me dió el caso nunca, digo "se me dió" en pasado, porque hace tiempo que ya no trabajo con los STM32, me pasé a los Kinetis y recientemente a los i.MX de NXP. Con los STM32 siempre usé el 407, o el 405 que es el mismo sin Ethernet, y todo lo hice con Cube, no usé nunca fuentes hechos para micros de otras familias.
Las diferencias entre familias para adaptar fuentes, pueden estar en la configuración del reloj, en el linker script para la compilación (tamaño y dirección de inicio de la flash y la RAM) y que el fuente esté usando un periférico o un puerto que no tenga el nuevo micro.
Debe de haber un include a un archivo que define las direcciones de todos los periféricos del micro, eso hay que cambiarlo y poner el correspondiente al nuevo micro o aunque tenga los mismos periféricos podrían estar en direcciones distintas. El problema puede estar en que no se hayan hecho los defines siguiendo el mismo estandard en el fuente original y en el nuevo archivo que pongamos para definir las direcciones de los periféricos, en ese caso el compilador echará un chorro de errores, algo así me ocurrió al compilar algo de utasker para los STM32, si no recuerdo mal.
No se me ocurren más cosas. Si en el fuente hay defines que condicionen el funcionamiento según el micro, también lo tendrías que revisar.
Que yo sepa no hay ningún sistema automático para hacer todos esos cambios, hay que hacerlos a mano.
Aunque la portabilidad en el mundo ARM, en teoría debería de ser sencilla, en la práctica se complica cuando los autores de librerías no siguen el mismo estandard con los defines de los periféricos.
Desgraciadamente, parece bastante común esa falta de entendimiento, cada uno va a su bola y que arree el que venga detrás. Dependiendo de cuantos periféricos se estén usando, acondicionarlo todo puede ser sencillo o la obra del Escorial.