标准库 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
  • 7
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32F1系列是意法半导体(STMicroelectronics)推出的一款32位MCU系列产品,具有丰富的外设和强大的性能。其中,I2C总线是一种常见的串行通信总线,用于连接微控制器和其他设备进行数据传输。 在STM32F1的HAL库中,提供了I2C例程,以方便开发者快速使用I2C总线进行数据通信。下面简要介绍一下STM32F1 HAL库中I2C例程的主要功能和使用方法: 1. 初始化I2C总线 (HAL_I2C_Init函数):通过配置I2C的时钟速度、地址模式等参数,初始化I2C总线。在初始化过程中,需要指定I2C的外设号以及总线的时钟源。 2. 写入数据到I2C总线 (HAL_I2C_Master_Transmit函数):通过指定I2C的外设号、目标设备地址、发送的数据缓冲区和数据长度,可以将数据写入到I2C总线。在写入数据之前,需要确保目标设备已经准备好接收数据。 3. 读取I2C总线上的数据 (HAL_I2C_Master_Receive函数):通过指定I2C的外设号、目标设备地址、接收数据的缓冲区和数据长度,可以从I2C总线上读取数据。在读取数据之前,需要确保目标设备已经准备好发送数据。 4. 发送和接收数据(HAL_I2C_Master_Transmit_Receive函数):通过指定I2C的外设号、目标设备地址、发送的数据缓冲区、发送数据的长度、接收数据的缓冲区和接收数据的长度,可以在一次函数调用中同时发送和接收数据。 以上是STM32F1 HAL库中I2C例程的基本功能和使用方法。开发者可以根据具体需求,使用这些例程来实现自己的应用。注意,在使用I2C例程之前,需要在CubeMX工具中正确配置I2C外设的引脚映射和时钟源。 总而言之,STM32F1 HAL库提供了丰富的I2C例程,方便开发者在STM32F1系列MCU上使用I2C总线进行数据通信。通过合理使用这些例程,可以快速开发出各种I2C设备的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值