А там разве режим задаётся не так же как бит значения? Рассуждаю по
аналогии с АРМ. То есть условный GPIOC_MODE такой же как GPIOC_IO c
точки зрения адресации регистров и адресных пространств. Для
NUC9x6(ARM926EJ-S) вообще все регистры в абсолютных адресах заданы
в хидерах о производителя. Даже если структурой описан можно
сделать что-то вроде &(GPIOC->MODE) . Вот если режим
задаётся двумя битами - то да, сложнее будет. 1300 строка примерно https://github.com/OpenNuvoton/NUC970_NonOS_BSP/blob/master/Driver/Include/nuc970.h