寫SPI寄存器:
關鍵因素:
1:給我SPI寄存器的首地址
#define SPIx SPI2
#define SPI2 ((SPI_TypeDef *) SPI2_BASE)
SpiHandle.Instance =SPIx;
//(SPI_TypeDef *)的修飾下,這是一個地址!
這個Instance又是什么呢?
SPI_TypeDef *Instance;
typedef struct
{
__IO uint32_t CR1;
__IO uint32_t CR2;
__IO uint32_t SR;
__IO uint32_t DR;
__IO uint32_t CRCPR;
__IO uint32_t RXCRCR;
__IO uint32_t TXCRCR;
__IO uint32_t I2SCFGR;
} SPI_TypeDef;
是以SPI1為首地址的,一組SPI相關寄存器的集合!
2:給我SPI的配置值
#define SPI_DATASIZE_8BIT ((uint32_t)0x00000000)
SpiHandle.Init.DataSize =SPI_DATASIZE_8BIT;
//很明顯在(uint32_t)的修飾下,這是一個值!
3:賦值過程
WRITE_REG(hspi->Instance->CR1,(hspi->Init.Mode
|hspi->Init.Direction
|hspi->Init.DataSize
|hspi->Init.CLKPolarity
|hspi->Init.CLKPhase
|(hspi->Init.NSS &SPI_CR1_SSM)
|hspi->Init.BaudRatePrescaler
|hspi->Init.FirstBit
|hspi->Init.CRCCalculation));
即有數據,又有放數據的地方,這個SPI初始化就被拿下了!
|