STM32学习(二)

常用开发工具简介

在这里插入图片描述

安装仿真器驱动

  1. DAP仿真器免驱
  2. ST LINK仿真器驱动安装方法:(A盘)\6,软件资料\1,软件\5,其他软件\ST LINK驱动及教程

为什么要安装CH340 USB串口驱动?
在这里插入图片描述
串口需要共地,设备A的发送引脚和设备B的接收引脚互连。
RXD-PA9,TXD-PA10通过跳线帽连接到CH340(USB/串口转换电路)

USB虚拟串口作用

  1. USB口当串口来使用。
  2. 如果USB连接的是串口1,那么USB口还可以当做串口来下载程序。(STM32中,只有串口1可以下载程序)。(串口1是PA9和PA10)
  3. 当USB供电口。

STM32初体验

MDK5编译例程
在这里插入图片描述

  • 全局编译所需时间较长
  • 部分编译在第一次编译时与全局编译是一样的
  • 工程文件已经编译过,修改了一些文件,部分编译仅编译修改过的文件

编译结果看:Build Output窗口
在这里插入图片描述

  • linking:链接后才能生成可执行文件

  • Program Size:程序大小,也可通过查看.map文件得到

  • FromELF: creating hex file…:创建hex文件当且仅当工程为0错误才能创建

  • Build Time Elapsed: 00:00:05编译时间
    在这里插入图片描述

  • code:代码,占用Flash5062个字节

  • RO-data:只读数据,一般是指const修饰的数据,也是在Flash中

  • RW-data:初值为非0的可读可写数据,初值存放到Flash,修改后存放在SRAM

  • ZI-data:初值为0的可读可写数据,只占用SRAM

  • Flash:占用5620字节(前三个相加)

  • SRAM:占用1928字节(后两个相加)

串口下载程序

STM32的ISP(In System Programming在线系统编程)下载,常用串口1下载程序。
因为使用USB虚拟串口,所以事先安装CH340 USB虚拟串口驱动

在这里插入图片描述
在这里插入图片描述
STM32启动模式
在这里插入图片描述
ISP下载程序一般步骤:

  1. BOOT0接高电平,BOOT1接低电平
  2. 按复位键

程序执行一般步骤:

  1. BOOT0接低电平,BOOT1接任意
  2. 按复位键

在这里插入图片描述

一键下载电路,是利用串口的DTR和RTS信号,分别控制STM32的复位和BOOT0引脚,配合FlyMcu软件,设置:DTR的低电平复位,RTS高电平进BootLoader,这样, BOOT0和STM32的复位引脚,完全由下载软件自动控制,从而实现一键下载。

DAP下载程序

在这里插入图片描述
JLINK下载的时候,必须给板子先供电:USB或者外接电源都可

JTAG/SWD调试原理概述

Cortex-M内核含有硬件调试模块,该模块可在取指(指令断点)或访问数据(数据断点)时停止。内核停止时,可以查询内核的内部状态(内核)和系统的外部状态(外设)。完成查询后,可恢复程序执行。
在这里插入图片描述
在这里插入图片描述
F1系列可以通过AF10——MAPR寄存器的SWJ_CFG[2:0]位来释放部分或者全部SWJ-DP引脚。

要想设置SW模式,就把复用重映射和调试I/O配置寄存器(AFIO_MAPR)
复位值:0x0000 0000
在这里插入图片描述
所以默认情况下,位26:24为000,既支持JTAG接口也支持SW接口。
如果想仅支持SWD接口,就将位SWJ_CFG[2:0]配置为010。

基础执行控制按钮介绍

在这里插入图片描述

  • 插入/移除断点
  • 使能/失能断点
  • 在当前目标失能所有断点
  • 移除所有断点

在这里插入图片描述

内核寄存器
在这里插入图片描述
反汇编窗口
在这里插入图片描述
可以通过汇编语言的方式来看代码

命令行窗口
在这里插入图片描述
堆栈窗口
在这里插入图片描述
在这里插入图片描述
蓝色小三角显示当前鼠标所在行
在这里插入图片描述

黄色小三角显示即将要执行的程序的那一行

查看程序段/函数执行时间
在这里插入图片描述
工具栏常用窗口介绍
在这里插入图片描述
Call Stack窗口(调用栈窗口):查看函数调用关系&局部变量。
在这里插入图片描述
在这里插入图片描述
函数名|首地址|类型(范数是返回类型)
变量名|变量值

Watch窗口:查看函数首地址&变量值,Watch窗口:设置全局变量在被读或写后自动停止运行
在这里插入图片描述
在这里插入图片描述
Memory窗口:内存查看窗口

M3/M4/M7内核是小端模式,内存的值得倒着读。
在这里插入图片描述
所以需要先读00再读0F,值为0x000F

Peripheral窗口:查看寄存器的值——既可以是内核寄存器也可以是外设寄存器
在这里插入图片描述
调试时,使用该功能可以确定配置寄存器是否有问题

仿真时需要注意的点

1,仿真时,使用MDK的Level 0等级优化
在这里插入图片描述

调试停止在断点处时,只是内核停止,外设会继续运行
例如:DMA搬运数据,当断点停止时,DMA仍然在继续工作,数据仍然在传输。

断点的设置要有时间观念,考虑是否会打断正常通信
例如,主从机需要在有限时间响应,但断点打在响应之前,就可能会影响通信。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

饼干饼干圆又圆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值