Гость Cianid Опубликовано 8 августа, 2020 Поделиться Опубликовано 8 августа, 2020 Всех приветствую. Столкнулся с проблемой обработки прерывания. При нажатии кнопки не вызывается обработчик. При этом в дебаге вижу появление флага в регистре PR при нажатии кнопки. #include "stm32f4xx.h" void spi_init() { RCC->APB2ENR |= RCC_APB2ENR_SPI1EN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN; GPIOB->AFR[0] |= (0x05<<4*3) ; // Enable SPI (CLK) as AF GPIOB->AFR[0] |= (0x05<<4*5); // Enable SPI (MOSI) as AF GPIOB->MODER &= ~(0xFFFF); SPI1->CR1 = 1<<SPI_CR1_DFF_Pos | 0<<SPI_CR1_LSBFIRST_Pos | 1<<SPI_CR1_SSM_Pos | 1<<SPI_CR1_SSI_Pos | 0x04<<SPI_CR1_BR_Pos | 1<<SPI_CR1_MSTR_Pos | 0<<SPI_CR1_CPOL_Pos | 0<<SPI_CR1_CPHA_Pos; SPI1->CR1 |= 1<<SPI_CR1_SPE_Pos; } void spi_write(uint16_t data) { while(!(SPI1->SR & SPI_SR_TXE)); SPI1->DR = data; } void port_led_init () { RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; GPIOA->MODER |= GPIO_MODER_MODE5_0; GPIOA->OTYPER |= GPIO_OTYPER_OT_0; GPIOA->OSPEEDR = 0; GPIOA->PUPDR |= GPIO_PUPDR_PUPDR0_0; } void interrupt_init () { RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN; RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN; GPIOC->PUPDR |= GPIO_PUPDR_PUPD13_0; __NVIC_EnableIRQ(EXTI3_IRQn); SYSCFG->EXTICR[3] &= ~SYSCFG_EXTICR4_EXTI13; SYSCFG->EXTICR[3] |= SYSCFG_EXTICR4_EXTI13_PC; EXTI->FTSR |= EXTI_FTSR_TR13; EXTI->RTSR |= EXTI_RTSR_TR13; EXTI->IMR |= EXTI_IMR_IM13; } int main(void) { spi_init(); port_led_init(); interrupt_init(); } void EXTI3_IRQHandler () { if (EXTI->PR & EXTI_PR_PR13) { EXTI->PR |= EXTI_PR_PR13; spi_write(0xAB); spi_write(0x14); for (int i =0; i<1000000; ++i) { GPIOA->ODR |= GPIO_ODR_OD5; } for (int i =0; i<1000000; ++i) { GPIOA->ODR = 0; } } } 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
my504 Опубликовано 9 августа, 2020 Поделиться Опубликовано 9 августа, 2020 Стесняюсь спросить, а где главный цикл? while(1) - где? 0 戦う前に相手のベルトの色に注目 Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
Гость Cianid Опубликовано 9 августа, 2020 Поделиться Опубликовано 9 августа, 2020 Забыл вставить, там обычная мигалка крутится. Там есть цикл с мигалкой. Просто забыл добавить сюда. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
snn_krs Опубликовано 9 августа, 2020 Поделиться Опубликовано 9 августа, 2020 Должен быть обработчик прерывания: EXTI15_10_IRQHandler и разрешать __NVIC_EnableIRQ(EXTI15_10_IRQn); соответственно. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Василий Марков Опубликовано 10 августа, 2020 Поделиться Опубликовано 10 августа, 2020 Спасибо. Заработало. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость MasterElectric Опубликовано 10 августа, 2020 Поделиться Опубликовано 10 августа, 2020 09.08.2020 в 13:23, my504 сказал: Стесняюсь спросить, а где главный цикл? while(1) - где? да он в стартапе)) 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.