...
#define COMP(v,offset) ((v)<<offset)) //упрощенная версия
//используемые макросы (МК другой):
//#define ERROR_VALUE (_nop_())
//#define COMP(v,min,max,offset,len) ((((v)<min)||((v)>max)||((v)>=1<<len)||((len+offset)>16)) ? ERROR_VALUE : ((v)<<offset))
...
#define ADON(v) (v, 0)
#define CONT(v) COMP(v, 1)
#define DMA(v) COMP(v, 8)
#define DDS(v) COMP(v, 9)
#define EOCS(v) COMP(v,10)
#define _RIGHT (0)
#define _LEFT (1)
#define ALIGN(v) COMP(v,11)
#define _TMR1_CC4 (0)
#define _EXTI_15 (15)
#define JEXTSEL(v) COMP(v,16)
#define _RISING (1)
#define _FALLING (2)
#define JEXTEN(v) COMP(v,20)
...
ADC_CR2=ADON(1) | CONT(1) | DMA(0) | DDS(0) | EOCS(0) | ALIGN (_RIGHT) | JEXTSEL (_EXTI_15) | JEXTEN(_FALLING);