void inits_adc(void)
{
RCC->AHB1ENR|=RCC_AHB1ENR_GPIOAEN;
RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;
GPIOA->MODER |= GPIO_MODER_MODER0_1;
GPIOA->MODER |= GPIO_MODER_MODER0_0;
GPIOA->PUPDR &=~GPIO_PUPDR_PUPDR0_1;
GPIOA->PUPDR &=~ GPIO_PUPDR_PUPDR0_0;
ADC->CCR&= ~ ADC_CCR_ADCPRE;
ADC1->CR2 |=ADC_CR2_CONT;
ADC1->CR2 |=ADC_CR2_EXTEN;
ADC1->CR2|=ADC_CR2_EXTSEL;
ADC1->SMPR2 &= ~(ADC_SMPR2_SMP1_2 | ADC_SMPR2_SMP1_1 | ADC_SMPR2_SMP1_0);
/* номер канал */
ADC1->SQR3 &=~ ADC_SQR3_SQ1_0; //1 IN0
ADC1->SQR3 &= ~ ADC_SQR3_SQ3_1; //0
ADC1->SQR3 &= ~ADC_SQR3_SQ1_2; //0
ADC1->SQR3 &=~ ADC_SQR3_SQ1_3; //0
ADC1->SQR3 &= ~ADC_SQR3_SQ1_4;//0
ADC1->CR2 |= ADC_CR2_ADON;
}
void inits_adc2(void)
{
}
void inits_GPIOC(void)
{
RCC->AHB1ENR|=RCC_AHB1ENR_GPIOCEN;
GPIOC->MODER &=~ GPIO_MODER_MODER13_1;
GPIOC->MODER |= GPIO_MODER_MODER13_0;
GPIOC ->OTYPER &=~GPIO_OTYPER_OT13;
//бит0 определяет скорость работы GPIO
GPIOC->OSPEEDR &=~ GPIO_OSPEEDER_OSPEEDR13_1; //бит1
GPIOC->OSPEEDR &=~ GPIO_OSPEEDER_OSPEEDR13_0;
GPIOC->PUPDR |=GPIO_PUPDR_PUPDR13_1;
GPIOC->PUPDR &=~ GPIO_PUPDR_PUPDR13_0;
/* настройка на вход */
// RCC->AHB1ENR|=RCC_AHB1ENR_GPIOCEN;
GPIOC->MODER &=~ GPIO_MODER_MODER0_1;
GPIOC->MODER &=~ GPIO_MODER_MODER0_0;
GPIOC ->OTYPER &=~GPIO_OTYPER_OT0;
//бит0 определяет скорость работы GPIO
GPIOC->OSPEEDR &=~ GPIO_OSPEEDER_OSPEEDR0_1; //бит1
GPIOC->OSPEEDR &=~ GPIO_OSPEEDER_OSPEEDR0_0;
GPIOC->PUPDR &=~ GPIO_PUPDR_PUPDR0_1;
GPIOC->PUPDR |= GPIO_PUPDR_PUPDR0_0;
GPIOC->MODER &=~ GPIO_MODER_MODER1_1;
GPIOC->MODER |= GPIO_MODER_MODER1_0;
GPIOC ->OTYPER &=~GPIO_OTYPER_OT1;
//бит0 определяет скорость работы GPIO
GPIOC->OSPEEDR &=~ GPIO_OSPEEDER_OSPEEDR1_1; //бит1
GPIOC->OSPEEDR &=~ GPIO_OSPEEDER_OSPEEDR1_0;
GPIOC->PUPDR |=GPIO_PUPDR_PUPDR1_1;
GPIOC->PUPDR &=~ GPIO_PUPDR_PUPDR1_0;
}
int main(void)
{
inits_GPIOC();
inits_adc();
//inits_timer1();
inits_timer3();
inits_timer5();
//inits_timer3();
while(1)
{
ADC1->CR2 |= ADC_CR2_SWSTART; //Запуск преобразований
while (!(ADC1->SR & ADC_SR_EOC)); //ждем пока первое преобразование завершится
ADC1->SR &=~ADC_SR_EOC ;
adc_data = ADC1->DR;
if(adc_data > 2024)
{
// GPIOC->ODR|=1<<13;
GPIOC->BSRR |= GPIO_BSRR_BS13;
}
else
{
// GPIOC->ODR&=~1<<13;
GPIOC->BSRR |= GPIO_BSRR_BR13;
}
}
}