Начал разбираться с АЦП микроконтроллера 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
|