04OLED简介和调试方法

OLED简介和调试方法

调试方式

电脑想看什么变量可以直接打印到屏幕,但是单片机很多时候由于成本和电路结构的限制,就不会有强大的评价。

就像学习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如何使用的黑科技

相关推荐
辰哥单片机设计10 小时前
门磁模块详解(防盗感应开关 STM32)
stm32·单片机·嵌入式硬件·传感器
yrx02030710 小时前
stm32 IIC总线busy解决方法
stm32·单片机·嵌入式硬件
Archie_IT13 小时前
【STM32系统】基于STM32设计的SD卡数据读取与上位机显示系统(SDIO接口驱动、雷龙SD卡)——文末资料下载
arm开发·stm32·单片机·嵌入式硬件
辰哥单片机设计13 小时前
1×4矩阵键盘详解(STM32)
stm32·单片机·嵌入式硬件·矩阵·传感器
wmkswd13 小时前
CAN总线-STM32上CAN外设
stm32·单片机·嵌入式硬件
嵌入式大圣14 小时前
STM32 单片机最小系统全解析
stm32·单片机·嵌入式硬件
LN花开富贵19 小时前
stm32g431rbt6芯片中VREF+是什么?在电路中怎么设计?
笔记·stm32·单片机·嵌入式硬件·学习
qq210846295319 小时前
【stm32笔记】使用rtt-studio与stm32CubeMx联合创建项目
笔记·stm32·嵌入式硬件
CV金科19 小时前
蓝桥杯—STM32G431RBT6按键的多方式使用(包含软件消抖方法精讲)从原理层面到实际应用(一)
stm32·单片机·嵌入式硬件·蓝桥杯
luckyluckypolar19 小时前
STM32——输入捕获
stm32·单片机·嵌入式硬件·物联网