ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
18 апреля
784088 Топик полностью
Лагунов (02.10.2017 13:12 - 13:23, просмотров: 131) ответил IBAH на один в один! сейчас работает так: в обработчике прерываний по линии SCL импульсами вытягиваю информацию по SDO, сбрасываю флаг события. Хочу так: Прерывание произошло, запрещаем прерывание, выставляем флаг, по флагу в фоновой задаче
Как у меня сделано -> В файле stm32l4xx_it.c void EXTI0_IRQHandler(void) { /* USER CODE BEGIN EXTI0_IRQn 0 */ /* USER CODE END EXTI0_IRQn 0 */ HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0); /* USER CODE BEGIN EXTI0_IRQn 1 */ KLAV (); /* USER CODE END EXTI0_IRQn 1 */ } Сама функция KLAV () void KLAV (void) { HAL_NVIC_DisableIRQ(EXTI0_IRQn); SCKL=0; int x; x=0; while (x<50) //2,5 mksek { x=x+1; } FLKL=1; EXTI->PR1|=0x01; } Потом в свободное время вытягиваю информацию с SDO если флаг FLKL установлен. Каждые 100мсек восстанавливаю разрешение: SCKL=SCKL+1; if (SCKL>100) { EXTI->PR1|=0x01; HAL_NVIC_EnableIRQ(EXTI0_IRQn); }