Поиск
Показаны результаты для тегов 'stm32f407vg nvic'.
-
День добрый Я ещё совсем новичок в микроконтроллерах, поэтому даже не очень знаю как правильно задать вопрос по своей проблеме. Пробую запустить Keil 4.73 вполне дефолтный код обработчика прерывания от таймера TIM_TimeBaseInitTypeDef timer_struct; NVIC_InitTypeDef NVIC_struct; uint32_t flag = 0; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE); timer_struct.TIM_Prescaler = 20000 - 1; timer_struct.TIM_CounterMode = TIM_CounterMode_Up; timer_struct.TIM_Period = 1000; timer_struct.TIM_ClockDivision = TIM_CKD_DIV1; timer_struct.TIM_RepetitionCounter = 0; TIM_TimeBaseInit(TIM5, &timer_struct); TIM_ITConfig(TIM5, TIM_IT_Update, ENABLE); TIM_Cmd(TIM5, ENABLE); // NVIC init NVIC_struct.NVIC_IRQChannel = TIM5_IRQn; NVIC_struct.NVIC_IRQChannelPreemptionPriority = 0; NVIC_struct.NVIC_IRQChannelSubPriority = 1; NVIC_struct.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_struct); while (1) { flag++; } Всё компилируется без ошибок, запускается, но ничего не работает. По брейкпойнтам стало ясно, что проблема либо с действиями NVIC_Init(&NVIC_struct); либо с TIM_ITConfig(TIM5, TIM_IT_Update, ENABLE); Не важно, в каком порядке инициализировать, та строчка, которая будет второй вешает исполнение программы, ощущение, что оно уходит в бесконечный цикл и до while(1) даже не доходит. flag в watch'e на нуле и не растёт ПРИ ЭТОМ: Если поставить брейкпойнт в проблемном месте и трейсить пошагово, то всё работает как надо и flag в watch'e растёт. Подскажите, с чем может быть проблема, куда копать?