void PPMin_Stop() { nvic_disable_irq(NVIC_EXTI9_5_IRQ); exti_disable_request(_PWM_EXTI); timer_disable_counter(TIM1); ppmSync = 0; }
/** @brief Disable the wakeup timer interrupt @warning You must unlock the registers before using this function */ void rtc_disable_wakeup_timer_interrupt(void) { // 1. Disable EXTI Line 22 exti_disable_request(EXTI22); // 2. Disable RTC_WKUP IRQ channel in the NVIC. nvic_disable_irq(NVIC_RTC_WKUP_IRQ); // 3. Disable RTC wakeup timer event. RTC_CR &= ~RTC_CR_WUTIE; }
void hal_uart_dma_set_csr_irq_handler( void (*the_irq_handler)(void)){ if (the_irq_handler){ /* Configure the EXTI13 interrupt (USART3_CTS is on PB13) */ nvic_enable_irq(NVIC_EXTI15_10_IRQ); exti_select_source(EXTI13, GPIOB); exti_set_trigger(EXTI13, EXTI_TRIGGER_RISING); exti_enable_request(EXTI13); } else { exti_disable_request(EXTI13); nvic_disable_irq(NVIC_EXTI15_10_IRQ); } cts_irq_handler = the_irq_handler; }
void PPMin_Init() { UART_Stop(); // disable USART1 for GPIO PA9 & PA10 (Trainer Tx(PA9) & Rx(PA10)) /* Enable GPIOA clock. */ rcc_periph_clock_enable(RCC_GPIOA); /* Enable EXTI interrupt. */ nvic_enable_irq(NVIC_EXTI0_1_IRQ); /* Set GPIO0 (in GPIO port A) to 'input float'. */ PORT_mode_setup(PPM, GPIO_MODE_INPUT, GPIO_PUPD_NONE); /* Configure the EXTI subsystem. */ exti_select_source(EXTI0, GPIOA); exti_set_trigger(EXTI0, EXTI_TRIGGER_RISING); exti_disable_request(EXTI0); }
void PPMin_Init() { #if _PWM_PIN == GPIO_USART1_TX UART_Stop(); // disable USART1 for GPIO PA9 & PA10 (Trainer Tx(PA9) & Rx(PA10)) #endif /* Enable GPIOA clock. */ rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_IOPAEN); /* Enable AFIO clock. */ rcc_peripheral_enable_clock(&RCC_APB2ENR, RCC_APB2ENR_AFIOEN); /* Enable EXTI interrupt. */ nvic_enable_irq(NVIC_EXTI9_5_IRQ); /* Set GPIO0 (in GPIO port A) to 'input float'. */ gpio_set_mode(GPIOA, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, _PWM_PIN); /* Configure the EXTI subsystem. */ exti_select_source(_PWM_EXTI, GPIOA); exti_set_trigger(_PWM_EXTI, EXTI_TRIGGER_RISING); exti_disable_request(_PWM_EXTI); }
void exti3_isr(void) { int i, j; uint16_t endFillByte; gpio_set(GREEN_LED_PORT, GREEN_LED_PIN); // gpio_set(RED_LED_PORT, RED_LED_PIN); // iprintf("fill bytes\r\n"); exti_reset_request(EXTI3); iprintf("exti3_isr\r\n"); if(media_file.buffer_ready[media_file.active_buffer] == 0) { iprintf("Buffer %d was ready...\r\n", media_file.active_buffer); while(gpio_get(CODEC_DREQ_PORT, CODEC_DREQ)) { // iprintf("loop\r\n"); gpio_set(CODEC_PORT, CODEC_CS); if(!media_file.near_end) { for(i=0;i<32;i++) { spi_xfer(CODEC_SPI, media_file.buffer[media_file.active_buffer][current_track.byte_count++]); } if((current_track.byte_count % 512) == 0) { gpio_clear(CODEC_PORT, CODEC_CS); } if(current_track.byte_count == MEDIA_BUFFER_SIZE) { // iprintf("reading\r\n"); sdfat_read_media(); current_track.byte_count = 0; gpio_clear(CODEC_PORT, CODEC_CS); // iprintf("swapping...\r\n"); /* fetch the value of current decode position */ vs1053_SCI_write(SCI_WRAMADDR, PARAM_POSITION_LO); for(i=0;i<150;i++) {__asm__("nop\n\t");} current_track.pos = vs1053_SCI_read(SCI_WRAM); for(i=0;i<150;i++) {__asm__("nop\n\t");} vs1053_SCI_write(SCI_WRAMADDR, PARAM_POSITION_HI); for(i=0;i<150;i++) {__asm__("nop\n\t");} current_track.pos += vs1053_SCI_read(SCI_WRAM) << 16; // iprintf("swap\r\n"); gpio_set(CODEC_PORT, CODEC_CS); while(media_file.buffer_ready[media_file.active_buffer]) {__asm__("nop\n\t");} // iprintf("Breaking out\r\n"); // break; // } } } else { for(i=0;i<32;i++) { if(current_track.byte_count > media_file.file_end) { iprintf("ending\r\n"); // Ought to do this next bit by issuing a player_stop job so that the cleanup code // is all in one place and we can power down everything automatically for power saving /* now need to clean up the fifos and stop the player */ gpio_clear(CODEC_PORT, CODEC_CS); /* fetch the value of endFillByte */ vs1053_SCI_write(SCI_WRAMADDR, PARAM_END_FILL_BYTE); while(!gpio_get(CODEC_DREQ_PORT, CODEC_DREQ)) {__asm__("nop\n\t");} endFillByte = vs1053_SCI_read(SCI_WRAM) & 0xFF; iprintf("End Fill Byte %02X\r\n", endFillByte); gpio_set(CODEC_PORT, CODEC_CS); for(i=0;i<65;i++) { while(!gpio_get(CODEC_DREQ_PORT, CODEC_DREQ)) {__asm__("nop\n\t");} for(j=0;j<32;j++) { spi_xfer(CODEC_SPI, endFillByte); } } gpio_clear(CODEC_PORT, CODEC_CS); i = vs1053_SCI_read(SCI_MODE); i |= SM_CANCEL; vs1053_SCI_write(SCI_MODE, i); gpio_set(CODEC_PORT, CODEC_CS); j = 0; while(j < 2048) { while(!gpio_get(CODEC_DREQ_PORT, CODEC_DREQ)) {__asm__("nop\n\t");} for(i=0;i<32;i++) { spi_xfer(CODEC_SPI, endFillByte); } j += 32; if(!(vs1053_SCI_read(SCI_MODE) & SM_CANCEL)) { break; } } gpio_clear(CODEC_PORT, CODEC_CS); if(j >= 2048) { /* need to do a software reset */ vs1053_SCI_write(SCI_MODE, SM_RESET); } iprintf("End Fill Byte %02X\r\n", endFillByte); current_track_playing = 0; exti_reset_request(EXTI3); exti_disable_request(EXTI3); nvic_disable_irq(NVIC_EXTI3_IRQ); return; } else { spi_xfer(CODEC_SPI, media_file.buffer[media_file.active_buffer][current_track.byte_count++]); } } } } } gpio_clear(GREEN_LED_PORT, GREEN_LED_PIN); }
void platform_mrf_interrupt_disable(void) { exti_disable_request(MRF_INTERRUPT_EXTI); nvic_disable_irq(MRF_INTERRUPT_NVIC); }