基于STM32移植U8g2图形库——OLED显示(HAL库)_stm32 u8g2

硬件实物图:

效果图:

引脚连接:

OLED模块:

VCC --> 3.3V

GND --> GND

SCL --> PB10

SDA --> PB11

一、U8g2简介

1.1 U8g2是什么

U8g2GitHub上一款十分优秀的开源图形库(GUI库),其本质是嵌入式设备的单色图形库。在 Github 上超过3.2K Star,2.6K Commit。其开发语言90%为C语言,且代码简洁干练便于移植与后期修改。

1.2 U8g2支持的显示控制器

U8g2支持单色****OLED和LCD,包括以下控制器:SSD1305, SSD1306, SSD1309, SSD1312, SSD1316, SSD1320, SSD1322, SSD1325, SSD1327, SSD1329, SSD1606, SSD1607, SH1106, SH1107, SH1108, SH1122, T6963, RA8835, LC7981, PCD8544, PCF8812, HX1230, UC1601, UC1604, UC1608, UC1610, UC1611, UC1617, UC1638, UC1701, ST7511, ST7528, ST7565, ST7567, ST7571, ST7586, ST7588, ST75256, ST75320, NT7534, ST7920, IST3020, IST7920, LD7032, KS0108, KS0713, HD44102, T7932, SED1520, SBN1661, IL3820, MAX7219。(可以看出适配的驱动IC是非常多的,考虑到后续U8g2图形库继续维护升级可能会支持更多控制器

可以说,基本上主流的显示控制器都支持,比如我们常见的SSD1306等,读者在使用该库之前请查阅自己的OLED显示控制器是否处于支持列表中

1.3 U8g2的优势

  • U8g2库平台支持性好,基本上支持绝大部分Arduino与STM32开发板,也包含物联网比较常用的esp8266
  • U8g2库显示控制器支持性好,基本上市面上的OLED都完美支持;
  • U8g2库 API函数众多,特别支持了中文,支持了不同字体,这是一个对于开发者俩说不小的福利;
  • U8g2 库移植简单,容易使用(这一点也是笔者比较钟意的);

其实,我们可以把U8g2当作一个工具箱,需要使用的时候就去打开工具箱,使用里面的已经写好的API函数去实现我们需要达到的显示效果。(当然,前提是需要熟悉U8g2的使用,这一点网上有很多用法博客写得都很详细,感兴趣的读者朋友可以去看看)

二、CubexMX配置

在移植U8g2库之前,我们需要使用CubeMX软件配置一下MCU的部分功能特别注意:U8g2图形库自带兼容的IC控制驱动程序,所以移植完成后不需要自己在写OLED或是LCD的驱动了

1、RCC配置外部高速晶振(精度更高)——HSE;

2、SYS配置:Debug设置成Serial Wire否则可能导致芯片自锁);

3、I2C2配置:作为OLED的通讯方式;

4、TIM1配置:U8g2图形库需要us级延迟推动(U8g2的心跳)

### Overleaf 编译超时解决方案 在处理 Overleaf 的编译超时时,可以采取多种方法来优化文档并减少编译时间。以下是具体的建议: #### 1. 图像文件优化 如果文档中包含大量高分辨率图像,则可能导致编译过程变慢。可以通过压缩或降低这些图像的质量和尺寸来解决问题[^1]。 例如,在 LaTeX 中加载图形时,可指定较低的 DPI 或缩小图片大小: ```latex \includegraphics[width=0.8\textwidth, draft]{image.png} ``` `draft` 参数会禁用实际图像渲染,仅显示边框作为占位符。 #### 2. 使用 `standalone` 类型拆分大文档 对于非常庞大的文档,推荐将其分割成多个部分,并利用 `\input{}` 命令引入子文件。通过这种方式,每次只需重新编译修改的部分即可加快整体速度。此外,还可以考虑使用 `standalone` 文档类创建独立的小节。 #### 3. 启用快速预览模式 (Draft Mode) 设置草稿模式能够显著提升编译效率。此选项会在不完全绘制某些复杂元素的情况下生成临时版本。 ```latex \documentclass[draft]{article} % 添加 'draft' 参数 ``` #### 4. 调整编译器配置 有时,默认情况下使用的 XeLaTeX 可能比 pdflatex 更耗资源。尝试切换到更高效的引擎可能会有所帮助[^2]: ```bash pdflatex main.tex lualatex main.tex ``` #### 5. 升级至 Pro 计划获取额外时间 尽管上述措施通常足以应对大多数情况下的性能瓶颈;但如果仍然遇到频繁超时现象,那么订阅付费版服务或许是一个可行的选择。“Unlock More Compile Time”功能允许延长单次操作的最大时限从而支持更大规模项目的构建需求。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值