void EventInit(void) { /* Switch interrupt soource to PB. PA no need change - it default */ SYSCFG->EXTICR[0] = SYSCFG_EXTICR1_EXTI1_PB; // PB1 // SYSCFG->EXTICR[1] |= SYSCFG_EXTICR2_EXTI6_PB|SYSCFG_EXTICR2_EXTI7_PB; // SYSCFG->EXTICR[2] |= SYSCFG_EXTICR3_EXTI8_PB; NVIC_EnableIRQ(TIM_IRQ(TIMER_NUM,_IRQn)); /* Timer IRQ */ /* External input IRQ */ // NVIC_EnableIRQ(EXTI15_10_IRQn); // NVIC_SetPriority(EXTI15_10_IRQn, 14); /* Low priority */ NVIC_EnableIRQ(EXTI0_1_IRQn); NVIC_SetPriority(EXTI0_1_IRQn, 14); /* Low priority */ NVIC_EnableIRQ(EXTI4_15_IRQn); NVIC_SetPriority(EXTI4_15_IRQn, 14); /* Low priority */ // NVIC_EnableIRQ(EXTI0_IRQn); // NVIC_SetPriority(EXTI0_IRQn, 14); /* Low priority */ // NVIC_EnableIRQ(EXTI1_IRQn); // NVIC_SetPriority(EXTI1_IRQn, 14); /* Low priority */ // NVIC_EnableIRQ(EXTI2_IRQn); // NVIC_SetPriority(EXTI2_IRQn, 14); /* Low priority */ /* Check interval */ TIM_EVENT->DIER |= TIM_DIER_UIE; /* enable update IRQ */ TIM_EVENT->PSC = MAIN_F/1000000 - 1; /* 1 MHz after prescaler*/ TIM_EVENT->ARR = 5000-1; /* 1MHz / 5000 = 200Hz - 5mSec */ // TIM_EVENT->CR1 |= TIM_CR1_CEN; /* It should not be started */ EXTI->IMR |= KEY_MASK_SYS; /* Ext interrupt mask */ EXTI->FTSR |= KEY_MASK_SYS; /* failing trigger */ EXTI->PR |= KEY_MASK_SYS; /* Clear pending register */ }
void _timFree_timer(uint8_t tm) { rcc_disable_tim(tm); vhalIrqDisable(TIM_IRQ(tm)); if (TIM(tm) == TIM1) { vhalIrqDisable(TIM1_CC_IRQn); } /*else if (TIM(tm)==TIM8){ vhalIrqDisable(TIM8_CC_IRQn); }*/ TIMER_SET_STATUS(tm, TIM_STATUS_USABLE); }