STM32搭建开发环境

常用开发工具简介

集成开发环境

  • MDK:全名RealViewMDK,是Keil公司(已被ARM收购的)一款集成开发环境,界面美观,简单易用,是STM32最常用的集成开发环境
  • EWARM:IAR公司的一款集成开发环境,支持STM32开发,对比MDK,IAR的使用人数少一些,用惯IAR的朋友可以选择这款软件开发STM32

MDK安装=MDK软件安装+器件支持包

DAP仿真器(CMSIS-DAP Debugger),DAP仿真器在MDK下是免驱动的(无需安装驱动),即插即用,非常方便。

CH340 USB虚拟串口驱动

安装CH340 USB虚拟串口驱动,以便我们使用电脑通过USB和STM32进行串口通信。

开发板使用的USB虚拟串口芯片是CH340C

在驱动安装成功之后,将开发板的USB_UART接口通过USB连接到电脑,此时电脑就会自动给其安装驱动了。

USB虚拟串口作用

  1. USB口当串口来使用
  2. 如果USB连接的是串口1,那么USB口还可以当做串口来下载程序
  3. 当USB供电口

① 是编译按钮,表示编译当前工程项目文件,如果之前已经编译过了,则只会编译有改动的文件。所以一般第一次会比较耗时间,后续因为只编译改动文件,从而大大缩短了编译时间。该按钮可以通过 F7 快捷键进行操作。

② 是重新编译当前工程所有文件按钮,工程代码较多时全部重新编译会耗费比较多的时间,建议少用。按①处的按钮,编译当前项目,在编译完成后,可以看到如图 4.1.6 所示的编译提示信息:

因此图 4.1.6 的提示信息表示:代码总大小(Porgram Size)为:FLASH 占用 5832 字节(Code + RO + RW),SRAM 占用 1928 字节(RW + ZI);成功创建了 Hex 文件(可执行文件,放在Output 目录下);编译 0 错误,0 警告;编译耗时 2 秒钟。

必须编译成功,才会生成Hex可执行文件,否则是不会有这个文件的。

串口下载程序

M3、M4、M7开发板支持串口下载程序,但是ATK-XISP.exe软件只支持下载到内部Flash。

STM32的ISP下载,常用串口1下载程序。

因为使用USB虚拟串口,所以实现得安装虚拟串口驱动

STM32启动模式(M3和M4)

通过BOOT0和BOOT1引脚设置启动模式(M3和M4)

串口一键下载电路原理

一键下载电路,是利用串口的DTR和RTS信号,分别控制STM32的复位和BOOT0引脚,配合ATK-XISP,设置:DTR的低电平复位,RTS高电平进入BootLoader。

这样,BOOT0和STM32的复位引脚,完全由下载软件自动控制,从而实现一键下载。

DAP下载硬件连接


  1. 选择使用 CMSIS-DAP Debugger 仿真器仿真调试代码。如果你使用的是其他仿真器,比如 STLINK、JLINK 等,请在这里选择对应的仿真器型号。
  2. Run to main()该选项选中后,只要点击仿真就会直接运行到main函数,如果没选择这个选项,会先执行startup_stm32f103xe.s文件的Reset_Handler,再跳到main函数。

还需要在Utilities选项卡里面设置下载时的目标编程器,直接勾选Use Debug Driver,即和调试一样,选择DAP给目标器件的Flash编程,然后点击Settings,进入Flash算法设置。

JTAG/SWD调试原理概述

Cortex-M内核含有硬件调试模块,该模块可在取指(指令断点)或访问数据(数据断点)时停止。

内核停止时,可以查询内核的内部状态和系统的外部状态。完成查询后,可恢复程序执行。

F1系列可以通过AFIO_MAPR寄存器的SWJ_CFG[2:0]位来释放部分或者全部SWJ-DP引脚。

F4/F7/H7系列默认全部SWJ-DP引脚为复用功能并映射到复用功能0(AF0)。


相关推荐
挽天java几秒前
Arduino/EIDE/Platform IO/Linux/MRS/Keil/STM32Cubemx配置
linux·运维·stm32
DIY机器人工房2 分钟前
(十二)嵌入式面试题收集:15道
单片机·嵌入式硬件·diy机器人工房
LS_learner6 分钟前
PCB更新原理图变更出现大量Remove问题
嵌入式硬件
仰望星空的凡人18 分钟前
基于RH850-F1x系列的瑞萨MCU选型指南
单片机·嵌入式硬件·rh850·renesas
卡提西亚31 分钟前
(10)普中A2 51单片机DS1302实时时钟
单片机·嵌入式硬件·51单片机
@good_good_study33 分钟前
STM32 TIM通道捕获配置函数及实验
stm32·单片机
TeleostNaCl36 分钟前
Docker | 如何限制容器的 CPU/内存/磁盘IO 的资源利用以降低性能消耗
运维·经验分享·嵌入式硬件·docker·容器·智能路由器
偶像你挑的噻10 小时前
15-Linux驱动开发-PWM子系统
linux·驱动开发·stm32·嵌入式硬件
硅农深芯10 小时前
是时候跟GitBucket说再见了
git·单片机
未来之窗软件服务10 小时前
幽冥大陆(三十八)P50酒店门锁SDK C#仙盟插件——东方仙盟筑基期
开发语言·单片机·c#·东方仙盟·东方仙盟sdk·东方仙盟vos智能浏览器