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

2024-02-06 16:52

本文主要是介绍标准库 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

这篇关于标准库 STM32+EC11编码器+I2C ssd1306多级菜单例程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/684953

相关文章

禁止平板,iPad长按弹出默认菜单事件

通过监控按下抬起时间差来禁止弹出事件,把以下代码写在要禁止的页面的页面加载事件里面即可     var date;document.addEventListener('touchstart', event => {date = new Date().getTime();});document.addEventListener('touchend', event => {if (new

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

数据治理框架-ISO数据治理标准

引言 "数据治理"并不是一个新的概念,国内外有很多组织专注于数据治理理论和实践的研究。目前国际上,主要的数据治理框架有ISO数据治理标准、GDI数据治理框架、DAMA数据治理管理框架等。 ISO数据治理标准 改标准阐述了数据治理的标准、基本原则和数据治理模型,是一套完整的数据治理方法论。 ISO/IEC 38505标准的数据治理方法论的核心内容如下: 数据治理的目标:促进组织高效、合理地

C 标准库 - `<float.h>`

C 标准库 - <float.h> 概述 <float.h> 是 C 标准库中的一个头文件,它定义了与浮点数类型相关的宏。这些宏提供了关于浮点数的属性信息,如精度、最小和最大值、以及舍入误差等。这个头文件对于需要精确控制浮点数行为的程序非常有用,尤其是在数值计算和科学计算领域。 主要宏 <float.h> 中定义了许多宏,下面列举了一些主要的宏: FLT_RADIX:定义了浮点数的基数。

Windows如何添加右键新建菜单

Windows如何添加右键新建菜单 文章目录 Windows如何添加右键新建菜单实验环境缘起以新建`.md`文件为例第一步第二步第三步 总结 实验环境 Windows7 缘起 因为我习惯用 Markdown 格式写文本,每次新建一个.txt后都要手动修改为.md,真的麻烦。如何在右键新建菜单中添加.md选项呢? 网上有很多方法,这些方法我都尝试了,要么太麻烦,要么不凑效

STM32(十一):ADC数模转换器实验

AD单通道: 1.RCC开启GPIO和ADC时钟。配置ADCCLK分频器。 2.配置GPIO,把GPIO配置成模拟输入的模式。 3.配置多路开关,把左面通道接入到右面规则组列表里。 4.配置ADC转换器, 包括AD转换器和AD数据寄存器。单次转换,连续转换;扫描、非扫描;有几个通道,触发源是什么,数据对齐是左对齐还是右对齐。 5.ADC_CMD 开启ADC。 void RCC_AD

STM32内部闪存FLASH(内部ROM)、IAP

1 FLASH简介  1 利用程序存储器的剩余空间来保存掉电不丢失的用户数据 2 通过在程序中编程(IAP)实现程序的自我更新 (OTA) 3在线编程(ICP把整个程序都更新掉) 1 系统的Bootloader写死了,只能用串口下载到指定的位置,启动方式也不方便需要配置BOOT引脚触发启动  4 IAP(自己写的Bootloader,实现程序升级) 1 比如蓝牙转串口,

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

寻迹模块TCRT5000的应用原理和功能实现(基于STM32)

目录 概述 1 认识TCRT5000 1.1 模块介绍 1.2 电气特性 2 系统应用 2.1 系统架构 2.2 STM32Cube创建工程 3 功能实现 3.1 代码实现 3.2 源代码文件 4 功能测试 4.1 检测黑线状态 4.2 未检测黑线状态 概述 本文主要介绍TCRT5000模块的使用原理,包括该模块的硬件实现方式,电路实现原理,还使用STM32类

STM32 ADC+DMA导致写FLASH失败

最近用STM32G070系列的ADC+DMA采样时,遇到了一些小坑记录一下; 一、ADC+DMA采样时进入死循环; 解决方法:ADC-dma死循环问题_stm32 adc dma死机-CSDN博客 将ADC的DMA中断调整为最高,且增大ADCHAL_ADC_Start_DMA(&hadc1, (uint32_t*)adc_buffer, ADC_Buffer_Size); 的ADC_Bu