江协科技STM32学习- P9 OLED调试工具

    🚀write in front🚀  
🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​ 

💬本系列哔哩哔哩江科大STM32的视频为主以及自己的总结梳理📚 

🚀Projeet source code🚀   

💾工程代码放在了本人的Gitee仓库:iPickCan (iPickCan) - Gitee.com

引用:

STM32入门教程-2023版 细致讲解 中文字幕_哔哩哔哩_bilibili

Keil5 MDK版 下载与安装教程(STM32单片机编程软件)_mdk528-CSDN博客

STM32之Keil5 MDK的安装与下载_keil5下载程序到单片机stm32-CSDN博客

0. 江协科技/江科大-STM32入门教程-各章节详细笔记-查阅传送门-STM32标准库开发_江协科技stm32笔记-CSDN博客

江科大STM32学习笔记(上)_stm32博客-CSDN博客

STM32学习笔记一(基于标准库学习)_电平输出推免-CSDN博客

术语:

英文缩写描述
GPIO:General Purpose Input Onuput通用输入输出
AFIO:Alternate Function Input Output复用输入输出
AO:Analog Output模拟输出
DO:Digital Output数字输出

正文:

0. 概述

从 2024/06/12 定下计划开始学习下江协科技STM32课程,接下来将会按照哔站上江协科技STM32的教学视频来学习入门STM32 开发,本文是视频教程 P2 STM32简介一讲的笔记。

1.目前常用的程序调试方

  • 串口调试:通过串口通信,将调试信息发送到电脑端,电脑使用串口助手显示调试信息
  • 显示屏调试:直接将显示屏连接到单片机,将调试信息打印在显示屏上
  • Keil调试模式:借助Keil软件的调试模式,可使用单步运行、设置断点、查看寄存器及变量等功能。
  • 点灯调试法:在位置放一个点灯代码,运行到了,灯就亮
  • 注释调试法:将新加入的程序全部注释,然后一次一行解除注释,直到错误出现
  • 对照法:找到一个没有问题的程序,对照程序逻辑

总之,测试程序的基本思想就是:缩小范围、控制变量、对比测试等

2.OLED简介

OLED(Organic Light Emitting Diode):有机发光二极管(每一个像素都是一个单独的发光二极管,每一个像素都可以自发光,不像LCD需要有背光)

  • OLED显示屏:性能优异的新型显示屏,具有功耗低、相应速度快、宽视角、轻薄柔韧等特点
  • 0.96寸OLED模块:小巧玲珑、占用接口少、简单易用,是电子设计中非常常见的显示屏模块
  • 供电:3~5.5V,通信协议:I2C/SPI,分辨率:128*64

规格:4针脚,像素为白色,一般I2C通信

规格:7针脚,占用IO口多一些,一般SPI通信

蓝色像素版本

黄蓝双色版本,上面1/4像素固定为黄色,其余固定为蓝色,适和做需要显示标题行的界面。无论哪个规格版本,驱动方式都是一样的。

2.1硬件电路

4针脚版本:SCL和SDA是I2C的通信引脚,需要接在I2C通信的引脚上;(当驱动函数模块用GPIO口的模拟的I2C通信时,这两个端口可以接在任意的GPIO口上)

 7针脚版本:除GND和VCC外的引脚是SPI通信协议的引脚,(如果是GPIO口模拟的通信协议,也是可以任意接GPIO口)

2.2 OLED驱动函数模块 

OLED实物图及对应的屏幕坐标图如下:将OLED分割成了4行16列的小区块

                    

 OLED驱动函数如下:

                        驱动函数

                                作用

OLED_Init();

初始化

OLED_Clear();

清屏

OLED_ShowChar(起始行, 起始列, '显示字符');

显示一个字符

OLED_ShowString(1, 3, "HelloWorld!");

显示字符串

OLED_ShowNum(2, 1, 12345, 数字长度为5);

显示无符号十进制数字

OLED_ShowSignedNum(2, 7, -66, 2);

显示有符号十进制数字

OLED_ShowHexNum(3, 1, 0xAA55, 4);

显示十六进制数字

OLED_ShowBinNum(4, 1, 0xAA55, 16);

显示二进制数字

3.3 OLED使用示例程序

 知识点get:

  • 1.STM32的引脚上电后,如果不初始化,默认是浮空输入模式,在这个模式下,引脚不会输出电平,所以不会有什么影响;做实践项目时,最好还是给OLED用电源供电,不用GPIO口供电
  • 2.字符需要单引号括起来。字符串用双引号括起来
  • 3.c语言不能直接写二进制的数,只能用十六进制来代替。

 面包板接线图

程序如下,这里只给出了main.c的源码,OLED驱动程序的源码是从江协科技STM32示例源码中拷贝出来的,所以这里不给出OLED程序的源码请直接到江协科技示例源码中获取。

main.c

#include "stm32f10x.h"                  // Device header
#include "oled.h"uint8_t KeyNum = 0;int main(int argc, char *argv[])
{	OLED_Init();OLED_ShowChar(1, 1, 'A');OLED_ShowString(1, 3, "Hello World!");OLED_ShowNum(2, 1, 12345, 5);OLED_ShowSignedNum(2, 7, 12345, 5);OLED_ShowHexNum(3,1, 0xAA55, 4);OLED_ShowBinNum(4,1, 0xAA55, 16);while(1){}return 1;
}

实验结果:

第一张图片,该图片的OLED面板版的接线方法和江协科技接线方法一样。

第二张图片,该图片的OLED面板版的接线方法和江协科技接线原理一样,只不过是使用条线把GND, VCC, GPIOB_Pin_8, GPIOB_Pin_9 给跳线跳出来了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/53377.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

# VMware 共享文件

VMware tools快速安装 VMware 提供了 open-vm-tools,这是 VMware 官方推荐的开源工具包,通常不需要手动安装 VMware Tools,因为大多数 Linux 发行版(包括 Ubuntu、CentOS 等)都包含了 open-vm-tools,并且已…

Linux网络编程IO管理

网络 IO 涉及到两个系统对象,一个是用户空间调用 IO 的进程或者线程,一个是内核空间的内核系统,比如发生 IO 操作 read 时,它会经历两个阶段: 等待内核协议栈的数据准备就绪;将内核中的数据拷贝到用户态的…

Kafka【八】如何保证消息发送的可靠性、重复性、有序性

【1】消息发送的可靠性保证 对于生产者发送的数据,我们有的时候是不关心数据是否已经发送成功的,我们只要发送就可以了。在这种场景中,消息可能会因为某些故障或问题导致丢失,我们将这种情况称之为消息不可靠。虽然消息数据可能会…

Spring框架基础介绍2.0

目录 AOP概述 面向切面思想 优点: 核心原理: 使用案例: AOP 的基本概念 springAOP 实现 AspectJ 中常用的通知 Spring事物管理 数据库事务管理? spring 事务管理? Spring中的事物管理分为两种形式: 1、编程式事物管理 2、声明…

React入门教程:创建你的第一个React应用

React 是由 Facebook 开发的用于构建用户界面的 JavaScript 库。它以其高效、灵活和组件化的特性受到开发者的广泛欢迎。如果你是前端开发新手,或是从其他框架转向 React,这篇文章将引导你创建一个简单的 React 应用,帮助你快速上手。 1. 环…

低空经济如此火爆,新手如何分一杯羹?

低空经济的火爆为新手提供了诸多参与和分一杯羹的机会。以下是一些具体的建议,帮助新手在这一领域找到切入点: 1. 了解行业概况与趋势 定义与范围:低空经济是指在3000米以下空域内进行各种有人和无人驾驶航空器活动的经济形态,涉…

dubbo的SPI机制

一.dubbo的SPI机制 SPI机制是一个服务发现机制,通过接口的全限定名找到指定目录下对应的文件,然后加载对应的实现类注册到系统中进行使用。 在Java原生跟mysql的驱动加载也使用了这个机制,但是他们只能进行全部实现类的加载(遍历…

mysql创建新表,同步数据

import os import argparse import glob import cv2 import numpy as np import onnxruntime import tqdm import pymysql import time import json from datetime import datetime os.environ[“CUDA_VISIBLE_DEVICES”] “0” # 使用 GPU 0 def get_connection(): “”“创…

最新HTML5中的文件详解

第5章 HTML5中的文件 5.1选择文件 可以创建一个file类型的input,添加multiple属性为true,可以实现多个文件上传。 5.1.1 选择单个文件 1.功能描述 创建file类型input元素,页面中不再有文本框,而是 选择文件 按钮,右侧是上次文件的名称&a…

argodb自定义函数读取hdfs文件的注意点,避免FileSystem已关闭异常

一、问题描述 一位同学反馈,他写的argo存过中调用了一个自定义函数,函数会加载hdfs上的一个文件,但有些节点会报FileSystem closed异常,同时有时任务会成功,有时会失败。 二、问题分析 argodb的计算引擎是基于spark…

解析 MySQL 数据库的 Python 接口:`mysqlclient` 与 `django-mysql` 实战指南20240904

博客标题:深入解析 MySQL 数据库的 Python 接口:mysqlclient 与 django-mysql 实战指南 引言 在现代 Web 开发中,数据库与应用程序的交互是不可避免的核心环节。对于使用 Python 尤其是 Django 框架的开发者来说,如何有效地与 M…

线性因子模型 - 概率PCA和因子分析篇

序言 在探索数据科学与机器学习的浩瀚领域中,深度学习作为一股不可小觑的力量,正以前所未有的方式重塑着我们对数据处理与知识发现的理解。在这一宏大的框架下,概率主成分分析( Probabilistic PCA, pPCA \text{Probabilistic PCA…

Python3中dict字典类型的用法

字典是另一种可变容器模型,且可存储任意类型对象。 key与value 允许存储任意类型对象 但key 不支持 list列表、字典等可变类型 字典的每个键值 key:value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 1、定义字典…

数据分析面试题:客户投保问题分析

目录 0 场景描述 1 数据准备 2 问题分析 2.1 计算小微公司的平均经营时长 2.2 计算小微公司且角色为投保人,保险起期在18年的总保费 2.3 假设,DWD_CUSTOMER_REL客户关联关系表中,存在部分客户保单数很多,部分客户保单数很少的情况,此时DWD_CUSTOMER_BASE表关联,程序…

鸿蒙OS试题

60当您开始开发一个应用/服务时,首先需要根据工程创建向导,创建一个新的工程,工具会自动生成对应的代码和资源模板。关于新建工程,下列选项说法正确的是? A.、创建用于Lite Wearable设备的工程,可以选择Native C工程…

百度智能云向量数据库创新和应用实践分享

本文整理自第 15 届中国数据库技术大会 DTCC 2024 演讲《百度智能云向量数据库创新和应用实践分享》 在 IT 行业,数据库有超过 70 年的历史了。对于快速发展的 IT 行业来说,一个超过 70 年历史的技术,感觉像恐龙一样,非常稀有和少…

Anaconda Prompt 安装paddle2.6报错

bug描述 python 3.11.9 通过 pip install paddlepaddle2.6.1 安装后,运行 paddle.utils.run_check() 则出现下面的错误: 解决办法 方法一:使用paddle 3的版本 这里要注意我的python版本 方法二:使用低版本的python python3.9…

[项目][CMP][直接向堆申请页为单位的大块内存]详细讲解

目录 1.系统调用 1.系统调用 Windows和Linux下如何直接向堆申请页为单位的大块内存&#xff1a; VirtualAllocbrk和mmap // 直接去堆上按页申请空间 static inline void *SystemAlloc(size_t kpage) { #ifdef _WIN32void *ptr VirtualAlloc(0, kpage << 13, MEM_COMM…

Lombok jar包引入和用法

大家好&#xff0c;今天分享一个在编写代码时的快捷方法。 当我们在封装实体类时&#xff0c;会使用set、get等一些方法。如下图&#xff0c;不但费事还影响代码的美观。 那么如何才能减少代码的冗余呢&#xff0c;首先lib中导入lombok的jar包并添加库。 此处我已导入&#xf…

Jenkins+Svn+Vue自动化构建部署前端项目(保姆级图文教程)

目录 介绍 准备工作 配置jenkins 构建部署任务 常见问题 介绍 在平常开发前端vue项目时,我们通常需要将vue项目进行打包构建,将打包好的dist目录下的静态文件上传到服务器上,但是这种繁琐的操作是比较浪费时间的,可以使用jenkins进行自动化构建部署前端vue 准备工作 准备…