Вчитался, все же volaile char, сохранен только младший байт. т.е. читать правильней так:
Код
u16 temp_=0x600 | VREFINT;
Для проверки стоит листинг посмореть, во что оно там компилится.
В эррате по этому поводу ничего нет, так что должно работать. Жаль проверить не на чем, одни stm8s-ки.