news 2026/4/18 10:43:06

利用cubemx和HAL库重写江科协的oled驱动程序

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
利用cubemx和HAL库重写江科协的oled驱动程序

I2C配置

将PB6、PB7设置为SCL和SDA引脚(硬件I2C)

OLED.c

void OLED_I2C_SendByte(uint8_t Byte) { HAL_I2C_Master_Transmit(&hi2c1, 0x78, &Byte, 1, HAL_MAX_DELAY); } void OLED_WriteCommand(uint8_t Command) { uint8_t buf[]={0x00, Command}; HAL_I2C_Master_Transmit(&hi2c1, 0x78, buf, 2, HAL_MAX_DELAY); } void OLED_WriteData(uint8_t Data) { uint8_t buf[]={0x40, Data}; HAL_I2C_Master_Transmit(&hi2c1, 0x78, buf, 2, HAL_MAX_DELAY); }

将原有的这三个函数替换为上面这些

void OLED_Init(void) { uint32_t i, j; for (i = 0; i < 1000; i++) //上电延时 { for (j = 0; j < 1000; j++); } OLED_WriteCommand(0xAE); //关闭显示 OLED_WriteCommand(0xD5); //设置显示时钟分频比/振荡器频率 OLED_WriteCommand(0x80); OLED_WriteCommand(0xA8); //设置多路复用率 OLED_WriteCommand(0x3F); OLED_WriteCommand(0xD3); //设置显示偏移 OLED_WriteCommand(0x00); OLED_WriteCommand(0x40); //设置显示开始行 OLED_WriteCommand(0xA1); //设置左右方向,0xA1正常 0xA0左右反置 OLED_WriteCommand(0xC8); //设置上下方向,0xC8正常 0xC0上下反置 OLED_WriteCommand(0xDA); //设置COM引脚硬件配置 OLED_WriteCommand(0x12); OLED_WriteCommand(0x81); //设置对比度控制 OLED_WriteCommand(0xCF); OLED_WriteCommand(0xD9); //设置预充电周期 OLED_WriteCommand(0xF1); OLED_WriteCommand(0xDB); //设置VCOMH取消选择级别 OLED_WriteCommand(0x30); OLED_WriteCommand(0xA4); //设置整个显示打开/关闭 OLED_WriteCommand(0xA6); //设置正常/倒转显示 OLED_WriteCommand(0x8D); //设置充电泵 OLED_WriteCommand(0x14); OLED_WriteCommand(0xAF); //开启显示 OLED_Clear(); //OLED清屏 }

删除OLED_Init中的I2C初始化代码,I2C和GPIO的初始化已经在cubemx完成。

然后在main.c的MX_I2C1_Init()后面添加OLED_Init(),后续即可正常使用代码中显示数字字符等的函数。

完整的测试main如下(有一些不相关的代码,不用管)

int main(void) { /* USER CODE BEGIN 1 */ int16_t duty=999; uint8_t commands[] = {0x00, 0x8d, 0x14, 0xaf, 0xa5}; /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ OLED_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_TIM3_Init(); MX_I2C1_Init(); /* USER CODE BEGIN 2 */ OLED_Init(); //HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2); //HAL_I2C_Master_Transmit(&hi2c1, 0x78, commands, sizeof(commands)/sizeof(commands[0]), HAL_MAX_DELAY); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ if(duty<0)duty=999; duty-=100; OLED_ShowNum(1,1,duty, 8); //__HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_2, duty); HAL_Delay(500); } /* USER CODE END 3 */ }

显示效果如下

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 21:59:12

【孙子兵法之下篇】012. 孙子兵法·火攻篇

【孙子兵法之下篇】012. 孙子兵法火攻篇 原文 孙子曰&#xff1a;凡火攻有五&#xff1a;一曰火人&#xff0c;二曰火积&#xff0c;三曰火辎&#xff0c;四曰火库&#xff0c;五曰火队。行火必有因&#xff0c;烟火必素具。发火有时&#xff0c;起火有日。时者&#xff0c;天…

作者头像 李华
网站建设 2026/4/17 14:02:31

Wan2.2-T2V-A14B生成冬奥会滑雪比赛视频的动作精准度

Wan2.2-T2V-A14B生成冬奥会滑雪比赛视频的动作精准度 在一场冬奥会自由式滑雪空中技巧赛的关键时刻&#xff0c;观众屏息凝视——运动员从跳台腾空而起&#xff0c;在空中完成两周半翻转加一周扭转后稳稳落地。这一连贯、高难度动作的每一个细节都牵动人心。如今&#xff0c;这…

作者头像 李华
网站建设 2026/4/18 8:31:01

别再乱装工具了!7 款最佳渗透测试工具(超详细),收藏这篇就够了

渗透测试工具是模拟对计算机系统、网络或 Web 应用程序的网络攻击的软件应用程序&#xff0c;它们的作用是在实际攻击者之前发现安全漏洞。它们可以作为系统的压力测试&#xff0c;揭示哪些区域可能会受到真正的威胁。 本文我将介绍七款最佳的渗透测试工具。 01 Kali Linux …

作者头像 李华
网站建设 2026/4/18 5:25:34

模板生成能力终极对决:ERNIE-4.5与DeepSeek技术深度测评报告

在人工智能内容创作领域&#xff0c;模板生成技术已成为连接模型能力与商业价值的关键桥梁。本文将通过技术架构解析、核心性能测试、企业场景验证三个维度&#xff0c;全面对比ERNIE-4.5-21B-A3B-Base-Paddle&#xff08;简称ERNIE-4.5&#xff09;与DeepSeek两大主流模型在模…

作者头像 李华
网站建设 2026/4/18 7:37:02

【Dify 1.7.0多模态RAG音频处理】:揭秘新一代AI语音理解核心技术

第一章&#xff1a;Dify 1.7.0多模态RAG音频处理的核心突破Dify 1.7.0 版本在多模态检索增强生成&#xff08;RAG&#xff09;领域实现了关键性进展&#xff0c;尤其在音频数据的处理能力上展现出显著提升。系统首次支持端到端的音频内容理解与语义检索&#xff0c;使得语音文件…

作者头像 李华