持续关注阿杰在线更新保姆式笔记~~坚持日更

参考资料
《STM32F1开发指南-库函数版本》3.4小节和6.4小节
《STM32中文参考手册V10》29章

目录

一、前言

二、调试原理

三、软件调试

四、硬件调试


一、前言

这一篇博客主要讲解STM32F1开发板如何进行调试,分别是硬件调试(STLINK)调试和软件调试。

二、调试原理

STM32的调试原理核心是比较复杂的,但是我们了解的东西可以简单一些。首先STM32支持JTAG和SWJ调试,其中JTAG需要五个接口,SWJ仅需要两个接口,所以在之后的大部分调试我们优先选择SWJ进行调试,如下图是STM32中文参考手册的M3调试框图。蓝框为JTAG调试,红框为SWJ调试端口。

如下图所示,SWJ调试只需要PA13和PA14两个引脚即可实现调试功能。

所以在一般情况下使JTAG-DP接口禁止,SW-DP接口允许

而如何实现使JTAG-DP接口禁止,SW-DP接口允许,需要用上一个GPIO的函数

void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState);

FunctionalState NewState设置为ENABLE,由下面代码可知GPIO_Remap设置为 GPIO_Remap_SWJ_JTAGDisable。

#define GPIO_Remap_SWJ_JTAGDisable  ((uint32_t)0x00300200)  /*!< JTAG-DP Disabled and SW-DP Enabled */

三、软件调试

在开始软件仿真之前,先检查一下配置是不是正确, 在 IDE 里面点击模仿棒 ,确定 Target 选项卡内容如图 所示(主要检查芯片型号和晶振频率,其他的一般默认就可以)

确认了芯片以及外部晶振频率(8.0Mhz)之后,基本上就确定了 MDK5.14 软件仿真的硬
件环境了,接下来,我们再点击 Debug 选项卡,设置为如图所示:

选择: Use Simulator,即使用软件仿真。选择: Run to main(),即跳过汇编代码,直接跳转到 main 函数开始仿真。设置下方的: Dialog DLL 分别为: DARMSTM.DLL和 TARMSTM.DLL, Parameter 均为: -pSTM32F103ZE,用于设置支持 STM32F103ZE 的软硬件仿真(即可以通过 Peripherals 选择对应外设的对话框观察仿真结果)。最后点击 OK,完成设置。
接下来,我们点击 (开始/停止仿真按钮),开始仿真,出现如图 所示界面:

可以发现,多出了一个工具条,这就是 Debug 工具条,这个工具条在我们仿真的时候是非常有用的,下面简单介绍一下 Debug 工具条相关按钮的功能。 Debug 工具条部分按钮的功能如图所示:

调试的功能键和C语言调试基本相同。如果要查看某个变量的值只需选中加入到watch窗口即可

串口逻辑同理,串口输出信息如下图所示:

对跑马灯可以进行逻辑分析,逻辑分析是只有软件调试才有的功能,首先打开逻辑分析仪,打开之后如下图所示。

接下来添加要分析的端口,比如我们要分析PE5和PB5,只需在右上角点击添加输入PORTB.5和PORTE.5即可,Type调整为Bit,颜色自定

然后设置一个断点,即可开始分析,Zoom用来设置坐标轴的单位,将鼠标移至图中还可以得到分析的相应信息。

除此之外,在工具栏中的Peripherals中还可以看到更多的关于寄存器的信息,比如ODR寄存器用来设置高低电平的,就可以看到ODR寄存器每一位的状态。

四、硬件调试

首先是要进行设置,我这里可能说的不全面,详细的设置方法参考《STM32F1开发指南-库函数版本》3.4小节和6.4小节。
首先在Debug板块中进行如下设置,然后再进入Utilities将红框勾选。

之后回到Debug,再ST-LINK旁边点击Setting,进入Flash Download,注意蓝框中的芯片要对应是连接的芯片,红框如图设置。

之后要用ST-LINK连接开发板和电脑进行下一步设置。PORK选择SW,其他的根据需要修改,然后开始连接开发板开始调试即可,点击。

先编译下载,再调试。

STM32_基础入门(六)_程序调试相关推荐

  1. java课后习题七解析_《Java基础入门》_课后习题解析.doc

    <Java基础入门>_课后习题解析 <Java基础入门>课后习题 Java开发入门 一.填空题 1.Java的三大体系分别是_JavaSE_____._JavaEE_____. ...

  2. 一、零基础入门微信小程序开发之创建项目工程同时完成引导页开发

    前言 创建这个系列博客的原因是因为最近在加深微信小程序的学习,按照我之前的学习习惯是不喜欢记录的,加上自己有拖延症就更不太愿意做这件事情了,同时我要给学生上课,但总是缺少教材所以就开了这个系列的博客, ...

  3. C++基础入门《黑马程序员》

    C++基础入门 0 前言  1.配套学习视频:https://www.bilibili.com/video/BV1et411b73Z  2.修复了图片问题和MD笔记显示问题,补充了一些知识  3.课程 ...

  4. 零基础入门微信小程序系列之——校园跑腿

    前段时间在准备校招的事情,没有太多经历给大家分享博客和视频.最近校招已经尘埃落定,在策划一个零基础入门小程序的系列视频,在某站持续输出. 小程序的主要功能与微信目前线上的校园跑跑乐同步. 从0开始编写 ...

  5. 30岁后学oracle还有前途吗,程序员入门学习_程序员30岁后的出路

    下面w3cschool给程序员小伙伴们有些程序员学习编程一上来就想着月薪1W+以上,这样的学习过程会非常痛苦,很 0.C++入门学习方法 首先要对C++有学习基础语法,熟悉调用各种库函数,这时你便成为 ...

  6. 人工智能python零基础入门教程_人工智能零基础入门视频教程

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 人工智能零基础入门视频教程 100天人工智能工程师学习计划 -- 全程实战案例,从机器学习原理到推荐系统实现,从深度学习入门到图像语义分割及写诗机器人,再 ...

  7. STM32_基础入门_程序下载的两种方式

    一.ISP串口下载 1.所涉及工具:MDK+FlyMcu 2.硬件连接 3.连接步骤 1.搜索并选择对应串口 2.选择要下载的hex文件,将"编程前重装文件"打勾 3.勾选&quo ...

  8. STM32_基础入门_新建工程文件—基于固件库

    持续关注阿杰在线更新保姆式笔记~~坚持日更 1) 在建立工程之前,建议用户在电脑的某个目录下面建立一个文件夹,后面所建立的工 程都可以放在这个文件夹下面,这里我们建立一个文件夹为 Template. ...

  9. STM32_基础入门(三)_库函数按键实验

    持续关注阿杰在线更新保姆式笔记~~坚持日更 目录 一.补充C语言知识:static 二.硬件连接 三.GPIO操作说明 四.代码区 一.补充C语言知识:static 二.硬件连接 KEY0:上拉输入 ...

最新文章

  1. Netflow/IPFIX 流量收集与分析
  2. Ubuntu 16.04安装QtCharts时报错:'qtConfig' is not a recognized test function.
  3. vue组件父子组件之间传递数据
  4. Google Colab
  5. pandas python2_Python数据分析之pandas学习(二)
  6. vue系列(1)安装vue
  7. 解决由于sz rz导致抓包时文件容量增加
  8. Linux当前终端走代理ip
  9. list多选 android,Android ExpandableListView单选以及多选实现代码
  10. 一个非科班大学生的四年,到秋招收获了腾讯和字节的offer
  11. 无效的变量名c语言,变量方法用法 _C语言-w3school教程
  12. 人工智能与心理学(人工智能最终方向)
  13. MongoDB数据导入 JSON
  14. ATTiny85 Arduino开发环境搭建及使用
  15. 获取select选中的值php,js如何获取select标签选中的值
  16. 车辆违章查询接口,获取支持城市参数接口示例
  17. RH358服务管理和自动化--配置网络接口
  18. 搭建ntp时间同步服务器,解决cm时间问题
  19. Spring Boot Jar包运行指定配置文件
  20. C语言求解三个数的中间值

热门文章

  1. 编写一个函数,实现计算两个数大小的比较,且返回最大值。
  2. 【游戏开发实战】Unity UGUI制作雷达图/天赋图/属性图/能力图,因为太怕痛就全点了防御力
  3. web loding 自定义加载动画插件
  4. 决策树—基本原理与实战
  5. uniapp离线打包新增页面跳转不了
  6. 基于python win32com的visio文件基础操作语句简介及案例展示(家族树自动创建)
  7. php怎么卸载_yum安装的php如何卸载
  8. kindle 即将退出中国,如何把服务器上的书籍转存?
  9. 【转】移动机器人控制软件的设计与实现
  10. 使用学校论文world模板,使用endnote插入文献时,world闪退