当前位置: 首页 > article >正文

标准库 STM32+EC11编码器+I2C ssd1306多级菜单例程

标准库 STM32+EC11编码器+I2C ssd1306多级菜单例程


  • 📌原创项目来源于:https://github.com/AdamLoong/Embedded_Menu_Simple
  • 📍相关功能演示观看:https://space.bilibili.com/74495335

单片机多级菜单v1.2


  • 👉本次采用的是原作者(Adam)《单片机多级菜单框架v1.8》基础上修改适配包含中键按键的EC11编码器。
  • 📍原作者网盘项目共享资料:
https://pan.baidu.com/s/1bZPWCKaiNbb-l1gpAv6QNg?pwd=KYWS
  • ✨原作者分享了多个版本的多级菜单例程。可以根据个人需求进行学习了解。

🛠修改内容

  • 🔨将芯片型号切换为stm32f103vc型号,并将对应的.s 文件进行了替换。
  • 🔨 将原中断引脚GPIOB上的GPIO14 和GPIO12 修改到了GPIOE端口上的GPIO8 和GPIO7上,上和下键切换到了GPIOE端口对应的GPIO13、GPIO15。
  • 🔨 新增中断引脚GPIOA端口上的GPIO10引脚,作为EC11编码器中键,单击作用等同于确认按键,长按等同于返回按键。
  • 🔧新增启用定时器3,用来配合EC11按键长按计时作用。
  • 🔧同时开启了系统滴答定时器中断,创建了同HAL库下的HAL_GetTick()函数。
  • 🔧新增2路led输出引脚:PE5和PB5,一路在系统滴答定时器中断中调用,一路在定时器3更新中断中调用。
  • 🔧 新增引用正点原子资料中的sys.c/h ,方便GPIO引脚的原子操作。
    在这里插入图片描述

📑引脚定义接线说明:

  • 🍁编码器接线图参考:
    在这里插入图片描述
EC11-M --- PA10(中键)
EC11-A --- PA8(如果方向相反,对调EC11-B接线)
EC11-B --- PA9
  • 🌿 I2C ssd1306 oled
I2C SCL ---- PB8
I2C SDA ---- PB9
  • 🌿按键
PE8 --- 确认键
PE7 --- 	返回键
PE13 --- 下键
PE15 --- 上键

📘功能说明

👉原作者(By:Adam)《单片机多级菜单框架v1.8》项目,基于STM32F1标准库开发,硬件上,应该使用的是360度编码器不带中键的,当然没有编码器也可以使用; 前提是接了对应的按键。在原项目功能基础上增加了EC11编码器的功能。(原项目也可以使用EC11编码器但是没有按键功能)新增的EC11编码按键功能确认键(单击)和返回键(长按)。内部演示功能未做任何修改,只是新增了按键控制功能扩展。
  • 🔑 EC11编码器控制菜单相对丝滑,包含多种显示模式,内包涵2个体验游戏(贪吃蛇和康威生命游戏)。详情可以查看上面的原作者发布的视频,进行了解。

⛳功能实现说明

  • 🌿360度编码器功能实现是利用定时器1的编码器功能,来读取编码器旋转信息的。
  • 🌿按键读取,通过外部中断实现。
  • 🌿I2C ssd1306 OLED显示,使用软件I2C通讯。

📚程序源码

  • 🔖代码内容较多这里不做展示。
链接:https://pan.baidu.com/s/14ikoJMTAj6qxNFu4xZn51w?pwd=vyq7 
提取码:vyq7

http://www.kler.cn/news/232760.html

相关文章:

  • Spring Boot动态加载Jar包与动态配置技术探究
  • C++从零开始的打怪升级之路(day35)
  • 嵌入式软件的设计模式与方法
  • TCP和UDP相关问题(重点)(4)——4.使用TCP的协议有哪些?使用UDP的协议有哪些?
  • 第59讲订单数据下拉实现
  • 2024-02-08 思考-日记
  • MySQL组复制的介绍
  • 32. 最长有效括号
  • django中自定义视图样式
  • LCP 30. 魔塔游戏
  • 亲测解决vscode的debug用不了、点了没反应
  • 【开源项目阅读】Java爬虫抓取豆瓣图书信息
  • 蓝桥杯每日一题------背包问题(一)
  • 【C++】初识模板:函数模板和类模板
  • Linux I/O 重定向简介
  • DBdoctor恭祝大家龙行龘龘,前程朤朤
  • 多线程JUC:等待唤醒机制(生产者消费者模式)
  • 【react】react+es6+antd5.13.2+ts,antd表格的操作如何在父组件写?
  • LabVIEW双光子荧光显微成像系统开发
  • MPLS VPN功能组件(3)
  • itextpdf使用:使用PdfReader添加图片水印
  • 【Unity】重力场中的路径预测方法
  • 排序算法---插入排序
  • 在django中集成markdown文本框
  • Unity类银河恶魔城学习记录5-1.5-2 P62-63 Creating Player Manager and Skill Manager源代码
  • golang 通过 cgo 调用 C++ 库
  • 2024.1.30力扣每日一题——使循环数组所有元素相等的最少秒数
  • 【MySQL进阶之路】SpringBoot 底层如何去和 MySQL 交互了呢?
  • 浏览器提示ERR_SSL_KEY_USAGE_INCOMPATIBLE解决
  • Node.js JSON Schema Ajv依赖库逐步介绍验证类型和中文错误提示