HAL库使用硬件SPI驱动0.96寸OLED stm32F401
配置時鐘
配置DEBUG,我這里使用的是SW,可以選擇自己需要的。
?
只發送主機模式
8位幀數據結構
高位在前
波特率分頻值
空閑時,時鐘線位高
第二個時鐘沿捕獲
軟件使能信號
再配置其它要用的管腳,我這里使用PB4來做使能引腳
生成代碼
更改管腳
更改初始化
更改向oled寫入命令,數據函數
記得將所有的u8,u16,u32,改為uint8_t,uint16_t,uint32_t,或者使用typedef,為了方便后期移植,我就直接改
添加頭文件,初始化函數
?
隨便寫兩行?
主程序:
int main(void)
{
? /* USER CODE BEGIN 1 */
?? ?uint8_t t=' ';
? /* USER CODE END 1 */
? /* MCU Configuration--------------------------------------------------------*/
? /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
? HAL_Init();
? /* USER CODE BEGIN Init */
? /* USER CODE END Init */
? /* Configure the system clock */
? SystemClock_Config();
? /* USER CODE BEGIN SysInit */
? /* USER CODE END SysInit */
? /* Initialize all configured peripherals */
? MX_GPIO_Init();
? MX_SPI1_Init();
? /* USER CODE BEGIN 2 */
??? ?OLED_Init();?? ??? ??? ??? ?//初始化OLED
? /* USER CODE END 2 */
? /* Infinite loop */
? /* USER CODE BEGIN WHILE */
? while (1)
? {
?? ??? ?OLED_ShowString(8,0,(uint8_t *)" ? OLED SPI",16,1);
?? ??? ?OLED_ShowString(8,16,(uint8_t *)"Hardware routine",16,1);
?? ? ?OLED_Refresh();
? ? /* USER CODE END WHILE */
? ? /* USER CODE BEGIN 3 */
? }
? /* USER CODE END 3 */
}
?
oled.h中需要改的宏定義
#ifndef __OLED_H
#define __OLED_H?
#include "main.h"
#include "stdlib.h"?? ?
//-----------------測試LED端口定義----------------?
//#define LED_ON HAL_GPIO_WritePin(GPIOC,GPIO_Pin_12,GPIO_PIN_RESET);
//#define LED_ON HAL_GPIO_WritePin(GPIOC,GPIO_Pin_12,GPIO_PIN_RESET);
//-----------------OLED端口定義----------------?
#define OLED_PORT GPIOB
#define OLED_SCL_Clr() HAL_GPIO_WritePin(OLED_PORT,GPIO_PIN_0,GPIO_PIN_RESET);//SCL
#define OLED_SCL_Set() HAL_GPIO_WritePin(OLED_PORT,GPIO_PIN_0,GPIO_PIN_SET);//SCL
#define OLED_SDA_Clr() HAL_GPIO_WritePin(OLED_PORT,GPIO_PIN_1,GPIO_PIN_RESET);//SDA
#define OLED_SDA_Set() HAL_GPIO_WritePin(OLED_PORT,GPIO_PIN_1,GPIO_PIN_SET);//SDA
#define OLED_RES_Clr() HAL_GPIO_WritePin(OLED_PORT,GPIO_PIN_2,GPIO_PIN_RESET);//RES
#define OLED_RES_Set() HAL_GPIO_WritePin(OLED_PORT,GPIO_PIN_2,GPIO_PIN_SET);//RES
#define OLED_DC_Clr() ?HAL_GPIO_WritePin(OLED_PORT,GPIO_PIN_3,GPIO_PIN_RESET);//DC
#define OLED_DC_Set() ?HAL_GPIO_WritePin(OLED_PORT,GPIO_PIN_3,GPIO_PIN_SET);//DC
??? ??? ? ? ??
#define OLED_CS_Clr() ?HAL_GPIO_WritePin(OLED_PORT,GPIO_PIN_4,GPIO_PIN_RESET);//CS
#define OLED_CS_Set() ?HAL_GPIO_WritePin(OLED_PORT,GPIO_PIN_4,GPIO_PIN_SET);//CS
#define OLED_CMD ?0?? ?//寫命令
#define OLED_DATA 1?? ?//寫數據
#endif
鏈接:https://pan.baidu.com/s/1xumTyAfvlEPKI80C2ffyPA?
提取碼:1234
附上工程鏈接,麻煩點贊,關注,謝謝!!!
總結
以上是生活随笔為你收集整理的HAL库使用硬件SPI驱动0.96寸OLED stm32F401的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 迅视资管 5G消息有望在今年底商用
- 下一篇: 金山ARP防火墙Beta版本公测正式开始