static void init_pa7_none() { EXTERNAL_RF_OFF(); // Timer8 GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIO_EXTPPM, ENABLE); GPIO_InitStructure.GPIO_Pin = PIN_EXTPPM_OUT; 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(GPIO_EXTPPM, &GPIO_InitStructure); GPIO_SetBits(GPIO_EXTPPM, PIN_EXTPPM_OUT) ; // Set high RCC->APB2ENR |= RCC_APB2ENR_TIM8EN ; // Enable clock TIM8->CR1 &= ~TIM_CR1_CEN ; TIM8->ARR = 36000 ; // 18mS TIM8->CCR2 = 32000 ; // Update time TIM8->PSC = (PERI2_FREQUENCY * TIMER_MULT_APB2) / 2000000 - 1 ; // 0.5uS from 30MHz TIM8->CCMR2 = 0 ; TIM8->EGR = 1 ; // Restart TIM8->CCMR2 = TIM_CCMR2_OC3M_1 | TIM_CCMR2_OC3M_0 ; // Toggle CC1 o/p TIM8->SR &= ~TIM_SR_CC2IF ; // Clear flag TIM8->DIER |= TIM_DIER_CC2IE ; // Enable this interrupt TIM8->CR1 |= TIM_CR1_CEN ; NVIC_EnableIRQ(TIM8_CC_IRQn) ; NVIC_SetPriority(TIM8_CC_IRQn, 7); }
static void init_pa7_none() { EXTERNAL_RF_OFF() ; // Timer8 RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN ; // Enable portA clock configure_pins( PIN_EXTPPM_OUT, PIN_OUTPUT | PIN_PUSHPULL | PIN_OS25 | PIN_PORTA ) ; GPIO_SetBits(GPIOA, PIN_EXTPPM_OUT) ; // Set high RCC->APB2ENR |= RCC_APB2ENR_TIM8EN ; // Enable clock TIM8->CR1 &= ~TIM_CR1_CEN ; TIM8->ARR = 36000 ; // 18mS TIM8->CCR2 = 32000 ; // Update time TIM8->PSC = (PeripheralSpeeds.Peri2_frequency * PeripheralSpeeds.Timer_mult2) / 2000000 - 1 ; // 0.5uS from 30MHz TIM8->CCMR2 = 0 ; TIM8->EGR = 1 ; // Restart TIM8->CCMR2 = TIM_CCMR2_OC3M_1 | TIM_CCMR2_OC3M_0 ; // Toggle CC1 o/p TIM8->SR &= ~TIM_SR_CC2IF ; // Clear flag TIM8->DIER |= TIM_DIER_CC2IE ; // Enable this interrupt TIM8->CR1 |= TIM_CR1_CEN ; NVIC_SetPriority( TIM8_CC_IRQn, 3 ) ; // Lower priority interrupt NVIC_EnableIRQ(TIM8_CC_IRQn) ; }
static void disable_pa7_ppm() { NVIC_DisableIRQ(TIM8_CC_IRQn) ; NVIC_DisableIRQ(TIM8_UP_TIM13_IRQn) ; TIM8->DIER &= ~TIM_DIER_CC2IE & ~TIM_DIER_UIE ; TIM8->CR1 &= ~TIM_CR1_CEN ; EXTERNAL_RF_OFF(); }
static void disable_pa7_dsm2() { DMA2_Stream2->CR &= ~DMA_SxCR_EN ; // Disable DMA NVIC_DisableIRQ(TIM8_CC_IRQn) ; TIM8->DIER &= ~TIM_DIER_CC2IE ; TIM8->CR1 &= ~TIM_CR1_CEN ; EXTERNAL_RF_OFF(); }
static void disable_pa7_assan() { NVIC_DisableIRQ(TIM8_UP_TIM13_IRQn) ; NVIC_DisableIRQ(TIM8_CC_IRQn) ; TIM8->DIER &= ~( TIM_DIER_CC2IE | TIM_DIER_CC1IE | TIM_DIER_CC3IE | TIM_DIER_UIE ) ; TIM8->CR1 &= ~TIM_CR1_CEN ; EXTERNAL_RF_OFF() ; }