ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
26 ноября
811709
POV_ (24.01.2018 14:10, просмотров: 22357)
Потратил часов 5 прежде, чем сдаться на милость знатоков - EXTI у stm32f103... Пока с нуля проект на АРМ не писал, лишь вносил доработки в уже рабочие. Вот решил-таки на платке китайской побаловаться, вдруг пригодится. Повесил на B12 кнопку.. если программно её опрашивать и зажигать лед, то всё работает. Далее захотел того же, но через прерывания - но нет прерываний. Скачал предлагаемый кукоксом пример, прочитал десяток статей с исходниками "работающих" примеров.. без толку. Вот моя инициализация GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource12); EXTI_InitStructure.EXTI_Line = EXTI_Line12; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); NVIC_Configuration(); void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; // Set the Vector Table base location at 0x08000000 NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0); // Configure one bit for preemption priority NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); // Enable Interrupt NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } Вот это NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0) убирал, тоже не помогло. void EXTI15_10_IRQHandler(void) { сюда не попадаю, лед от состояния пина не зависит } Предположил, что авторы всех примеров "забыли" разрешить глобальные прерывания - добавил это. Затем дополнительно ручками ещё разрешил прерывание по ноге. Но все равно тишина. Где ж косяк?