Начал разбираться с АЦП микроконтроллера STM32F100RB.
Открыл пример из библиотеки stm32f10x_stdperiph_lib, там где разбирается работа трех каналов два из которых обращаются к DMA, а один работает по прерыванию.
И сразу попал в ступор когда увидел в файле такие строчки:
#define ADC1_DR_Address ((uint32_t)0x4001244C)
#define ADC3_DR_Address ((uint32_t)0x40013C4C)
Затем далее по тексту файла они используются в настройке каналов DMA:
/* DMA1 channel1 configuration ----------------------------------------------*/
DMA_DeInit(DMA1_Channel1);
DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;
...
...
...
/* DMA2 channel5 configuration ----------------------------------------------*/
DMA_DeInit(DMA2_Channel5);
DMA_InitStructure.DMA_PeripheralBaseAddr = ADC3_DR_Address;
...
...
...
Но в даташите в карте регистров АЦП написано что регистр ADC_DR только один и смещение у него 0x4C от адреса 0x40012400 (начало регистров АЦП). Откуда тогда они взяли адрес 0x40013C4C для третьего канала?
Ой, кажется дошло. Написано, что пример только под high - density devices а у меня medium. Видимо у тех 3 блока ADC и для каждого свой регистр ADC_DR