news 2026/7/12 1:48:31

利用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/7/11 1:18:43

GLM-4.5系列开源模型发布:重新定义智能体基座的技术边界与商业价值

在人工智能技术迅猛发展的今天&#xff0c;智能体应用正成为连接AI能力与产业需求的核心载体。近日&#xff0c;由zai-org团队研发的GLM-4.5系列模型正式开源&#xff0c;凭借创新的混合推理架构与极致的参数效率&#xff0c;为智能体开发提供了全新的技术基座。该系列包含GLM-…

作者头像 李华
网站建设 2026/7/9 4:46:33

厦大团队让机器从单个视频中重建出完整4D世界

当你用手机拍摄一段视频时&#xff0c;你看到的只是平面画面的连续播放。但如果告诉你&#xff0c;现在有一种技术能从这样一段普通视频中完全重建出三维空间加时间的完整世界&#xff0c;就像科幻电影中的全息投影一样&#xff0c;你会相信吗&#xff1f;这正是厦门大学联合多…

作者头像 李华
网站建设 2026/7/11 7:13:10

数控立柱滑台采购指南:如何避开价格陷阱选对硬核装备?

数控立柱滑台采购关键指标精度等级与重复定位精度 优先选择重复定位精度≤0.01mm的产品&#xff0c;直线导轨建议选用C3级及以上精度。滚珠丝杠导程误差需控制在0.005mm/m以内&#xff0c;高端型号会标注ISO 230-2标准测试数据。负载能力动态验证 额定垂直负载需超过实际加工重…

作者头像 李华
网站建设 2026/7/11 17:32:33

Wan2.2-T2V-A14B在古生物复原动画中的科学复现水平

Wan2.2-T2V-A14B在古生物复原动画中的科学复现能力探析 想象一下&#xff1a;一块距今2.3亿年的犬齿兽化石静静陈列在博物馆展柜中&#xff0c;骨骼结构清晰却无声无息。而只需一段基于最新研究成果撰写的中文描述——“三叠纪中期的犬齿兽沿河床缓行&#xff0c;四肢半直立&am…

作者头像 李华
网站建设 2026/7/12 1:41:31

Wan2.2-T2V-A14B模型推理延迟优化的五种有效手段

Wan2.2-T2V-A14B模型推理延迟优化的五种有效手段 在生成式AI迈向工业化落地的关键阶段&#xff0c;文本到视频&#xff08;Text-to-Video, T2V&#xff09;技术正从实验室走向影视、广告和元宇宙内容生产的前线。阿里巴巴自研的Wan2.2-T2V-A14B模型凭借约140亿参数规模与高保真…

作者头像 李华