/********************************** (C) COPYRIGHT ******************************* * File Name : ch32v20x_it.c * Author : WCH * Version : V1.0.0 * Date : 2022/06/16 * Description : Main Interrupt Service Routines. ********************************************************************************* * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. * Attention: This software (modified or not) and binary are used for * microcontroller manufactured by Nanjing Qinheng Microelectronics. *******************************************************************************/ /********************************************************************* * INCLUDES */ #include "ch32v20x_it.h" #include "CONFIG.h" #include "ws2812b_spi.h" #include "user_ws2812b.h" /********************************************************************* * LOCAL FUNCTIONS */ void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void BB_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); //void LLE_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void USER_WS2812B_DMA_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler * * @brief This function handles NMI exception. * * @return None */ void NMI_Handler(void) { } /********************************************************************* * @fn HardFault_Handler * * @brief This function handles Hard Fault exception. * * @return None */ void HardFault_Handler(void) { NVIC_SystemReset(); while(1) { } } /********************************************************************* * @fn BB_IRQHandler * * @brief BB Interrupt for BLE. * * @return None */ void BB_IRQHandler(void) { BB_IRQLibHandler(); } ///********************************************************************* // * @fn LLE_IRQHandler // * // * @brief LLE Interrupt for BLE. // * // * @return None // */ //void LLE_IRQHandler(void) //{ // LLE_IRQLibHandler(); //} void USER_WS2812B_DMA_IRQHandler(void) { if(DMA_GetITStatus(USER_WS2812B_DMA_IT_TC)) { // 清除中断标志 DMA_ClearITPendingBit(USER_WS2812B_DMA_IT_TC); DMA_Cmd(USER_WS2812B_DMA_CHANNEL, DISABLE); SPI_I2S_DMACmd(USER_WS2812B_SPI, SPI_I2S_DMAReq_Tx, DISABLE); // 在这里处理传输完成逻辑 // 例如: 设置标志、准备下一次传输等 vUser_ws2812b_set_tx_stat(false); } }