static void extmoduleNoneStart() { if (!IS_TRAINER_EXTERNAL_MODULE()) { EXTERNAL_MODULE_OFF(); } GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = EXTMODULE_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT ; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(EXTMODULE_GPIO, &GPIO_InitStructure); GPIO_SetBits(EXTMODULE_GPIO, EXTMODULE_GPIO_PIN); // Set high EXTMODULE_TIMER->CR1 &= ~TIM_CR1_CEN ; EXTMODULE_TIMER->ARR = 36000 ; // 18mS EXTMODULE_TIMER->CCR2 = 32000 ; // Update time EXTMODULE_TIMER->PSC = (PERI2_FREQUENCY * TIMER_MULT_APB2) / 2000000 - 1 ; // 0.5uS from 30MHz EXTMODULE_TIMER->CCMR2 = 0 ; EXTMODULE_TIMER->EGR = 1 ; // Restart EXTMODULE_TIMER->CCMR2 = TIM_CCMR2_OC3M_1 | TIM_CCMR2_OC3M_0 ; // Toggle CC1 o/p EXTMODULE_TIMER->SR &= ~TIM_SR_CC2IF ; // Clear flag EXTMODULE_TIMER->DIER |= TIM_DIER_CC2IE ; // Enable this interrupt EXTMODULE_TIMER->CR1 |= TIM_CR1_CEN ; NVIC_EnableIRQ(EXTMODULE_TIMER_IRQn) ; NVIC_SetPriority(EXTMODULE_TIMER_IRQn, 7); }
static void extmodulePpmStop() { NVIC_DisableIRQ(EXTMODULE_TIMER_IRQn) ; NVIC_DisableIRQ(TIM8_UP_TIM13_IRQn) ; EXTMODULE_TIMER->DIER &= ~TIM_DIER_CC2IE & ~TIM_DIER_UIE ; EXTMODULE_TIMER->CR1 &= ~TIM_CR1_CEN ; if (!IS_TRAINER_EXTERNAL_MODULE()) { EXTERNAL_MODULE_OFF(); } }
static void extmoduleDsm2Stop() { DMA2_Stream2->CR &= ~DMA_SxCR_EN ; // Disable DMA NVIC_DisableIRQ(EXTMODULE_TIMER_IRQn) ; EXTMODULE_TIMER->DIER &= ~TIM_DIER_CC2IE ; EXTMODULE_TIMER->CR1 &= ~TIM_CR1_CEN ; if (!IS_TRAINER_EXTERNAL_MODULE()) { EXTERNAL_MODULE_OFF(); } }
static void extmoduleCrossfireStop() { NVIC_DisableIRQ(EXTMODULE_TIMER_IRQn) ; EXTMODULE_TIMER->DIER &= ~TIM_DIER_CC2IE ; EXTMODULE_TIMER->CR1 &= ~TIM_CR1_CEN ; if (!IS_TRAINER_EXTERNAL_MODULE()) { // EXTERNAL_MODULE_OFF(); } }