|
Внешние прерывания, STM32F103VB |
|
|
|
Jul 27 2014, 06:35
|
Профессионал
    
Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075

|
Я пытаюсь включить внешние прерывания в свою программу на STM32F103VB. CODE void ExtIntInit(void) { // enable clock for Alternate Function RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;
//BUT - PE0 GPIOE->CRL &= ~GPIO_CRL_MODE0; //Configure as input GPIOE->CRL &= ~GPIO_CRL_CNF0; GPIOE->CRL |= GPIO_CRL_CNF0_1; //input with pull-up/pull-down resistor GPIOE->BSRR |= GPIO_BSRR_BS0; //set pull-up //ENC1 - PE1 GPIOE->CRL &= ~GPIO_CRL_MODE1; //Configure as input GPIOE->CRL &= ~GPIO_CRL_CNF1; GPIOE->CRL |= GPIO_CRL_CNF1_1; //input with pull-up/pull-down resistor GPIOE->BSRR |= GPIO_BSRR_BS1; //set pull-up //ENC2 - PE2 GPIOE->CRL &= ~GPIO_CRL_MODE2; //Configure as input GPIOE->CRL &= ~GPIO_CRL_CNF2; GPIOE->CRL |= GPIO_CRL_CNF2_1; //input with pull-up/pull-down resistor GPIOE->BSRR |= GPIO_BSRR_BS2; //set pull-up
//interrupt source PE AFIO->EXTICR[0] |= AFIO_EXTICR1_EXTI0_PE; //PE0 - BUT AFIO->EXTICR[0] |= AFIO_EXTICR1_EXTI1_PE; //PE1 - ENC1 AFIO->EXTICR[0] |= AFIO_EXTICR1_EXTI2_PE; //PE2 - ENC2 AFIO->EXTICR[0] |= AFIO_EXTICR1_EXTI3_PE; //PE3 - ENC3
//interrupt edge EXTI->RTSR |= 0; //EXTI_RTSR_TR0; //rising EXTI->FTSR |= EXTI_FTSR_TR0; //falling EXTI->FTSR |= EXTI_FTSR_TR1; //falling EXTI->FTSR |= EXTI_FTSR_TR2; //falling EXTI->FTSR |= EXTI_FTSR_TR3; //falling
//enable ext interrupt EXTI->IMR |= EXTI_IMR_MR0; EXTI->IMR |= EXTI_IMR_MR1; EXTI->IMR |= EXTI_IMR_MR2; EXTI->IMR |= EXTI_IMR_MR3;
NVIC_EnableIRQ(EXTI0_IRQn); NVIC_EnableIRQ(EXTI1_IRQn); NVIC_EnableIRQ(EXTI2_IRQn); NVIC_EnableIRQ(EXTI3_IRQn); }
И обработчик CODE void EXTI0_IRQHandler(void) //button pressed { EXTI->PR = EXTI_PR_PR0; //clear flag??? TIM4->CNT = 0; TIM4->CR1 |= TIM_CR1_CEN; //but_int = true; //NVIC_EnableIRQ(TIM7_IRQn);
} void EXTI1_IRQHandler(void) //encoder1 { EXTI->PR = EXTI_PR_PR1; //clear flag??? enc1_int = 1; if(DIR1) { mot1_position++; } else { if(mot1_position > 0) { mot1_position--; } } }
void EXTI2_IRQHandler(void) //encoder2 { EXTI->PR = EXTI_PR_PR2; //clear flag??? if(DIR2) { mot2_position++; } else { if(mot2_position > 0) { mot2_position--; } } }
void EXTI3_IRQHandler(void) //encoder3 {
EXTI->PR = EXTI_PR_PR3; //clear flag??? if(DIR3) { mot3_position++; } else { if(mot3_position > 0) { mot3_position--; } } }
До этого кода все работает нормально. После включения этого куска кода камень умирает и не реагирует ни на что. Я уже пару дней бьюсь над проблемой. Читаю документацию вдоль и поперек не могу понять где проблема.
|
|
|
|
Сообщений в этой теме
Jenya7 Внешние прерывания Jul 27 2014, 06:35 AHTOXA GPIO затактировать забыли? Jul 27 2014, 06:55 Jenya7 Цитата(AHTOXA @ Jul 27 2014, 11:55) GPIO ... Jul 27 2014, 07:25 Genadi Zawidowski выясните для начала, нет ли ситуации что "кам... Jul 27 2014, 10:02 Jenya7 Цитата(Genadi Zawidowski @ Jul 27 2014, 16... Jul 27 2014, 10:16  smk Цитата(Jenya7 @ Jul 27 2014, 13:16) Я так... Jul 27 2014, 12:33   adnega Цитата(smk @ Jul 27 2014, 16:33) EXTI-... Jul 27 2014, 12:46    smk Цитата(adnega @ Jul 27 2014, 15:46) Так т... Jul 27 2014, 14:04     adnega Цитата(smk @ Jul 27 2014, 18:04) Но ведь ... Jul 27 2014, 14:09      smk Цитата(adnega @ Jul 27 2014, 17:09) Может... Jul 27 2014, 14:39       Jenya7 Цитата(smk @ Jul 27 2014, 20:39) Код#defi... Jul 27 2014, 16:00 adnega Цитатачто так что так
В таком случае предлагаю по... Jul 27 2014, 16:45 Сергей Борщ Цитата(adnega @ Jul 27 2014, 19:45) Напри... Jul 27 2014, 19:20 Golikov A. ЦитатаPS. В cortex-m хорошо, что прерывания защелк... Jul 27 2014, 19:22 adnega Если использовать EXTI не самоцель, то для получен... Jul 27 2014, 20:18 Jenya7 Цитата(adnega @ Jul 28 2014, 02:18) Если ... Jul 28 2014, 09:36 Jenya7 Проблема закралась с неожиданной стороны. На плате... Jul 28 2014, 05:50 KnightIgor Цитата(Jenya7 @ Jul 28 2014, 07:50) Но вс... Jul 28 2014, 13:54 hd44780 Jenya7, посмотрите, может ремап Вам поможет.
Мне н... Jul 28 2014, 10:07 Jenya7 Цитата(hd44780 @ Jul 28 2014, 16:07) Jeny... Jul 28 2014, 10:16  adnega Цитата(Jenya7 @ Jul 28 2014, 14:16) Я смо... Jul 28 2014, 13:13 Jenya7 Я тут посмотрел...возможно я таки найду свободные ... Jul 28 2014, 14:12 adnega Цитата(Jenya7 @ Jul 28 2014, 18:12) Кстат... Jul 28 2014, 16:27  Jenya7 Golikov A.
Спасибо за подробное объяснение.
Цита... Jul 29 2014, 06:15   adnega Цитата(Jenya7 @ Jul 29 2014, 10:15) Тут к... Jul 29 2014, 08:30    Jenya7 Цитата(adnega @ Jul 29 2014, 14:30) Может... Jul 29 2014, 10:29     adnega Цитата(Jenya7 @ Jul 29 2014, 14:29) Но я ... Jul 29 2014, 12:46      Jenya7 Цитата(adnega @ Jul 29 2014, 18:46) А дву... Jul 29 2014, 13:13 Golikov A. Опять нужна лекция... попробуем укороченный вариан... Jul 28 2014, 15:52 Golikov A. ПЛИС надо ставить... Jul 29 2014, 13:41 Jenya7 Цитата(Golikov A. @ Jul 29 2014, 19:41) П... Jul 29 2014, 13:52 Golikov A. ага, где то полдня работы...
у нас 5 моторами рули... Jul 29 2014, 19:02 Jenya7 Цитата(Golikov A. @ Jul 30 2014, 01:02) а... Jul 30 2014, 05:20  adnega Цитата(Jenya7 @ Jul 30 2014, 09:20) Это к... Jul 30 2014, 06:35   Jenya7 Цитата(adnega @ Jul 30 2014, 12:35) STM32... Jul 30 2014, 07:07 adnega А если вместо ПЛИС поставить мелкоту, типа STM32F0... Jul 29 2014, 19:23 Golikov A. ЦитатаМожет подгоните имплементацию парсера комман... Jul 30 2014, 06:19 Jenya7 Цитата(Golikov A. @ Jul 30 2014, 12:19) Е... Jul 30 2014, 06:27 Golikov A. RE: Внешние прерывания Jul 30 2014, 07:03 Golikov A. RE: Внешние прерывания Jul 30 2014, 07:14 Jenya7 Перед тем как начать програмироать на ПЛИС я читал... Jul 30 2014, 07:30 DmitryM Цитата(Jenya7 @ Jul 30 2014, 11:30) Перед... Jul 30 2014, 07:59 Golikov A. Поскольку мне надо делать дело, а не быть в тренде... Jul 30 2014, 09:23
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|