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…...
Python从入门到精通(第14章):迭代器与生成器
开头导语 这是本系列第14章。前面你已经用过很多次迭代器和生成器——for x in data 的背后是什么,map 返回的对象为什么不能下标访问,range 为什么不会占很多内存——这些问题的答案都在本章。通过亲手实现一个迭代器类,你会对 Python 迭代协议有清晰的认识,遇到相关错误…...
构建语音搜索引擎:FireRedASR Pro与Elasticsearch整合实践
构建语音搜索引擎:FireRedASR Pro与Elasticsearch整合实践 你有没有想过,对着手机说句话,就能从海量文档里精准找到你想要的信息?比如,在公司的知识库里,直接问“上季度华东区的销售数据报告在哪ÿ…...
3大技术突破重构macOS鼠标体验:Mac Mouse Fix深度解析
3大技术突破重构macOS鼠标体验:Mac Mouse Fix深度解析 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 核心痛点分析:mac…...
Arduino-IRremote代码调试技巧:10个高效解决开发难题的方法
Arduino-IRremote代码调试技巧:10个高效解决开发难题的方法 【免费下载链接】Arduino-IRremote Infrared remote library for Arduino: send and receive infrared signals with multiple protocols 项目地址: https://gitcode.com/gh_mirrors/ar/Arduino-IRremot…...
利用Dify平台快速搭建InternLM2-Chat-1.8B智能应用
利用Dify平台快速搭建InternLM2-Chat-1.8B智能应用 你是不是也遇到过这种情况:好不容易在服务器上部署了一个像InternLM2-Chat-1.8B这样的开源大模型,感觉它能力挺强,但除了在命令行里一问一答,就不知道怎么把它变成一个真正能用…...
AI推动SEO关键词优化的全新策略与实践明晰
在当前数字营销环境中,AI技术为SEO关键词优化带来了前所未有的变革。它通过自动化的数据分析与挖掘工具,能够帮助企业更准确地识别用户需求与搜索趋势。通过AI的支持,关键词挖掘变得更加高效和精准,企业可以快速获取相关关键词并优…...
从旅游Vlog到新闻视频:QVHIGHLIGHTS数据集在跨领域应用中的实战指南
QVHIGHLIGHTS数据集:跨领域视频内容智能解析的工程实践 当你在旅行Vlog中搜索"日落时分的海滩漫步",或在新闻视频中寻找"抗议活动现场冲突画面",传统视频平台只能返回整段视频——这就像给你一整本书而不是精确的页码。Q…...
BEYOND REALITY Z-Image避坑指南:解决生成图片模糊、全黑的常见问题
BEYOND REALITY Z-Image避坑指南:解决生成图片模糊、全黑的常见问题 1. 为什么你的Z-Image生成效果不理想? 当你第一次使用BEYOND REALITY Z-Image时,可能会遇到这样的困扰:明明输入了详细的提示词,生成的图片却要么…...
如何通过开源数据集创造商业价值:Awesome Public Datasets全攻略
如何通过开源数据集创造商业价值:Awesome Public Datasets全攻略 【免费下载链接】awesome-public-datasets A topic-centric list of HQ open datasets. 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-public-datasets 在数据驱动决策的时代&a…...
别再傻等DockerHub了!手把手教你配置阿里云镜像加速,5分钟搞定MySQL 8.0拉取
国内开发者必备:5分钟配置Docker镜像加速全攻略 每次在终端输入docker pull后,看着进度条像蜗牛一样缓慢移动,或者干脆直接报错Error response from daemon,这种体验对国内开发者来说再熟悉不过了。DockerHub的服务器远在海外&am…...
