в кубе можно переключить крыжик с HAL на LL и будет тебе программирование регистров ручками как во времена былые. Причем еще более ручками чем в SPL. /* ADC DMA Init */
/* ADC Init */
LL_DMA_SetDataTransferDirection(DMA1, LL_DMA_CHANNEL_1, LL_DMA_DIRECTION_PERIPH_TO_MEMORY);
LL_DMA_SetChannelPriorityLevel(DMA1, LL_DMA_CHANNEL_1, LL_DMA_PRIORITY_HIGH);
LL_DMA_SetMode(DMA1, LL_DMA_CHANNEL_1, LL_DMA_MODE_CIRCULAR);
LL_DMA_SetPeriphIncMode(DMA1, LL_DMA_CHANNEL_1, LL_DMA_PERIPH_NOINCREMENT);
LL_DMA_SetMemoryIncMode(DMA1, LL_DMA_CHANNEL_1, LL_DMA_MEMORY_INCREMENT);
LL_DMA_SetPeriphSize(DMA1, LL_DMA_CHANNEL_1, LL_DMA_PDATAALIGN_HALFWORD);
LL_DMA_SetMemorySize(DMA1, LL_DMA_CHANNEL_1, LL_DMA_MDATAALIGN_HALFWORD);
/**Configure Regular Channel
*/
LL_ADC_REG_SetSequencerChannels(ADC1, LL_ADC_CHANNEL_0);
/**Configure Regular Channel
*/
LL_ADC_REG_SetSequencerChannels(ADC1, LL_ADC_CHANNEL_1);
/**Configure Regular Channel
*/
LL_ADC_REG_SetSequencerChannels(ADC1, LL_ADC_CHANNEL_2);
/**Configure Regular Channel
*/
LL_ADC_REG_SetSequencerChannels(ADC1, LL_ADC_CHANNEL_3);
/**Configure Regular Channel
*/
LL_ADC_REG_SetSequencerChannels(ADC1, LL_ADC_CHANNEL_TEMPSENSOR);
LL_ADC_SetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE(ADC1), LL_ADC_PATH_INTERNAL_TEMPSENSOR);
/**Configure Regular Channel
*/
LL_ADC_REG_SetSequencerChannels(ADC1, LL_ADC_CHANNEL_VREFINT);
LL_ADC_SetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE(ADC1), LL_ADC_PATH_INTERNAL_VREFINT);
Будь ты проклят, Перри-Утконос!