51/stm32单片机软件调试方法与技巧
常用单片机调试方式有仿真器、串口、屏幕显示。
1、仿真器仿真
IAR、keil等集成开发环境配合仿真器调试程序很适合单片机
优点:可设置断点、实时查看内存等
缺点:要有仿真器
2、串口调试
相较于仿真器仿真,串口调试不需要仿真器,在某些没有或者不能使用仿真器的系统上更实用,通用性更强。
一般串口输出我们会使用重定向到串口的printf函数或者自定义的串口输出函数(比如:send_debug_msg(char* msg)),我们在程序中某处输出调试信息
#ifdef DEBUGsend_debug_msg("exec 002");
#endif
像这样每句输出前后都会带上 #ifdef #endif,看起来不是很简洁,我们换一种写法让他只占用一行。
#ifdef DEBUG
#define DEBUGF(fmt) send_debug_msg(fmt)
#else
#define DEBUGF(fmt)
#endifor#ifdef DEBUG
#define DEBUGF(fmt,args...) printf(fmt ,##args)
#else
#define DEBUGF(fmt,args...)
#endif
这样我们在写程序时可以直接写DEBUGF("exec 002");如果DEBUG被定义了这句话就会被替换为send_debug_msg("exec 002");正常输出。否则会被替换为空,用printf函数调试用法也类似。
DEBUGF("exec 002");等价于#ifdef DEBUGsend_debug_msg("exec 002");
#endif
3、屏幕显示
使用屏幕显示调试的信息,这种方式有较大限制,因为很多目标系统并不配有屏幕,不推荐使用
51/stm32单片机软件调试方法与技巧相关推荐
- JLINK在线调试——软件调试方法与技巧
目录 JTAG/SWD调试原理 在实验中讲解调试方法 JTAG/SWD调试原理简析 调试 SWJ调试端口脚 灵活的SWJ-DP引脚分配 JTAG/SWD模式设置库函数 JTAG/SWD接口常见硬件图
- STM32工作笔记0049---JLINK在线调试__软件调试方法与技巧
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 .
- 嵌入式开发<单片机软件调试>
嵌入式开发<单片机软件调试> 前言 一.交互式调试设计依赖工具 二.交互式调试设计的使用方法 1.普通方法 2.定制方法 三.交互式调试产品设计 1, 全局需要使用的宏定义 2,设计一个功 ...
- linux下gdb调试方法和技巧详解
linux下gdb调试方法和技巧整理 简介 UNIX或者UNIX-like下调试工具 启动gdb # 1. 在可执行程序不需要输入参数时,我们可以使用 gdb + 可执行程序 gdb ./typeid ...
- VC++调试方法和技巧
VC++调试方法和技巧 便于调试的代码风格: 1. 不用全局变量: 2. 所有变量都要初始化,成员变量在构造函数中初始化: 3. 尽量使用const: 4. ...
- 一种通信设备免现场软件调试方法
一种通信设备免现场软件调试方法 CN 100488119 C 摘要 本发明提供了一种通信设备免现场软件调试的方法:由硬件安装工人在施工现场利用通信设备免现场调试工具,对通信设备进行数据配置工作,使得通 ...
- STM32单片机(三).STM32单片机的开发方法
经过前两章节对STM32的简单介绍,在接下来的几个章节中开始进行STM32单片机的软件开发实践,所使用到的工具有Keil5.STM32CubeMX以及串口软件.对于STM32F1系列的单片机,其存储器 ...
- stm32 MDK debug调试方法
MDK debug调试方法 使用仿真器进行在线调试 ⭐基础调试方法 调试环境的配置 调试界面介绍 执行操纵栏 断点 挂起 调试窗口介绍 call stack windows watch windows ...
- 5加载stm32 keil_快速入门STM32单片机-软件篇
关于这个STM32的编程开发环境Keil,网上有太多相关的资源了,而且大都讲解的非常详细.所以本篇文章无意于深入细节,只会提供我学习时候的一些体会,帮助你更好的掌握相关知识. 1.标准外设库(Stan ...
- 【C语言】调试方法和技巧详解
推荐一个软件,禅定空间,放下手机,珍惜时间,为未来搏一搏,为了未来美好的生活,冲鸭!!!! 文章目录 前言 1. 什么是调试 2. 调试步骤 2.1 发现错误 2.1.1 编译型错误 2.2.2 链接 ...
最新文章
- Java SE和Java EE应用的性能调优
- 《ASP.NET MVC 4框架揭秘》试读章节
- 在ASP.NET MVC使用JavaScriptResult
- [Vue warn]: You are using the runtime-only build of Vue where the template compiler is not available
- Navicat 10 for SQL Server - 绿色中文版
- Collecting Bugs POJ - 2096(基础概率dp+期望模板)
- HTML和CSS面试问题总结,html和css面试总结
- byteofpython中文gitbook_GitBook 简明教程
- 中介者模式php,php设计模式 Mediator (中介者模式)
- python和c 的区别-Python与C语言的区别
- DirectX修复工具V4.1公测!
- java 繁体转简体_如何用java将繁体字转为简体字
- 群晖系统ftp服务器,群晖对接云服务器ftp
- php红包互助源码_完整的微信红包接口API实现(php版)
- 手把手教你怎样用U盘装系统
- 高效的敏捷测试第八课 静态测试工具和生成测试报告
- web.xml学习随笔
- 如何在网页里插入3D模型并进行互动展示?
- Blender着色器节点教程 —— AO
- led灯串怎么摆造型_彩灯羊造型
热门文章
- css直角线_CSS秘密花园:折角效果
- dell 服务器启用虚拟化,打开DELL R410服务器BIOS虚拟化步骤(图文教程)
- struct template 函数 特化
- python 科研作图_Origin科研绘图
- 路由器修改html,徒手修改大麦路由器dw33d,变luci中文界面,并开启ssh
- MATLAB与STK互联39:动画控制、地面两个点的大圆距离计算
- 启动tomcat服务器,struts2报此错:org.apache.catalina.core.StandardContext.filterStart Exception starting filt
- 阿里云API调用 OCR python
- Android 获取经纬度处理
- Win7系统怎么开启远程桌面?Win7远程桌面怎么用