用HAL库改写江科大的stm32入门例子4-1 OLED

大体 步骤:

step1:使用STM32CubeMX初始化I2C1,生成初始化代码
step2:将任意一个库导入到工程,配置好编译路径
step3:调用函数即可

IIC原理图:

I2c通讯时序图:

接线图:

先设置clock:

 

### STM32 HAL OLED 驱动示例代码与教程 对于STM32 HAL配合OLED显示屏的应用,尤其是针对苏科技大学的教学资源,可以参考基于江科大教程STM32F103C8T6最小系统板的U8G2移植指南[^1]。该文档不仅涵盖了如何配置和初始化硬件抽象层(HAL),还深入探讨了利用HAL实现对OLED屏幕的支持。 #### 初始化HAL并设置GPIO引脚 为了使能OLED功能,在启动文件`main.c`中需调用`MX_GPIO_Init()`函数来设定用于控制OLED的数据线、命令线及其他必要的I/O端口。接着通过`HAL_Init();`完成HAL的整体初始化工作。 ```c // main.c 中的部分代码片段 void SystemClock_Config(void); static void MX_GPIO_Init(void); int main(void){ /* Reset of all peripherals, Initializes the Flash interface and Systick */ HAL_Init(); /* Configure the system clock */ SystemClock_Config(); /* Initialize all configured peripherals */ MX_GPIO_Init(); } ``` #### 创建OLED对象实例化 依据所选用的具体型号(如SSD1306),可借助U8g2创建相应的设备描述符,并将其关联到指定的SPI/IIC接口上: ```c #include "u8g2.h" /* 定义使用的通信方式为 I2C 或 SPI 并声明对应的 U8G2 对象*/ #if defined(USE_I2C) U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); #elif defined (USE_SPI) U8G2_SSD1306_128X64_NONAME_F_4W_SW_SPI u8g2(U8G2_R0, /* CS=*/ GPIO_PIN_x, /* DC=*/ GPIO_PIN_y, /* RESET=*/ GPIO_PIN_z); #endif ``` 上述代码展示了根据不同通信协议(I2C/SPI)定义不同的U8G2对象的方式。 #### 编写显示逻辑 最后一步是在主循环里加入绘图指令,比如打印字符串或者绘制简单图形至屏幕上: ```c while (true){ u8g2.clearBuffer(); // 清除缓冲区 u8g2.setFont(u8g2_font_ncenB08_tr); // 设置字体样式大小 u8g2.drawStr(0, 10,"Hello World!"); // 输出文字信息 u8g2.sendBuffer(); // 将图像数据发送给显示器刷新画面 HAL_Delay(1000); // 延迟一秒再继续下一轮更新 } ``` 此部分实现了基本的文字输出操作,当然也可以进一步拓展复杂度更高的UI设计。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值