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