Ну если так уж принципиально, можно завернуть обращение к регистрам
в макросы / функции. Внутри которых будет ровно тот же ассемблерный
код. Хотя я такой ненависти к асму не понимаю. Какая разница на чем стартап написан, если его все равно ни читать, ни менять не нужно.
Хотя бы с USB разобраться там, где OTG (для DEV все ОК у меня)...
Если интересно, в ch32v с usb я по большей части разобрался. И с dev (который в v20x), и с HS (v307) и с otg (v20x, v30x). Единственное что в otg это кривая работа с изохронными точками. И я склоняюсь к версии, что это все-таки аппаратный баг.