#ifndef __USER_SPI_H_ #define __USER_SPI_H_ #ifdef __cplusplus extern "C" { #endif #include #include #include "define.h" #define USER_WS2812B_GPIO_RCC_ENABLE RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOB, ENABLE); #define USER_WS2812B_01_SPI_RCC_ENABLE RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE); #define USER_WS2812B_02_SPI_RCC_ENABLE RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE); #define USER_WS2812B_DMA_RCC_ENABLE RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); #define USER_WS2812B_01_SPI_ENABLE GPIO_PinRemapConfig(GPIO_Remap_SPI1, ENABLE); #define USER_WS2812B_01_SPI SPI1 #define USER_WS2812B_02_SPI SPI2 #define USER_WS2812B_01_DMA_CHANNEL DMA1_Channel3 #define USER_WS2812B_02_DMA_CHANNEL DMA1_Channel5 #define USER_WS2812B_01_DMA_IRQn DMA1_Channel3_IRQn #define USER_WS2812B_02_DMA_IRQn DMA1_Channel5_IRQn #define USER_WS2812B_01_DMA_IRQHandler DMA1_Channel3_IRQHandler #define USER_WS2812B_02_DMA_IRQHandler DMA1_Channel5_IRQHandler #define USER_WS2812B_01_DMA_IT_TC DMA1_IT_TC3 #define USER_WS2812B_02_DMA_IT_TC DMA1_IT_TC5 #define USER_WS2812B_01_SPI_MOSI_GPIO GPIOB #define USER_WS2812B_01_SPI_MOSI_PIN GPIO_Pin_5 #define USER_WS2812B_01_SPI_SCLK_GPIO GPIOB #define USER_WS2812B_01_SPI_SCLK_PIN GPIO_Pin_3 #define USER_WS2812B_02_SPI_MOSI_GPIO GPIOB #define USER_WS2812B_02_SPI_MOSI_PIN GPIO_Pin_15 #define USER_WS2812B_02_SPI_SCLK_GPIO GPIOB #define USER_WS2812B_02_SPI_SCLK_PIN GPIO_Pin_13 void user_spi_Init(void); bool bUser_spi_WriteByte(uint8_t idx, volatile uint8_t *TxData, uint32_t TxSize); void user_spi_01_dma_init(uint8_t *txData, uint32_t txSize); void user_spi_02_dma_init(uint8_t *txData, uint32_t txSize); #ifdef __cplusplus } #endif #endif /* __USER_SPI_H_ */