调试方式
- 串口调试:通过串口通信,将调试信息发送到电脑端,电脑使用串口助手显示调试信息;
(可以借助电脑显示参数、曲线、图像等,还可以制作软件实现用户交互界面) - 显示屏调试:直接将显示屏连接到单片机,将调试信息打印到显示屏上;
(对于不断变化的数据可以覆盖刷新显示,显示方式直接,并且显示屏可以当作人机交互界面) - Keil调试模式:借助Keil的调试模式,可使用单步运行、
设置断点、查看寄存器及变量等功能;
【测试程序的基本思想就是缩小范围、控制变量、对比测试】
OLED简介
- OLED(Organic Light Emitting Diode):有机发光二极管;
- OLED显示屏:性能优异的新型显示屏,具有功耗低、响应速度快、宽视角、轻薄柔韧等特点;
- 0.96寸OLED模块小巧玲珑、占用接口少、简单易用,是电子设计中非常常见的显示屏模块;
- 供电:3~5.5V,通信协议:I2C/SPI,分辨率:128*64;
硬件电路
4针脚OLED
SCL和SDA是I2C的通信引脚,要接在单片机I2C通信引脚上;
7针脚OLED
SPI通信协议引脚
OLED驱动函数
驱动函数表
屏幕坐标图
屏幕被分成4行16列的小区块
代码部分
接线图
相关代码
- 主要文件
OLED_Fonth里面是OLED的字模库,一般不需要修改; - 使用OLED驱动函数时只要配置引脚即可;
【如果想修改引脚,注意“引脚初始化”中的结构体引脚参数也需要对应修改,这里默认的是GPIOB的8号引脚和9号引脚】
#include "stm32f10x.h"
#include "OLED_Font.h"
/*引脚配置*/
#define OLED_W_SCL(x) GPIO_WriteBit(GPIOB, GPIO_Pin_8, (BitAction)(x))
#define OLED_W_SDA(x) GPIO_WriteBit(GPIOB, GPIO_Pin_9, (BitAction)(x))
- 头文件
#ifndef __OLED_H
#define __OLED_H
void OLED_Init(void);
void OLED_Clear(void);
void OLED_ShowChar(uint8_t Line, uint8_t Column, char Char);
void OLED_ShowString(uint8_t Line, uint8_t Column, char *String);
void OLED_ShowNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length);
void OLED_ShowSignedNum(uint8_t Line, uint8_t Column, int32_t Number, uint8_t Length);
void OLED_ShowHexNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length);
void OLED_ShowBinNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length);
#endif
调试
进入调试
点击Keil中的放大镜图标
调试界面
-
主窗口是C语言程序,上面的窗口是汇编程序,左边的窗口是寄存器组和状态标志位等信息,黄色箭头指的是下一句将要执行的代码
-
程序控制的,分别是复位、全速运行、停止全速运行、单步运行、跳过当前行单步运行、跳出当前函数单步运行、跳到光标指定行单步运行
-
功能区:
命令窗口:打开和关闭命令窗口;
反汇编窗口
符号窗口:可以实时查看程序中所有变量的值,对某一变量右键添加到watch窗口可以观察该变量值的变化;
串口显示
逻辑分析仪
-
实时观察寄存器
-
注意:修改程序需要退出调试模式,重新编译后再进入调试程序;