性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

  • 回復
  • 收藏
  • 點贊
  • 分享
  • 發(fā)新帖

stm32標準庫SPI移植到HAL庫

標準庫和hal庫區(qū)別還是相當大的,舉個簡單的例子,驅動SPI OLD

標注庫初始化SPI

再看HAL庫SPI

除了 基本的io口配置區(qū)別,其他主要的讀寫函數(shù)不用動的,就改一個寫字節(jié)函數(shù),對于oled12864屏,不用讀

用這一個函數(shù)HAL_SPI_Transmit(&hspi1,&TxData,1,1000)就ok了

/* SPI寫入一個字節(jié) */
void SPI_WByte(uint8_t TxData)
{
//	/* 通過外設SPIx發(fā)送一個數(shù)據(jù) */
//	SPI_I2S_SendData(OLED_SPI, TxData);

//	/* 檢查指定的SPI標志位設置與否:發(fā)送緩存空標志位*/
//	while (SPI_I2S_GetFlagStatus(OLED_SPI, SPI_I2S_FLAG_TXE) == RESET);
	HAL_SPI_Transmit(&hspi1,&TxData,1,1000);
}

我們再看CubeMX配置SPI,模式為Full-Duplex Master,即全雙工主機模式;

接下來是選擇NSS 的模式,NSS模式共有三種:NSS_Soft、Hardware Input和Hardware Output

NSS_Soft —— 即軟件控制CS片選信號拉高或者拉低,選擇該模式時,如果需要輸出CS,要配置選擇的引腳為輸出模式,如我這里將PA4引腳做CS信號輸出腳,則應該在CubeMX中配置其為GPIO_Output模式,之后在程序中通過設置引腳SET或RESET進行拉高或者拉低。

Hardware Output —— 即硬件輸出模式,選擇該模式時,硬件SPI要發(fā)送數(shù)據(jù)時會自動將片選信號拉低并且通過PA4引腳輸出,主要用于一主一從的SPI通信控制

Hardware Input —— 即硬件輸入模式,該模式只有在設備作為從機通信時可選擇,輸入的片選信號控制設備的通信與否    這里選擇NSS_Soft(后面解釋為什么不能選Hardware Output模式)

對于SPI讀寫控制中,最好設置為NSS_Soft模式,不要用硬件輸出模式,然后每次軟件控制NSS拉低再拉高,從而實現(xiàn)指令的成功發(fā)送。

對于GPIO這塊

CubeMX上開啟io并標相關功能的簽標好

全部回復(2)
正序查看
倒序查看
2022-01-23 12:49

來搶占一波沙發(fā)吧,記得上次學習STM32還是大二的時候了,都四五年之前的事了,不過這個東西非常重要,學好軟硬件,走遍天下都不怕,哈哈哈

0
回復
2022-01-24 13:40

你這個不是講標準庫移植到HAL庫,感覺就是將CUBE-MX的SPI基本配置,而且還沒有講全,個人觀點哈!

0
回復
發(fā)