Hay buenas y malas noticias, en general el C tiende a ser un lenguaje muy estandarizado, por eso es que linux por ejemplo anda en tantos tipos de procesadores, el nucleo esta escrito en C y con un compilador que siga los estandares ya esta.
Pero en el mundo de los MCU la cosa cambia de fabricante en fabricante, hasta las cosas mas obias pueden ser distintas, algunos compiladores por ejemplo ya traen librerias como el protocolo i2c o el rs232, y soporte para varios tipos de dispositivos RTC, memorias sensores, otros son mucho mas basicos.
Se puede trabajar con numeros decimales en nucleos de 14 bits, se pueden crear arrays y matrices, se pude hacer casi lo mismo que con el C mas simple, claro con las obias limitaciones del propio hardware.
Ahora si tenes que ser muy preciso en tus mediciones vas a querer saber cuanto tarda en ejecutar tal o cual instuccion y tenes que monitorear eventos muy rapido vas a tener que dominar algo del assembler que por cierto podes incluir dentro del codigo C sin ningun problema (inline assembler).