Цитата(Сергей Борщ)
Тогда IO0PIN = ( IO0PIN & ~(1U << 31) ) | ( IO0CLR & (1U<<31 ));
Орригинально

Однако неправильно. Тем более, что IO0CLR Write Only!
Щас, подождём
zltigo и произойдёт чудо

Цитата(Сергей Борщ)
Тогда надо читать IO0SET. IO0PIN = IO0SET ^ (1U<<31);
Вот именно!!!
Там хранится реально выводимое значение порта, даже если какой-либо пин в данный момент сделан входом. Это значит если на лету переключить пин на вывод, то именно значение из IOxSET появится на этом выходном пине.
Короче, это самый простой и правильный метод инверсии выходных пинов. Вне зависимости от того, на вход или выход и на какую альтернативную функцию в данный момент пин настроен.