Доброе здрасьти.
Пользую плату STM32F4 discovery.
Проблема:
На канале 1 (GPIOA.0) ADC1 настроил единичный замер в режиме регулярного канала.
Данные по последовательному каналу передаю на терминалку.
Данные постоянно одни и те же, хотя тяну линию и к GND, и к 3V.
Код:
|
//Настройка ADC1
RCC-›AHB1ENR |= RCC_AHB1ENR_GPIOAEN;
GPIOA-›MODER |= GPIO_MODER_MODER0; //Analog mone
RCC-›APB2ENR |= RCC_APB2ENR_ADC1EN; //ADC1 ON
//Fadc = Fpb2 / 8
ADC-›CCR |= ADC_CCR_ADCPRE_1;
ADC-›CCR |= ADC_CCR_ADCPRE_0;
//8-bit
ADC1-›CR1 |= ADC_CR1_RES_1;
ADC1-›CR1 &= ~ADC_CR1_RES_0;
ADC1-›CR1 |= ADC_CR1_SCAN; //scan mode on
ADC1-›CR1 |= ADC_CR1_EOCIE; //End Of Conversion Interrupt Enable
ADC1-›CR2 &= ~ADC_CR2_CONT; //0-single conv, 1-continious conv
// set 480 cycles of sampling Ch1
ADC1-›SMPR2 |= ADC_SMPR2_SMP0_0;
ADC1-›SMPR2 |= ADC_SMPR2_SMP0_1;
ADC1-›SMPR2 |= ADC_SMPR2_SMP0_2;
//1 conv
ADC1-›SQR3 &= ~ADC_SQR1_L_3;
ADC1-›SQR3 &= ~ADC_SQR1_L_2;
ADC1-›SQR3 &= ~ADC_SQR1_L_1;
ADC1-›SQR3 &= ~ADC_SQR1_L_0;
//1st conv on Ch1
ADC1-›SQR3 = ADC_SQR3_SQ1_0;
NVIC_EnableIRQ(ADC_IRQn);
ADC1-›CR2 |= ADC_CR2_ADON; |
Измерение запускается по срабатыванию SysTick раз в секунду.
Код:
|
//Обработчик прерывания от ADC
void ADC_IRQHandler()
{
if (ADC1-›SR & ADC_SR_EOC)
{
uint16_t ADC1_Data = ADC1-›DR;
USART2_SBUF_Pointer = 1;
USART2_SBUF[0] = '#';
USART2_SBUF[1] = '1';
USART2_SBUF[2] = 'A';
USART2_SBUF[3] = ADC1_Data ›› 8;
USART2_SBUF[4] = ADC1_Data;
USART2_SBUF[5] = 0x0D;
USART2-›DR = USART2_SBUF[0];
}
} |
На комп постоянно приходят пакетики с 0х0003.
Люди добрые, помогите!