Цитата(juvf @ Mar 20 2018, 07:42)

а этот код рабочий? или я не понимаю этот с++14 новомодный....
class Pin {
...
enum { DOUTx = 0x42000000UL + (GPIOx_BASE + offsetof(GPIOxTypeDef, DOUT) - 0x40000000UL) * 32 + pin * 4 };
..}
как это работает? чему DOUTx будет равно для РА5? Я так посчитал
DOUTx = 0x4200_0000 + (0x4000_6000 + 0x1C - 0x4000_0000) * 0x20 + 5 * 4
DOUTx = 0x4200_0000 + 0x601C * 0x20 + 0x14
DOUTx = 0x4200_0000 + 0xС0380 + 0x14
DOUTx = 0x420С_0394
я правильно посчитал?
Правильно. BitBanding memory area. Делал для себя, поэтому комментарии почти не писал.