串口助手驱动_STM32Cube22(补充) | 使用硬件I2C驱动OLED(SSD1306)
點上方藍字關注我們
每天都有好玩的東西等著你
本篇詳細的記錄了如何使用STM32CubeMX配置STM32L431RCT6的硬件I2C外設驅動0.96'OLED屏幕。
1. 準備工作
硬件準備
開發板
首先需要準備一個開發板,這里我準備的是STM32L4的開發板(BearPi):
OLED屏幕
這里我使用的是0.96'的OLED屏幕,使用IIC接口通信,驅動芯片為SD1306:
軟件準備
需要安裝好Keil - MDK及芯片對應的包,以便編譯和下載生成的代碼;
Keil MDK和串口助手Serial Port Utility 的安裝包都可以在文末關注公眾號獲取,回復關鍵字獲取相應的安裝包:
2.生成MDK工程
選擇芯片型號
打開STM32CubeMX,打開MCU選擇器:
搜索并選中芯片STM32L431RCT6:
配置時鐘源
如果選擇使用外部高速時鐘(HSE),則需要在System Core中配置RCC;
如果使用默認內部時鐘(HSI),這一步可以略過;
這里我都使用外部時鐘:
配置串口
小熊派開發板板載ST-Link并且虛擬了一個串口,原理圖如下:
這里我將開關撥到AT-MCU模式,使PC的串口與USART1之間連接。
接下來開始配置USART1:
配置硬件I2C
在本實驗中,我們將OLED接在小熊派開發板左邊的E53擴展板接口上,與 I2C1 接口相連。
接下來開始配置I2C接口1:
配置時鐘樹
STM32L4的最高主頻到80M,所以配置PLL,最后使HCLK = 80Mhz即可:
生成工程設置
代碼生成設置
最后設置生成獨立的初始化文件:
生成代碼
點擊GENERATE CODE即可生成MDK-V5工程:
3. 在MDK中編寫、編譯、下載用戶代碼
重定向printf()函數
參考:STM32CubeMX-09 | 重定向printf函數到串口輸出的多種方法
OLED屏幕驅動程序
OLED屏幕驅動我已移植好,包含的文件較多,代碼就不放在文中了,我已上傳到Github:
https://github.com/Mculover666/HAL_Driver_Lib
oledfont.h:OLED ASCII英文字符字庫文件和中文字庫文件
bmp.h:圖片庫文件
oled.h:OELD功能函數聲明
oled.c:OLED功能函數實現
4. 測試驅動程序
將驅動程序添加到你的工程中后,在main.c中測試驅動程序是否正常:
首先在main.c 開頭包含頭文件:
/*?USER?CODE?BEGIN?Includes?*/#include?
#include?"oled.h"
#include?"bmp.h"
/*?USER?CODE?END?Includes?*/
然后在main函數中編寫測試程序:
nt?main(void){????HAL_Init();
????SystemClock_Config();
????MX_GPIO_Init();
????MX_I2C1_Init();
????MX_USART1_UART_Init();
????/*?USER?CODE?BEGIN?2?*/
????printf("OLED?0.96'?TEST...\r\n");
????OLED_Init();
????/*?USER?CODE?END?2?*/
????/*?Infinite?loop?*/
????/*?USER?CODE?BEGIN?WHILE?*/
????while?(1)
????{
????/*?USER?CODE?END?WHILE?*/
????/*?USER?CODE?BEGIN?3?*/
????OLED_Clear();
????OLED_ShowChar(0,?0,?'A',?16);
????OLED_ShowChar(0,?2,?'B',?16);
????OLED_ShowChar(0,?4,?'C',?16);
????OLED_ShowChar(0,?6,?'D',?16);
????OLED_ShowChar(15,?0,?'A',?12);
????OLED_ShowChar(15,?1,?'B',?12);
????OLED_ShowChar(15,?2,?'C',?12);
????OLED_ShowChar(15,?3,?'D',?12);
????OLED_ShowChar(15,?4,?'E',?12);
????OLED_ShowChar(15,?5,?'F',?12);
????OLED_ShowChar(15,?6,?'G',?12);
????OLED_ShowChar(15,?7,?'H',?12);
????OLED_ShowString(30,?0,?"mculover666",?12);
????OLED_ShowCHinese(35,?2,?0);
????OLED_ShowCHinese(65,?2,?1);
????OLED_ShowCHinese(95,?2,?2);
????OLED_ShowString(36,?6,?"IoT?Board",?16);
????HAL_Delay(5000);
????OLED_DrawBMP(0,?0,?128,?8,BMP1);
????HAL_Delay(5000);
????}
????/*?USER?CODE?END?3?*/
}
編譯下載運行,測試結果如下:
OLED字符顯示測試OLED圖片顯示測試精選教程 | 精選文章
(點擊圖片即可跳轉)
更多精彩文章及資源,歡迎關注我的微信公眾號:『mculover666』。
總結
以上是生活随笔為你收集整理的串口助手驱动_STM32Cube22(补充) | 使用硬件I2C驱动OLED(SSD1306)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA进阶开发之(内部类概述)
- 下一篇: JAVA进阶教学之(String类的常用