Для чего-то подобного я обычно использую крошечный вызов сборки, чтобы сделать это.
Вы можете использовать специальную инструкцию доступа к регистру (MRS / MSR) для доступа к любому SP. Я думаю, что с uVision, MSP SP_main , а PSP SP_process .
Моя сборка ARM немного ржавая, но я думаю, что это будет что-то вроде:
MRS R0, SP_process // R0 holds retval
BX LR // return
Из вашего вопроса кажется, что вы уже понимаете различие между MSP и PSP и знаете, как определить, какой из них читать (через LR).