|
不好意思,原子哥,在這里我要吐槽你了!
SPI1->CR1 |=0<<10;//全雙工模式
SPI1->CR1 |=1<<9;//軟件NSS管理
如果是配置SPI2呢?難道要修改一串SPI1為SPI2嗎?
為什么不傳遞一個(gè)地址呢?既然是對SPI的寄存器操作,直接把地址傳入進(jìn)來就完了嘛!操作SPI1,傳入SPI1的地址
操作SPI2,傳入SPI2的地址!!
如果是半雙工模式呢?難道要再次按位移動選擇參數(shù)嗎?
#define SPI_BAUDRATEPRESCALER_2 ((uint32_t)0x00000000)
#define SPI_BAUDRATEPRESCALER_4 ((uint32_t)SPI_CR1_BR_0)
#define SPI_BAUDRATEPRESCALER_8 ((uint32_t)SPI_CR1_BR_1)
#define SPI_BAUDRATEPRESCALER_16((uint32_t)SPI_CR1_BR_1|SPI_CR1_BR_0)
#define SPI_BAUDRATEPRESCALER_32 ((uint32_t)SPI_CR1_BR_2)
#define SPI_BAUDRATEPRESCALER_64((uint32_t)SPI_CR1_BR_2|SPI_CR1_BR_0)
#define SPI_BAUDRATEPRESCALER_128((uint32_t)SPI_CR1_BR_2|SPI_CR1_BR_1)
#define SPI_BAUDRATEPRESCALER_256((uint32_t)SPI_CR1_BR_2|SPI_CR1_BR_1|SPI_CR1_BR_0)
這樣根本就不用去想,現(xiàn)在該移動幾位?直接根據(jù)需要,選擇一個(gè),拿來用即可!!
好的代碼,容易修改
從spi1切換到spi2容易
從二分頻切換到64分頻容易!!
|
|