Код
RCC->APB2ENR|=RCC_APB2ENR_TIM1EN;//Разрешаем тактирование TIM1
TIM1->PSC=83; //Предделитель равен 84 (83 + 1) (168 МГц/84=2 МГц)
TIM1->ARR=0xFFFF; //Значение до которого считаем
TIM1->CCER|=TIM_CCER_CC4E; //Capture enable 4
TIM1->CCR4=10000; //Значение CCR4
TIM1->CR1|=TIM_CR1_CEN; //Разрешаем счет
//****************************************************************
//*Конфиурация АЦП
//****************************************************************
void ADC_Config(void){
//-----------------------------------------------------------------------------------------
//*Инициализация PORTA1 на аналоговую функцию
//-----------------------------------------------------------------------------------------
RCC->AHB1ENR|=RCC_AHB1ENR_GPIOAEN;//Разрешаем тактирование PORTA
GPIOA->MODER|=GPIO_MODER_MODER1; //Настраиваем PA1 на аналоговую функцию
//-----------------------------------------------------------------------------------------
//*Инициализация ADC1
//-----------------------------------------------------------------------------------------
RCC->APB2ENR|=RCC_APB2ENR_ADC1EN; //Разрешаем тактирование ADC1
ADC1->SMPR2|=ADC_SMPR2_SMP1_0
|ADC_SMPR2_SMP1_1
|ADC_SMPR2_SMP1_2; //Время конверсии 480 циклов
ADC1->JSQR|=ADC_JSQR_JSQ4_0; //В каком канале осуществляем конверсию 4 (в первом)
//-----------------------------------------------------------------------------------------
ADC1->CR2&=~ADC_CR2_JEXTSEL; //External event - TIM1_CH4
ADC1->CR2|=ADC_CR2_JEXTEN_0; //Trigger detection on the rising edge
//-----------------------------------------------------------------------------------------
ADC1->CR2|=ADC_CR2_ADON; //Включаем ADC1
//ADC1->CR2|=ADC_CR2_JSWSTART; //Старт конверсии инжектированного канала
while ((ADC1->SR&ADC_SR_JEOC)==0); //Ждем окончания конверсии
result=ADC1->JDR1; //Записываем результат
}
TIM1->PSC=83; //Предделитель равен 84 (83 + 1) (168 МГц/84=2 МГц)
TIM1->ARR=0xFFFF; //Значение до которого считаем
TIM1->CCER|=TIM_CCER_CC4E; //Capture enable 4
TIM1->CCR4=10000; //Значение CCR4
TIM1->CR1|=TIM_CR1_CEN; //Разрешаем счет
//****************************************************************
//*Конфиурация АЦП
//****************************************************************
void ADC_Config(void){
//-----------------------------------------------------------------------------------------
//*Инициализация PORTA1 на аналоговую функцию
//-----------------------------------------------------------------------------------------
RCC->AHB1ENR|=RCC_AHB1ENR_GPIOAEN;//Разрешаем тактирование PORTA
GPIOA->MODER|=GPIO_MODER_MODER1; //Настраиваем PA1 на аналоговую функцию
//-----------------------------------------------------------------------------------------
//*Инициализация ADC1
//-----------------------------------------------------------------------------------------
RCC->APB2ENR|=RCC_APB2ENR_ADC1EN; //Разрешаем тактирование ADC1
ADC1->SMPR2|=ADC_SMPR2_SMP1_0
|ADC_SMPR2_SMP1_1
|ADC_SMPR2_SMP1_2; //Время конверсии 480 циклов
ADC1->JSQR|=ADC_JSQR_JSQ4_0; //В каком канале осуществляем конверсию 4 (в первом)
//-----------------------------------------------------------------------------------------
ADC1->CR2&=~ADC_CR2_JEXTSEL; //External event - TIM1_CH4
ADC1->CR2|=ADC_CR2_JEXTEN_0; //Trigger detection on the rising edge
//-----------------------------------------------------------------------------------------
ADC1->CR2|=ADC_CR2_ADON; //Включаем ADC1
//ADC1->CR2|=ADC_CR2_JSWSTART; //Старт конверсии инжектированного канала
while ((ADC1->SR&ADC_SR_JEOC)==0); //Ждем окончания конверсии
result=ADC1->JDR1; //Записываем результат
}