Stm32 Iar Прерывания

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Reystlin
Родился
Сообщения: 5
Зарегистрирован: Ср июн 17, 2015 12:18:36

Stm32 Iar Прерывания

Сообщение Reystlin »

добрый день, ув. форумчае
пытаюсь настроить ацп, посмотрел вот этот видео урок [youtube]https://www.youtube.com/watch?v=l4YmGknezw4[/youtube]
сделал по примеру из него
в итоге ситуация такая, что прерывание по окончанию преобразования не срабатывает, хотя преобразование я запускаю. никак не могу понять в чем беда
настраиваю ацп вот так

Код: Выделить всё

void ADC_Ini()
{
GPIO_InitTypeDef GPIO_InitStructure;
ADC_InitTypeDef ADC_Init_user;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStructure);

RCC_AHB2PeriphClockCmd(RCC_APB2Periph_ADC, ENABLE);

ADC_Init_user.ADC_Resolution = ADC_Resolution_12b;
ADC_Init_user.ADC_ScanConvMode = DISABLE;
ADC_Init_user.ADC_ContinuousConvMode = DISABLE;
ADC_Init_user.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
ADC_Init_user.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1;
ADC_Init_user.ADC_DataAlign = ADC_DataAlign_Right;
ADC_Init_user.ADC_NbrOfConversion = 1;
ADC_Init(ADC1, &ADC_Init_user);

ADC_RegularChannelConfig(ADC1, ADC_Channel_6, 1, ADC_SampleTime_56Cycles);

NVIC_EnableIRQ(ADC_IRQn);
__enable_irq();
ADC_ITConfig(ADC1, ADC_IT_EOC,ENABLE);

ADC_Cmd(ADC1, ENABLE);
}

запускаю преобразование командой ADC_SoftwareStartConv(ADC1);

вот так описано прерывание:

Код: Выделить всё

extern "C" void ADC_IRQHandler(void)
{
if(ADC_GetITStatus(ADC1, ADC_IT_EOC) == SET)
{
ADC_ClearITPendingBit(ADC1, ADC_IT_EOC);
         GPIO_SetBits(GPIOD, GPIO_Pin_14);
data_adc = ADC_GetConversionValue(ADC1);
}
}


когда пошагово выполняю программу проц выполняет команду ADC_SoftwareStartConv(ADC1); и дальше продолжает остальной код выполнять, но прерывание так и не вызывается

в аттаче архив с проектом в IAR 7.2
Вложения
MIG_BU.7z
(456.94 КБ) 183 скачивания
Реклама
Reystlin
Родился
Сообщения: 5
Зарегистрирован: Ср июн 17, 2015 12:18:36

Re: Stm32 Iar Прерывания

Сообщение Reystlin »

нашел ошибку
RCC_AHB2PeriphClockCmd(RCC_APB2Periph_ADC, ENABLE);
нужно было
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC, ENABLE);
Реклама
Ответить

Вернуться в «ARM»