基本信息
点灯法,对照法,注释法,串口调试(把调试信息发送到电脑),显示屏调试(显示屏连接到单片机,打印到显示屏上)等。
OLED(有机发光二极管):宽视角(各个视角都能看清楚),功耗低(每个像素都是一个自发光的二极管,LCD则需要背光),相应速度快(刷新率更高)
通信协议:I2C(一般四针脚)/SPI(一般七针脚)
接口除了电源跟地,其余接任意GPIO口,用的是io口模拟的通信,正常是接通信口。
驱动函数
函数 | 作用 |
OLED_Init(); | 初始化 |
OLED_Clear(); | 清屏 |
OLED_ShowChar(1, 1, 'A'); 1行1列先是字符A | 显示一个字符 |
OLED_ShowString(1, 3, "HelloWorld!"); | 显示字符串 |
OLED_ShowNum(2, 1, 12345, 5); | 显示十进制数字 |
OLED_ShowSignedNum(2, 7, -66, 2); 2行7选择长度为2的有符号字符-66 | 显示有符号十进制数字 |
OLED_ShowHexNum(3, 1, 0xAA55, 4); | 显示十六进制数字 |
OLED_ShowBinNum(4, 1, 0xAA55, 16); | 显示二进制数字 |
每种不同针脚的oled都对应不同的驱动,驱动放在程序源码中,有四针脚以及7针脚两种,用相对的应该先导入驱动函数模块,其实就是.c.h文件,也可以自己编写,只要水平够。
oled.c文件修改对应引脚就行了。
在HardWare中添加.c.h文件,.c文件中绝大部分不用更改,只需要更改前部分显示屏接的引脚位置以及初始化引脚,.h文件中是外部可以调用的函数名称,还有OLED.Font添加字库
GPIO口引脚不进行配置默认浮空输入模式,这个模式下引脚不会输出电平,所以不配置的I/O所导通的地方可以用。
长度设置小了会自动切掉高位,大了会补0;所以要注意长度。
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "OLED.h"
int main(void)
{
OLED_Init();
OLED_ShowChar(1, 1, 'A');
OLED_ShowString(1, 3, "HelloWorld!");
OLED_ShowNum(2, 1, 12345, 5);
OLED_ShowSignedNum(2, 7, -66, 2);
OLED_ShowHexNum(3, 1, 0xAA55, 4);
OLED_ShowBinNum(4, 1, 0xAA55, 16);
//OLED_Clear();
while (1)
{
}
}
KEIL调试
先魔术棒,debug,两个use两个不同方法,右边一个需要硬件,也就是连接stm32,左边一个不用,默认电脑模拟。
点击debug进入。
黄色:将要执行的代码行
灰色,点一下,断点
左上角几个按钮第四个运行到当前行
依次是复位,全速运行,停止,单步运行,×××,跳出函数,运行到光标指定行,看某个的值,第三个符号窗口 ;
symbol window可以看这个函数中各个变量的值,假设看结构体的值,点开那个main之后,右键,ADD,添加到Watch1;就能看到值了。
Peripherals外设,可以看到所有的外设寄存器,实时性,不能在调试下修改,odr0则是gpioA0的输出寄存器,试试显示变化。