2023-07-22 02:13 AM
Hi everyone,
I create a project in STM32CubeIDE. I have a error which show in figure below,
This is my full file code:
#ifndef __SOURCE_SPI_AML_H__
#define __SOURCE_SPI_AML_H__
#include "main.h"
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#include "common_aml.h"
#define SPI_AML_TIMEOUT 1000U /*!< Timeout for blocking transfer. */
enum _spi_aml_status
{
kStatus_AML_SPI_Busy = MAKE_STATUS(kStatusGroup_AML_SPI, 0), /*!< SPI transfer is busy.*/
kStatus_AML_SPI_Error = MAKE_STATUS(kStatusGroup_AML_SPI, 1) /*!< Other SPI driver error. */
};
typedef enum
{
spiBitcount8bit = 0x0U, /*!< 8 bits per frame. */
spiBitcount16bit = 0x1U /*!< 16 bits per frame. */
} spi_aml_bitcount_t;
typedef enum
{
spiClockPhaseFirstEdge = 0x0U, /*!< Data is captured on the leading edge of the SCK
and changed on the following edge. */
spiClockPhaseSecondEdge = 0x1U /*!< Data is changed on the leading edge of the SCK
and captured on the following edge. */
} spi_aml_clock_phase_t;
typedef enum
{
spiClockPolarityActiveHigh = 0x0U, /*!< Active-high SPI clock (idles low). */
spiClockPolarityActiveLow = 0x1U /*!< Active-low SPI clock (idles high). */
} spi_aml_clock_polarity_t;
typedef enum
{
spiPcsActiveHigh = 0x0U, /*!< Pcs Active High (idles low). */
spiPcsActiveLow = 0x1U /*!< Pcs Active Low (idles high). */
} spi_aml_pcs_polarity_t;
typedef struct
{
uint32_t baudRateHz; /*!< Baudrate in Hz. */
uint16_t bitCount; /*!< Number of bits/frame, minimum is 8-bits. */
spi_aml_clock_phase_t clkPhase; /*!< Clock phase. */
spi_aml_clock_polarity_t clkPolarity; /*!< Clock polarity. */
bool lsbFirst; /*!< true = LSB first, false = MSB first. */
spi_aml_pcs_polarity_t pcsPolarity; /*!< Active level of chip select pin (PCS). */
uint32_t sourceClockHz; /*!< Peripheral source clock frequency in Hz. */
} spi_aml_master_config_t;
typedef struct
{
uint8_t *txBuffer; /*!< Send buffer. */
uint8_t *rxBuffer; /*!< Receive buffer. */
size_t dataSize; /*!< Number of bytes to transfer. */
uint32_t configFlags; /*!< SPI control flags, only for DSPI. */
} spi_aml_transfer_t;
#endif
How do I fix this error ?
Thanks.
2023-07-22 11:58 AM - edited 2023-07-22 12:01 PM
First, understand why the compiler believes that there are two or more type declarations.
Enable output of preprocessed C code (how? google, ask chatgpt) and see what these two MAKE_STATUS(...) lines become. Or find definition of MAKE_STATUS and preprocess "on paper".