stm32程序调试方式(OLED显示屏调试以及Keil调试模式)

文章目录

  • 前言
  • 一、调试的方式
  • 二、OLED显示屏调试
    • 2.1 OLED简介
    • 2.2 OLED硬件电路
    • 2.3 OLED驱动函数介绍
    • 2.4 OLED显示屏应用案例代码
  • 三、Keil调试模式
  • 总结


前言

提示:本文主要用作在学习江协科大STM32入门教程后做的归纳总结笔记,旨在学习记录,如有侵权请联系作者

本文主要介绍stm32程序的调试方法(OLED显示屏调试以及Keil调试模式)。


一、调试的方式

stm32程序常用的调试方式如下:

调试方式描述
串口调试通过串口通信,将调试信息发送到电脑端,电脑使用串口助手显示调试信息
显示屏调试直接将显示屏连接到单片机,将调试信息打印在显示屏上
Keil调试模式借助Keil软件的调试模式,可使用单步运行、设置断点、查看寄存器及变量等功能

二、OLED显示屏调试

2.1 OLED简介

  • OLED(Organic Light Emitting Diode):有机发光二极管
  • OLED显示屏:性能优异的新型显示屏,具有功耗低、相应速度快、宽视角、轻薄柔韧等特点
  • 0.96寸OLED模块:小巧玲珑、占用接口少、简单易用,是电子设计中非常常见的显示屏模块
  • 供电:3~5.5V,通信协议:I2C/SPI,分辨率:128*64

在这里插入图片描述

2.2 OLED硬件电路

在这里插入图片描述

1. 四针脚OLED显示屏:

在这里插入图片描述
其中SCL跟SDA是I2C的通信引脚,需要接在单片机I2C的通信引脚上。由于驱动函数模块用的是GPIO口模拟的I2C通信,所以这两个端口可以接到任意的GPIO口上。

2. 七针脚OLED显示屏:

在这里插入图片描述
其中除了VCC跟GND引脚,其他都是SPI的通信引脚。

2.3 OLED驱动函数介绍

函数功能
OLED_Init();初始化
OLED_Clear();清屏
OLED_ShowChar(起始行, 起始列, ‘显示字符’);显示一个字符
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);显示二进制数字

在这里插入图片描述

2.4 OLED显示屏应用案例代码

主程序main.c文件:

#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);while (1){}
}

OLED显示屏工程:OLED显示屏驱动代码及应用案例

三、Keil调试模式

点击魔术棒按钮,找到Debug选项,这里可以对调试选项进行配置。这里默认是选择右边这项的,这个是在硬件上在线仿真,需要我们把STLINK跟stm32都连接好,如果你不想连接硬件,也可以选择左边这个选择仿真器这个选项,这样就是电脑模拟stm32的运行了。

在这里插入图片描述
在这里我们选择使用硬件的在线仿真作为演示。首先,在进行硬件在线仿真之前,先把stm32硬件电路接好并通上电运行,接着找到右上角带d字样的图标,点击进入调试模式。如果想要退出调试模式,再点一下该按钮就行了。

在这里插入图片描述

在这个界面里,主窗口就是我们的C程序,上面这个窗口就是C语言翻译成汇编程序,然后左边这个窗口是寄存器组和状态标志位等信息。

在这里插入图片描述

下面这一部分是用于程序运行控制的,从左边开始依次是复位、运行、停止运行、单步运行、跳过当前行单步运行、跳出当前函数单步运行、跳到光标指定行单步运行。

在这里插入图片描述

如果想要查看程序运行过程中某个变量的值,可以点击这个按钮。

在这里插入图片描述

点击按钮后右边就会出现一个弹窗,比如我们要查看LED_Init函数里GPIO_InitStructure变量的值,就可以在右边找到对应的LED.c。

在这里插入图片描述
然后再找到GPIO_InitStructure变量右键单击选择watch1,然后就能在下面的窗口实时观察到该变量数值的变化了。

在这里插入图片描述

在这里插入图片描述
另外,我们还可以点击这个外设菜单栏 -> 系统资源查看 ,这里可以看到所以的外设寄存器。

在这里插入图片描述


总结

总之,调试程序的基本思想就是缩小范围、控制变量、对比测试等,调试的方法是多样的,大家可以根据实际情况选择一种适合自己的调试方式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/396002.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于GeoTools使用JavaFx进行矢量数据可视化实战

目录 前言 一、JavaFx展示原理说明 二、GeoTools的Maven依赖问题 三、引入Geotools相关的资源包 四、创建JavaFx的Canvas实例 五、JavaFx的Scene和Node的绑定 六、总结 前言 众所周知,JavaFx是Java继Swing之后的又一款用于桌面应用的开发利器。当然&#xff0…

9.C基础_指针与数组

数组指针(一维数组) 数组指针就是" 数组的指针 ",它是一个指向数组首地址的指针变量。 1、数组名的含义 对于一维数组,数组名就是一个指针,指向数组的首地址。 基于如下代码进行分析: int a…

语言模型-神经网络模型(二)

神经网络模型语言模型 神经网络模型神经网络的分类神经网络模型和Ngram对比应用一-话者分离对比优劣 应用二-数字归一化应用三-文本打标 神经网络模型 释义: 与ngram模型相似使用,前n个词预测下一个词,输出在字表上的概率分布;过…

如何设置 Visual Studio Code 的滚轮缩放功能

Visual Studio Code (VSCode) 是一个强大的代码编辑器,提供了许多便捷的功能来提高开发效率。其中之一就是通过滚轮缩放字体大小。以下是详细的设置步骤: 步骤 1:打开设置页面 首先,启动 Visual Studio Code。在左上角点击 “文…

【机器学习基础】线性回归

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科,通过算法和模型让计算机从数据中学习,进行模型训练和优化,做出预测、分类和决策支持。Python成为机器学习的首选语言,…

集成视触觉传感器的机器人操作学习

强化学习是一种仿人学习的方法,其在不断与环境交互试错的过程中进行学习,提高自身的认知。其具有如下的优点,首先是数据依赖性低,强化学习通过与环境的交互来学习,减少了对标记数据的依赖性,可以大量的减少…

Linux 系统框架分析(一)

一、linux内核结构框图 对内核结构框图有个总体的把握,有助于理解为什么驱动要这样写,为什么写的应用程序所用的C库接口能够产生这么多的事情。 框图可以看出来,linux系统,包括五个系统 一、Linux内核结构介绍 Linux 内核是操作…

Spring及相关框架的重要的问题

Java框架 问题一:Spring框架中的单例bean是线程安全的吗? 看下图,不能被修改的成员变量就是无状态的类,无状态的类没有线程安全问题,所以在开发中尽量避免可修改的成员变量。 回答:不是线程安全的&#xf…

Oracle一对多(一主多备)的DG环境如何进行switchover切换?

本文主要分享Oracle一对多(一主多备)的DG环境的switchover切换,如何进行主从切换,切换后怎么恢复正常同步? 1、环境说明 本文的环境为一主两备,数据库版本为11.2.0.4,主要信息如下: 数据库IPdb_unique_n…

Github 2024-08-09 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-08-09统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目6TypeScript项目4Jupyter Notebook项目1Cuda项目1Sentry:开发者优先的错误跟踪和性能监控平台 创建周期:5093 天开发语言:Python,…

android系统中data下的xml乱码无法查看问题剖析及解决方法

背景: Android12高版本以后系统生成的很多data路径下的xml都变成了二进制类型,根本没办法看xml的内容具体如下: 比如想要看当前系统的widget的相关数据 ./system/users/0/appwidgets.xml 以前老版本都是可以直接看的,这些syste…

旅游出行必备商城小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,新闻类型管理,新闻资讯管理,商品类型管理,旅游商品管理,旅游景点,景点分类,系统管理 微信端账号功能包括&am…

GitHub的常用操作

目录 GitHub GitHub加速 克隆GitHub上的项目到本地 克隆GitHub上指定分支的项目 把本地项目上传到GitHub上管理 删除分支里的内容 单个仓库管理多个项目 上传项目到新建的分支 目前正在逐步熟悉GitHub,打算把整理好的代码上传到GitHub上,建立属…

C++ 类与对象

面向对象程序设计基本特点 特点: 抽象(数据抽象,行为抽象) 数据抽象:int hour,int minute.....,车:长,宽,高.... 功能抽象:showTime(),setTime() .....车:刹车…

使用Cisco进行模拟配置OSPF路由协议

OSPF路由协议 1.实验目的 1)理解OSPF 2)掌握OSPF的配置方法 3)掌握查看OSPF的相关信息 2.实验流程 开始 → 布置拓扑 → 配置IP地址 → 配置OSPF路由并验证PC路由的连通性 → 查看路由器路由信息 → 查看路由协议配置与统计信息 → 查看O…

【从零开始一步步学习VSOA开发】VSOA命令行工具vcx

VSOA命令行工具vcx vcx 介绍 vcx 是一个使用 VSOA RPC 客户端功能执行器,支持 RPC SET/GET 调用。 [rootsylixos:/root]# [rootsylixos:/root]# vcx -help USAGE: vcx [options] url -h : Show help message. -v : Show vcx version. -z …

[MRCTF2020]PYWebsite-1

打开以后查看源码信息 看到flag.php试着打开 提示看到,需要后端审计代码,而且应该要改ip,改成自己本地,burp抓包看一下 改X-Forwarded-For:127.0.0.1 得到flag flag{74242eb7-844f-4638-8aae-9ec37870d585}

通过LLM大模型将「白雪公主的故事」转为图数据存储

💡 本次将使用LLM大模型将「白雪公主的故事」转为图数据存储于neo4j数据库中,并展示图数据部分的效果 故事内容 很久很久以前,在一个遥远的王国里,有一位美丽的**王后**生下了一个皮肤像雪一样白皙、嘴唇像血一样鲜红的**女儿**…

网页设计模板范例

随着互联网的发展,网页设计变得越来越重要。一个吸引人的网页设计可以吸引更多的用户,提升用户体验,并且使网站内容更加易于浏览和理解。在这篇文章中,我将为大家介绍一个网页设计模板范例。 1. 选择合适的颜色和字体:…

golang for range time.Ticker 和 time.Timer时间通道使用示例 - 每隔指定时间执行一次,执行指定时长后退出执行

golang中的 ticker和timer时间通道除了可以使用for select case语句来执行外, 还可以使用 for range语句来执行ticker或者timer时间通道。 for range time.Ticker 和 time.Timer时间通道使用示例 下面的示例演示了time.Ticker 和 time.Timer的区别和使用演示。 Ti…