stm32 oled hal
时间: 2023-09-01 22:09:35 浏览: 110
STM32和OLED之间的通信可以通过HAL库来实现。在STM32的内部建立一个缓存,每次修改时只修改缓存数据,然后一次性将缓存数据写入到OLED的GRAM中。这种方法对于SRAM较小的单片机可能会比较麻烦。\[1\]
具体的实现代码如下:
- 写命令:使用`HAL_I2C_Mem_Write`函数将命令写入到OLED的地址0x78中。代码如下:
```c
void OLED_WR_CMD(uint8_t cmd) {
HAL_I2C_Mem_Write(&hi2c1, 0x78, 0x00, I2C_MEMADD_SIZE_8BIT, &cmd, 1, 0x100);
}
```
- 写数据:使用`HAL_I2C_Mem_Write`函数将数据写入到OLED的地址0x78中。代码如下:
```c
void OLED_WR_DATA(uint8_t data) {
HAL_I2C_Mem_Write(&hi2c1, 0x78, 0x40, I2C_MEMADD_SIZE_8BIT, &data, 1, 0x100);
}
```
- 清屏操作:使用上述的写命令和写数据函数,将OLED的每个像素点都设置为0x00来清屏。代码如下:
```c
void OLED_Clear() {
uint8_t i, n;
for(i = 0; i < 8; i++) {
OLED_WR_CMD(0xb0 + i);
OLED_WR_CMD(0x00);
OLED_WR_CMD(0x10);
for(n = 0; n < 128; n++)
OLED_WR_DATA(0x00);
}
}
```
以上是使用HAL库来实现STM32和OLED之间通信的一些代码示例。
#### 引用[.reference_title]
- *1* [从零开始stm32 oled SPI hal库](https://blog.csdn.net/wss1355/article/details/112760331)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* *3* [STM32的HAL库的IIC OLED驱动](https://blog.csdn.net/qq_56625961/article/details/124511804)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文