Недавно подымал тему с CH32V303. У которого внешняя шина глючит на
нечотные полуслова. Разрешилось только так, пришлось ваять функцыю
на чтение памяти: uint16_t readExternalMem(uint16_t* pointer)
{
volatile _32_bit_composition_ temp;
if(((uint32_t)pointer&3)!=0)
{
temp._32_bit_data_=*((uint32_t*)(pointer-1));
return temp._16_bit_data_[1];
}
else
{
return *pointer;
}
}
Без volatile компилер приводил её к банальному чтению.