Не очень различаются, для введения в язык С начните с книжки Керниган и Ритчи, диалект языка конечно немного устарел, но все основы представлены.
Основной упор делайте на работу с указателями, структурами и битовыми операциями.
Для обращения к регистрам устройства (процессора и периферии), обычно используется следующая конструкция:
....
volatile u_int32 *my_cool_register = 0xFFFEBEEF; /* адрес 32-разрядного регистра, ключевое слово volatile */
my_cool_register |= 0x2; /* взвести второй бит */
....
Ну и у Cortex-M3 есть адресное пространство, где все БИТЫ доступны по отдельным адресам, часто это очень удобно.
PS. Да, используйте библиотеки от поставщика, там много уже сделано в виде макросов (про это в книжке) и библиотек.