4.2.STM32-OLED显示屏

接线图

我们需要在OLED显示屏下面先接好这几根线,把OLED的GND引到负极供电孔 ,OLED的VCC引到正极供电孔

我们不要接这两个跳线,直接给PB6口输出低电平、PB7口输出高电平,用GPIO口直接给OLED供电是ok的,只是不够规范。实际项目最好用电源供电

我们再根据教程把OLED工程新建起来。

OLED.c

函数的主体代码。里面包括了引脚配置引脚初始化I2C通信的基本时序OLED用户调用的代码等

引脚配置引脚初始化部分可以根据需要更改。

OLED.h

关于外部可调用函数的声明

OLED_Font.h

这里存的是OLED的字库数据。因为OLED显示屏本身不带字库,想要显示字符图形,还得先定义字符的点阵数据。OLED.c文件的显示函数会用到这些数据

根据教程展示显示屏

中间补充一些字幕,比如说STM32其实支持写二进制,写法为0b+数据

展示结果

接下来我们演示一下Keil的调试模式

Keil的调试模式

以LED闪烁的工程为例

在工程选项,也就是这个魔术棒,Debug这里可以对调试选项进行配置

这里默认是选择右边的这一项,这个是在硬件上在线仿真,需要我们把STLINK和STM32都连接好。

如果不想连接硬件,也可以选择左边的"使用仿真器 "这个选项,这样就是电脑模拟STM32的运行了

我们选择硬件的在线仿真。

点击这个放大镜之后

上面的这个窗口就是C语言翻译成的汇编程序,如果感兴趣,可以对照这里,看一下每句C语言实际上都执行了哪些操作

左边的这个窗口是寄存器组状态标志位 等信息,这个是单片机硬件底层很重要的东西,如果你用汇编编程的话,要对这些东西非常熟悉。如果学的是C语言,这些东西完全不用管

上面这一部分是程序运行控制的,

第一个是复位,第二个是全速运行,第三个是停止全速运行

第四个是单步运行跳过当前行单步运行跳出当前函数单步运行调到光标指定行单步运行

这个黄色箭头指的就是下一句将要执行的代码,我们当前函数就是从main开始的

我们可以点一下单步运行,那他就执行到了下一行

然后再单步就进到RCC这个函数里来了

点击这个跳出函数

它就可以跳到函数外面来了

我们再点击"运行到光标指定行",黄色光标就跟上来了

我们可以点击程序左边这里深灰色的区域,设置断点(就是红圆点)

然后点击全速运行,程序就会一直运行,直到断点停下

如果没有断点,再全速运行,程序就不会自动停下来,我们需要点击"停止"按钮才会停下

最后点击RST复位,程序就会回到最开始的地方

这里我们可以看到,现在程序是在启动文件的复位中断函数里,说明复位后,程序是从这里开始执行的

我们单步运行,首先会跳到SystemInit函数里

再运行一下,跳出函数,就会回到main函数

以上就是调试模式下控制程序运行的方法

调试模式还有很多强大的功能

  • 第一个是命令窗口,我们点击它可以打开和关闭命令窗口

  • 第二个是反汇编窗口,同上

  • 第三个是符号窗口,在这里我们可以实时查看程序中所有变量的值

    • 比如我们想看这个GPIO_InitStructure结构体的值,那就可以在这个窗口找一下。里面可以看到结构体的三个成员

如果想看一下结构体值的变化,可以在 GPIO_InitStructure 右键,添加到Watch 1 窗口

在这里就可以看到结构体的值了

我们单步运行,可以看到这个变量值的变化

剩下的还有串口显示、逻辑分析仪等等

另外,我们还可以点击这个外设菜单栏--系统资源查看,这里可以看到所有的外设寄存器

比如我们选择GPIOA,右边这里就会显示GPIOA外设的所有寄存器

我们这个程序是翻转PA0端口,那我们就可以看一下ODR寄存器,选择ODR0,这个就是PA0的输出数据寄存器

接下来我们运行,可以看到这个ODR0竟然是实时显示输出寄存器 的变化的,这说明在线调试是允许的

STM32实时执行程序、Keil软件实时显示外设寄存器状态,还能随时控制程序的开始、停止、单步运行

最后,不能在调试模式下修改程序

下节预告:EXTI外部中断+对射式红外传感器计次&旋转编码器计次

相关推荐
ACP广源盛1392462567316 分钟前
GSV6155@ACP#6155产品规格详解及产品应用分享
嵌入式硬件·计算机外设·音视频
大唐荣华25 分钟前
灵巧手 - 绳驱(钢丝/绳索驱动)、连杆(Linkage)和直驱(Direct Drive)的技术对比
嵌入式硬件·机械·灵巧手
阿拉斯攀登34 分钟前
51单片机:点灯程序的底层拆解
单片机·嵌入式硬件·51单片机
网易独家音乐人Mike Zhou37 分钟前
【嵌入式模块芯片开发】LP87524电源PMIC芯片配置流程,给雷达供电的延时上电时序及API函数
c语言·stm32·单片机·51单片机·嵌入式·电源·毫米波雷达
小小Fred1 小时前
Cortex-M3的xPSR寄存器介绍
单片机·嵌入式硬件
就是蠢啊1 小时前
51单片机——DS1302 时钟芯片(二)
单片机·嵌入式硬件·51单片机
无人装备硬件开发爱好者1 小时前
深度解析:STM32 MDK 工程 HEX 文件转 BIN 文件 —— 原理、方法、优缺点与实战指南(下)
stm32·嵌入式软件·mdk·hex2bin
无人装备硬件开发爱好者1 小时前
深度解析:STM32 MDK 工程 HEX 文件转 BIN 文件 —— 原理、方法、优缺点与实战指南(上)
stm32·嵌入式硬件·hex2bin
up向上up2 小时前
基于51单片机智能家居环境检测设计_烟雾温度GSM短信提示报警器
嵌入式硬件·51单片机·智能家居
Nautiluss2 小时前
一起玩XVF3800麦克风阵列(五)
嵌入式硬件·音频·语音识别·智能音箱