04OLED简介和调试方法
OLED简介和调试方法
- 调试方式
- 串口调试
- 显示屏调试
- 其他调试方法
- 总结:
- OLED
- 简介
- 硬件电路
- OLED驱动函数
- keil调试模式
- 进入方法
- keil调试界面窗口
- 简单功能说明
- 更加强大的功能
调试方式
电脑想看什么变量可以直接打印到屏幕,但是单片机很多时候由于成本和电路结构的限制,就不会有强大的评价。
就像学习C语言,没有printf函数,就没法学。所以要有一个调试工具才行。
串口调试
串口调试非常常见,用串口将单片机连到电脑,相当于把电脑的屏幕挂在单片机上,方便单片机显示调试信息,设计PCB时会有一个串口通信的引脚,用来程序调试(优势是可以借助强大的电脑来调试,电脑端的软件不仅可以显示单独的参数,还可以已显示曲线,图形,图像等,还可以自己做一个软件,来实现强大的用户交互功能)(弊端就是调试的时候要拖着电脑,而且通常的串口助手只能以信息流的方式呈现数据,就是只能一行一行打印,如果有很多不断变化的数据需要显示,那在电脑上就只能刷屏显示)
显示屏调试
显示屏调试的优势是对于不断变化的数据,可以覆盖刷新显示,而且显示屏可以始终接在单片机上,显示方式很直接,做一些稍微复杂的东西时,就需要一个人机交互界面,这样可以把显示屏当做产品的一部分,比较好用(弊端就是屏幕太小,显示内容有限)
屏幕可以用于调试,驱动函数后期再讲。先把OLED当成程序调试模块
其他调试方法
还有点灯调试法,如果不清楚程序执行到了哪个位置,就可以在那个位置放一个点灯的代码
注释调试法,如果程序原来是好的,但是加了某段程序就死了,这时可以把新加入的注释全部去掉,恢复到正常运行的状态,然后一行一行地解除注释,直到错误出现,或者注释掉一部分来测试另一部分,减少程序运行的部分,来定位出问题的程序在哪里。
对照法,找到一个没问题的程序,在它的程序逻辑上,逐步替换成你的程序逻辑
总结:
测试程序的基本思想:缩小范围,控制变量,对比测试等
OLED
简介
OLED每一个像素点都是一个单独的发光二极管,而LCD需要有背光,所以相对而言比较省电。
响应速度快可以使OLED有更高的刷新率
总线时序快也可以避免阻塞程序
宽视角:因为OLED是自发光的,所以在任何角度看,显示内容都是清晰的
驱动这种简单的OLED只需要几根线,占用资源比较少,
像素颜色中有:白色、蓝色、黄蓝双色(1/4是黄色,3/4是蓝色,并不是真正的双色,而是分区域固定,适合做一个需要显示标题行的界面)
硬件电路
4脚一般用IIC协议,7脚一般用SPI协议。
OLED驱动函数
STM32的引脚如果不进行初始化,默认就是浮空输入的模式
用这个OLED模块,只需要改引脚,还有用到引脚的外设和时钟就可以了,其余函数都封装好了
OLED_FONT.h文件,存的是OLED的字库数据,因为OLED显示屏是不带字库的,所以想要显示字符图形,还得先定义字符的点阵数据,所以这就存放的是字符的点阵数据(字库)
C语言不能写二进制的数,只能用十六进制来代替,C语言作为一个底层计算机编程语言,不支持写二进制的数,而且C语言还要翻译成汇编语言,但是汇编却支持二进制写入。但这可能是规定吧。
keil调试模式
进入方法
工程选项Debug可以对调试选项进行配置,默认选择的是右边的在硬件上进行在线仿真,需要把STLINK和单片机连接好
左边的是使用仿真器,这样是电脑模拟单片机的运行了。
仿真前要确保一下工程编译没有问题(如果有问题就要先解决问题)
点击“红d”进入调试模式,如果没有连接STLINK会报错
keil调试界面窗口
寄存器组和状态标志位如果用汇编编程,需要了解的非常清楚才行。
如果用的C语言,那么这些就不用管。
简单功能说明
这部分是程序运行控制
1.复位 2.全速运行 3.停止全速运行 4.单步运行 5.跳过当前行单步运行 6.跳出当前函数单步运行 7.调到光标指定行单步运行
黄色箭头指示的是下一句将要执行的代码,蓝色的是光标所在行
点击左边深灰色的区域,可以设置断点,点击全速运行,程序就会一直运行,直到断点停下,如果没有断点,再全速运行,程序就不会自动停下来,就需要点击停止按钮,程序才会停下来,
点击RST复位,程序就会回到最开始的地方,可以看到程序在复位中断函数里,说明复位后程序从此处开始执行。
首先程序会跳到SystemInit函数里面,然后函数执行到main函数里面。
这种方法可以精确跟踪我们的程序是如何运行的。可以在这个模式里面探索函数是一步一步如何执行的。这样对程序的逻辑理解会更深。
这是调试模式下简单的功能,调试模式下还有更强大的功能
更加强大的功能
第一个是命令窗口,可以打开和关闭命令窗口
第二个 反汇编窗口
第三个 符号窗口 可以实时查看程序中所有变量的值
如果想看结构体值的变化,可以点右键,添加到Watch1窗口。
点击单步运行,就能看到变量值的变化,这是非常方便的。
还有串口显示
逻辑分析仪
等等,可以自行再花时间详细了解一下
还可以点击外设菜单,系统资源查看,可以看到所有的外设寄存器
比如选择GPIOA,右边会显示GPIOA外设所有的寄存器
调试时,STM32也是在实时执行程序的,仿真点停止,stm32的程序也停止运行,再点运行,stm32也继续执行,虽然实时变化会有一些延迟,但在线调试功能还是很强大,stm32实时执行程序,keil软件实时显示外设寄存器状态。还能随时控制程序的开始、停止、单步运行。当遇到比较难调的程序,比如不清楚程序是如何执行的,或者想要看一大堆变量却不方便显示的,或者想看一下寄存器的值是不是配置正确了,都可以使用keil自带的调试模式。如果修改程序,不能直接在调试模式下修改,修改程序得先退出调试模式,重新编译后再进入调试模式。
keil更多功能等待更多探索。
Help打开官方帮助文档,有最权威最细致的介绍,有更多关于keil如何使用的黑科技
相关文章:

04OLED简介和调试方法
OLED简介和调试方法 调试方式串口调试显示屏调试其他调试方法总结: OLED简介硬件电路OLED驱动函数 keil调试模式进入方法keil调试界面窗口简单功能说明更加强大的功能 调试方式 电脑想看什么变量可以直接打印到屏幕,但是单片机很多时候由于成本和电路结构…...

“LNMP环境搭建实战指南:从零开始配置CentOS 7下的Nginx、MySQL与PHP“
目录 1.前言 2.准备工作 2.1.环境信息 2.2.关闭SELinux和firewalld 3.安装Nginx 3.1.运行以下命令,安装Nginx 3.2.运行以下命令,查看Nginx版本 4.安装MySQL 4.1.更新秘钥 4.2.配置MySQL的YUM仓库 4.3.安装MySQL 4.4.查看MySQL版本 4.5.启动…...

院内导航:如何用科技破解就医找路难题
自2019年开始“院内导航”被纳入医院智慧服务评估体系以来,到2023年改善就医服务升级的部署,每一步都见证了我国医疗卫生体系向智能化、人性化迈进的坚实步伐。 面对庞大复杂的医院环境与日益增长的就诊需求,如何让患者在茫茫人海中迅速找到就…...

C++基础篇(1)
目录 前言 1.第一个C程序 2.命名空间 2.1概念理解 2.2namespace 的价值 2.3 namespace的定义 3.命名空间的使用 4.C的输入输出 结束语 前言 本节我们将正式进入C基础的学习,话不多说,直接上货!!! 1.第一个C程…...

云视频监控中的高效视频转码策略:视频汇聚EasyCVR平台H.265自动转码H.264能力解析
随着科技的快速发展,视频监控技术已经广泛应用于各个领域,如公共安全、商业管理、教育医疗等。与此同时,视频转码技术作为视频处理的关键环节,也在不断提高视频的质量和传输效率。 一、视频监控技术的演进 视频监控技术的发展历…...

xcode配置swift使用自定义主题颜色或者使用RGB或者HEX颜色
要想在xcode中使用自定义颜色或者配置主题色,需要在Assets中配置,打开Assets文件,然后点击添加Color Set: 输入颜色的名称,然后选中这个颜色,会出现两个颜色: Any Appearance表示亮色模式下使用…...
相同含义但不同类型字段作为join条件时注意事项
假设表A和表B中都有表示学号的stu_id字段,但该字段在表A和表B中类型分别为bigint和string。当直接通过该字段进行join时,一般情况下可以得到我们预期的结果。 select a.stu_id from a as r join b as l on r.stu_id l.stu_id 但是如果学号长度较长的…...

数据结构(3.8)——栈的应用
栈在括号匹配中的应用 流程图 代码 #include <stdio.h> #include <stdlib.h> #define MaxSize 10typedef struct {char data[MaxSize];int top; } SqStack;// 初始化栈 void InitStack(SqStack* S) {S->top -1; // 初始化栈顶指针 }// 判空 bool StackEmpty(…...

前端面试题35(在iOS和Android平台上,实现WebSocket协议有哪些常见的库或框架?)
在iOS和Android平台上,实现WebSocket协议有许多成熟且被广泛使用的库和框架。下面是一些推荐的选项: iOS 平台 SocketRocket 简介:这是由Facebook开源的库,专门为iOS和Mac OS X设计,提供WebSocket连接的功能。它基于S…...

Mysql如何高效ALTER TABL
ALTER TABLE 缺点 MySQL 的ALTER TABLE 操作的性能对大表来说是个大问题。 MySQL MySQL 执行大部分修改表结构操作的方法是用新结构的 创建一个,空表从旧表中查出所有数据插入,新表然后删除旧。表这样操作可能需要花费很长,时间 如内果存不…...

vue3+vite搭建第一个cesium项目详细步骤及环境配置(附源码)
文章目录 1.创建vuevite项目2.安装 Cesium2.1 安装cesium2.2 安装vite-plugin-cesium插件(非必选)2.3 新建组件页面map.vue2.4 加载地图 3.完成效果图 1.创建vuevite项目 打开cmd窗口执行以下命令:cesium-vue-app是你的项目名称 npm create…...

LiteOS增加执行自定义源码
开发过程注意事项: 源码工程路径不能太长 源码工程路径不能有中文 一定要关闭360等杀毒软件,否则编译的打包阶段会出错 增加自定义源码的步骤: 1.创建源码目录 2. 创建源文件 新建myhello目录后,再此目录下再新建源文件myhello_demo.c 3. 编…...

《Nature》文章:ChatGPT帮助我学术写作的三种方式
图片翻译 ** 文章内容** 忏悔时间:我使用生成式人工智能(AI)。尽管在学术界关于聊天机器人是积极力量还是消极力量的争论不休,但我几乎每天都使用这些工具来完善我所写论文中的措辞,并寻求对我被要求评估的工作进行替…...

防火墙安全策略与用户认证综合实验
一、实验拓扑 二、实验需求 1.DMZ区内的服务器,办公区仅能在办公时间内<9:00-18:00>可以访问,生产区的设备全天可以访问 2.办公区不允许访问互联网,办公区和游客区允许访问互联网 3.办公区设备10.0.2.10不充许访问DMZ区的FTP服务器和HT…...

vue学习day05-watch侦听器(监视器)、Vue生命周期和生命周期的四个阶段、、工程化开发和脚手架Vue cli
13、watch侦听器(监视器) (1)作用:监视数据变化,执行一些业务逻辑或异步操作 (2)语法: 1)简写语法——简单数据类型,直接监视 ① Watch:{ 数…...

数字人+展厅互动体验方案:多元化互动方式,拓宽文化文娱新体验
数字化创新已成为推动展厅可持续发展,创造全新消费体验,满足游客多元化需求的关键力量。 “数字人数字互动展厅”可以适应年轻一代的文化传播与多媒体互动新体验趋势,打造新生代潮玩聚集地,促进文化创意传播与互动体验场景创新&a…...
在Spring Boot项目中集成监控与报警
在Spring Boot项目中集成监控与报警 大家好,我是微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 1. 引言 在当今的软件开发中,监控和报警系统是保证系统稳定性和可靠性的重要组成部分。Spring Boot…...

opencv实现目标检测功能----20240704
早在 2017 年 8 月,OpenCV 3.3 正式发布,带来了高度改进的“深度神经网络”(dnn)模块。 该模块支持多种深度学习框架,包括 Caffe、TensorFlow 和 Torch/PyTorch。这次我们使用Opencv深度学习的功能实现目标检测的功能,模型选用MobileNetSSD_deploy.caffemodel。 模型加载…...
音视频解封装demo:使用libmp4v2解封装(demux)出mp4文件中的h264视频数据和aac语音数据
1、README 前言 本demo是使用的mp4v2来将mp4文件解封装得到h264、aac的,目前demo提供的.a静态库文件是在x86_64架构的Ubuntu16.04编译得到的,如果想在其他环境下测试demo,可以自行编译mp4v2并替换相应的库文件(libmp4v2.a&#…...

手撸俄罗斯方块(一)——简单介绍
手撸俄罗斯方块 简单介绍 《俄罗斯方块》(俄语:Тетрис,英语:Tetris),是1980年末期至1990年代初期风靡全世界的电脑游戏,是落下型益智游戏的始祖,电子游戏领域的代表作之一&a…...

【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...

python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...

uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...

图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...