STM32F4 | 最小系统设计 | 开发板资源介绍 | 开发环境搭建 | 程序下载
文章目录
- 一、STM32最小系统设计
- 1.什么叫MCU最小系统?
- 2.STM32最小系统
- 2.1 供电电路(电源部分)
- 2.2 复位电路
- 2.3 时钟电路
- 2.4 BOOT启动模式选择
- 2.5 下载电路(JTAG/SWD)
- 2.6 后备电池
- 二、开发板资源介绍
- 1.阿波罗 STM32F4/F7 开发板资源
- 1.1 阿波罗 STM32 开发板底板资源
- 1.2 阿波罗 STM32 开发板底板资源
- 2.阿波罗 IO 引脚分配
- 三、开发环境搭建
- 1.MDK软件安装
- 2. USB串口驱动安装
- 3.ST-LINK驱动安装
- 四、程序下载
- 1.ISP串口程序下载
- 1.1 硬件连接
- 1.2 USB串口电路
- 1.3 一键下载
- 2.使用 ST-LINK 下载与调试程序
- 2.1 ST-LINK与开发板硬件连接
- 2.2 ST-LINK下载配置过程
一、STM32最小系统设计
1.什么叫MCU最小系统?
一个MCU
(单片机)在能正常工作,正常下载程序前提下的最简电路。
2.STM32最小系统
STM32
最小系统一般包含以下六部分电路:
- 供电电路
- 复位电路
- 时钟:外部晶振(2个)
Boot
启动模式选择- 下载电路(串口/
JTAG
/SWD
) - 后备电池(可以不包含)
2.1 供电电路(电源部分)
STM32
芯片一般包含四种电源信号:
名称 | 典型值 |
---|---|
VDD数字电源 | +3.3V |
VSS数字地 | 0 |
VDDA模拟电源 | +3.3V |
VSSA模拟地 | 0 |
VDD
和VDDA
之间一般接一个简单的低通滤波器即可(RC
,π
型即可)
对于
51
单片机来说,只有电源与地两种,没有分开;但是,对于STM32
芯片,因为其主频比较高,为了让模拟部分与数字部分干扰降低,因此将数字部分与模拟部分分开。
以“正点原子”的开发板为例,产生一个5V的电源,然后通过一个稳压管(比如:AMS1117
)稳出一个3.3V,这个3.3V就作为数字电源,连接到VDD
;GND
连接到地(模拟地与数字地)。
数字电源与模拟电源之间接一个简单的低通滤波器即可。
供电电路部分比较简单,只需要:
- 第一步:找出芯片所有的电源与地,包括模拟电源、模拟地、数字电源、数字地。
- 第二步:确定电源的输入输出电压范围,然后为其提供一个稳定的供电电源。
- 第三步:对数字电源
VDD
和模拟电源VDDA
之间设计一个简单的低通滤波器。
经过这三步,供电电路部分就可以设计完成。
2.2 复位电路
基本上,对于所有的单片机都需要复位电路。对于STM32
芯片来说,有一个复位引脚NRST
。
接下来,设计复位电路。实际上,单片机的复位电路都是比较固定的,通过按键的方法,按一下这个按键,产生一个信号。
当RST
按键没有按下时,是高电频;当RST
按键按下时,复位引脚接到地,就会产生低电频。与51单片机中的复位类似,复位引脚从高往低跳变,低电平持续一段时间,就可以产生复位。
2.3 时钟电路
STM32
外部可以提供两种时钟:高速外部时钟与低速外部时钟。高速的外部时钟一般都是给芯片的内核来供电,作为系统时钟。低速的外部时钟主要是给RTC
(实时时钟)来用的。
高速时钟:
- F103/F407
在F103/F407开发板上用的是8MHz
的晶振 - F429/F767
在F429/F767开发板上用的是25MHz
的晶振
- F103/F407
低速时钟:
低速时钟指的是外接比较稳定的32.768KHz
晶振产生的低速的时钟,主要是给RTC
(实时时钟)来用的。
2.4 BOOT启动模式选择
stm32
BOOT启动模式选择有两个引脚:BOOT0
和BOOT1
。BOOT0
和BOOT1
联合决定了stm32
启动模式。
2.5 下载电路(JTAG/SWD)
下载程序的方法有3种:
SWD
通信引脚为JTMS
和JTCK
,满足程序下载与调试
JTAG
有5个引脚需要相连,比较复杂,满足程序下载与调试
串口ISP
如果不需要程序调试,可以直接使用串口下载。
对于最小电路,一般留有SWD
接口(调试)和串口引脚。
2.6 后备电池
stm32
有一个后备电池引脚VBAT
。后备电池用来给后备区域供电。当芯片断电之后,后备区域还正常运行,从而保存一些数据。
二、开发板资源介绍
1.阿波罗 STM32F4/F7 开发板资源
阿波罗开发板采用核心板+底板的形式,当使用STM32F429
的核心板时,它就是一款 STM32F429
开发板,当使用 STM32F746
核心板时,它就是一款 STM32F746
开发板。ALIENTEK
阿波罗 STM32F4/F7
开发板分为底板和核心板两部分,接下来我们分别介绍。
1.1 阿波罗 STM32 开发板底板资源
阿波罗 STM32
开发板的底板资源图如下所示:
ALIENTEK
阿波罗 STM32F429
开发板底板板载资源如下:
- 1 个核心板接口,支持
STM32F429/F746
等核心板 - 1 个电源指示灯(蓝色)
- 2 个状态指示灯(
DS0
:红色,DS1
:绿色) - 1 个红外接收头,并配备一款小巧的红外遥控器
- 1 个九轴(陀螺仪+加速度+磁力计)传感器芯片,
MPU9250
- 1 个高性能音频编解码芯片,
WM8978
- 1 个无线模块接口,支持
NRF24L01
无线模块 - 1 路光纤输入接口(音频,仅
F7
支持) - 1 路
CAN
接口,采用TJA1050
芯片 - 1 路
485
接口,采用SP3485
芯片 - 2 路
RS232
串口(一公一母)接口,采用SP3232
芯片 - 1 路单总线接口,支持
DS18B20/DHT11
等单总线传感器 - 1 个
ATK
模块接口,支持ALIENTEK 蓝牙/GPS/MPU6050/RGB
灯模块 - 1 个光环境传感器(光照、距离、红外三合一)
- 1 个标准的 2.4/2.8/3.5/4.3/7 寸
LCD
接口,支持电阻/电容触摸屏 - 1 个摄像头模块接口
- 1 个
OLED
模块接口 - 1 个
USB
串口,可用于程序下载和代码调试(USMART
调试) - 1 个
USB SLAVE
接口,用于USB
从机通信 - 1 个
USB HOST(OTG)
接口,用于USB
主机通信 - 1 个有源蜂鸣器
- 1 个
RS232/RS485
选择接口 - 1 个
RS232/模块
选择接口 - 1 个
CAN/USB
选择接口 - 1 个串口选择接口
- 1 个
SD
卡接口(在板子背面) - 1 个百兆以太网接口(
RJ45
) - 1 个标准的
JTAG/SWD
调试下载口 - 1 个录音头(
MIC/咪头
) - 1 路立体声音频输出接口
- 1 路立体声录音输入接口
- 1 个小扬声器(在板子背面)
- 1 组多功能端口(
DAC/ADC/PWM DAC/AUDIO IN/TPAD
) - 1 组
5V
电源供应/接入口 - 1 组
3.3V
电源供应/接入口 - 1 个参考电压设置接口
- 1 个直流电源输入接口(输入电压范围:
DC6~24V
) - 1 个启动模式选择配置接口
- 1 个
RTC
后备电池座,并带电池 - 1 个复位按钮,可用于复位
MCU
和LCD
- 4 个功能按钮,其中
KEY_UP
(即WK_UP
)兼具唤醒功能 - 1 个电容触摸按键
- 1 个电源开关,控制整个板的电源
- 独创的一键下载功能
- 引出 110 个
IO
口
ALIENTEK
阿波罗 STM32F429
开发板底板的特点包括:
- 接口丰富。板子提供十来种标准接口,可以方便的进行各种外设的实验和开发。
- 设计灵活。我们采用核心板+底板形式,一款底板可以学习多款
MCU
,减少重复投资;板上很多资源都可以灵活配置,以满足不同条件下的使用;我们引出了110
个IO
口,极大的方便大家扩展及使用。板载一键下载功能,可避免频繁设置B0
、B1
的麻烦,仅通过 1 根USB
线即可实现STM32
的开发。 - 资源丰富。板载高性能音频编解码芯片、九轴传感器、百兆网卡、光环境传感器以及各种接口芯片,满足各种应用需求。
- 人性化设计。各个接口都有丝印标注,且用方框框出,使用起来一目了然;部分常用外设大丝印标出,方便查找;接口位置设计合理,方便顺手。资源搭配合理,物尽其用。
1.2 阿波罗 STM32 开发板底板资源
STM32F429
核心板资源图如下:
ALIENTEK STM32F429
核心板板载资源如下:
CPU
:STM32F429IGT6
,LQFP176
,FLASH
:1024KB
,SRAM
:256KB
- 外扩
SDRAM
:W9825G6KH
,32M
字节 - 外扩
NAND FLASH
:MT29F4G08
,512M
字节 - 外扩
SPI FLASH
:W25Q256
,32M
字节 - 外扩
EEPROM
:24C02
,256
字节 - 2 个板对板接口(在底部),引出
110
个IO
,方便接入各种底板 - 1 个
5V&3.3V
焊点,支持外接电源或输出电源给外部 - 1 个
Micro USB
接口,可作USB SLAVE/HOST(OTG)
使用 - 1 个电源指示灯(蓝色)
- 1 个状态指示灯(红色)
- 1 个
TTL
串口(USART1
) - 1 个复位按钮,可用于复位
MCU
和LCD
- 1 个功能按钮,
WKUP
,可以用作MCU
唤醒 - 1 个
RGB LCD
接口,支持RGB
接口的LCD
屏(RGB565
格式) - 1 个
SWD
调试接口
ALIENTEK STM32F429
核心板的特点包括:
- 体积小巧。核心板仅
65mm*45mm
大小,方便使用到各种项目里面。 - 接口丰富。核心板自带了串口、
SWD
调试接口、RGB LCD
屏接口、USB
接口和3.3V&5V
电源接口等,并通过板对板接口,引出了110
个IO
口,满足各种应用需求。 - 资源丰富。核心板板载:
32MB SDRAM
、32MB SPI FLASH
、512MB NAND FLASH
和EEPROM
等存储器,可以满足各种应用需求。 - 性能稳定。核心板采用 4 层板设计,单独地层、电源层,且关键信号采用等长线走线,保证运行稳定、可靠。
- 人性化设计。各个接口都有丝印标注,使用起来一目了然;接口位置设计合理,方便顺手。
2.阿波罗 IO 引脚分配
将阿波罗开发板主芯片:STM32F429IGT6
的 IO
资源分配做了一个总表,
引脚栏即 STM32F429IGT6
的引脚编号;GPIO
栏则表示 GPIO
;连接资源栏表示了对应 GPIO
所连接到的网络;独立栏,表示该 IO
是否可以完全独立(不接其他任何外设和上下拉电阻)使用,通过一定的方法,可以达到完全独立使用该 IO
,Y
表示可做独立 IO
,N
表示不可做独立 IO
;连接关系栏,则对每个 IO
的连接做了简单的介绍。
三、开发环境搭建
1.MDK软件安装
RealView MDK
是Keil
公司开发的,为基于Cortex
、ARM7
、ARM9
等处理器设备提供的一个完整的开发环境。 MDK=Keil for ARM
, 大家学习51
的时候用的Keil C51
。
首先,先安装MDK5
,在 MDK5
安装完成后,要让 MDK5
支持 STM32F429
的开发,还要安装 STM32F429
的器件支持包:Keil.STM32F4xx_DFP.2.8.0.pack
(STM32F4 系列的器件包)。默认软件是试用版的,只能编译不超过32K的代码。无力购买正版的,可以注册后使用。注册方法可参考博客,亲测有效!
MDK5
安装注意事项:
- 安装路径为英文路径(不要是中文路径)。
- 系统用户名不能为中文
- 多个版本
MDK(Keil)
不要安装在同一目录。 MDK5
需要加载芯片对应的支持包。
2. USB串口驱动安装
USB
串口作用如下:
- 可以当串口使用。
- 如果
USB
串口连接到STM32
的串口1(STM32 ISP下载只能是串口1)的话,那么可以用来串口下载程序。 - 因为要连接到
USB
,所以可以用来USB
供电。
USB
串口驱动芯片型号:CH340
。当安装CH340
驱动后,就可以使用串口下载工具FlyMcu(McuISP)
进行下载。
此时,用USB
线连接笔记本与stm32
的USB 232
接口,按下电源键,就会发现驱动安装成功。
3.ST-LINK驱动安装
ST-LINK
驱动作用:安装了驱动之后,就可以在windows下配合MDK进行程序下载和调试。驱动安装完成后,如下:
四、程序下载
STM32F4
的程序下载有多种方法:USB
、串口、JTAG
、SWD
等,这几种方式,都可以用来给 STM32F429
下载代码。
1.ISP串口程序下载
1.1 硬件连接
首先要在板子上设置一下,在板子上把 RXD
和 PA9
(STM32
的 TXD
),TXD
和 PA10
(STM32
的 RXD
)通过跳线帽连接起来,这样我们就把 CH340G
和 MCU
的串口 1 连接上了。这里由于ALIENTEK
这款开发板自带了一键下载电路,所以我们并不需要去关心 BOOT0
和 BOOT1
的状态,但是为了让下载完后可以按复位执行程序,建议把 BOOT1
和 BOOT0
都设置为 0。设置完成如图所示:
特别注意:
STM32
的ISP
下载,只能使用串口1,也就是对应串口发送接收引脚PA9
,PA10
。不能使用其他串口(例如串口2
:PA2
,PA3
)用来ISP
下载。
1.2 USB串口电路
STM32F429
开发板板载了一个 USB
串口,其原理图如下:
图中 Q4
和 Q5
的组合构成了我们开发板的一键下载电路,只需要在 flymcu
软件设置:DTR
的低电平复位,RTS
高电平进 BootLoader
。就可以一键下载代码了,而不需要手动设置 B0
和按复位了。其中,RESET
是开发板的复位信号,BOOT0
则是启动模式的 B0
信号。
一键下载电路的具体实现过程:首先,mcuisp
控制 DTR
输出低电平,则 DTR_N
输出高,然后 RTS
置高,则 RTS_N
输出低,这样 Q5
导通了,BOOT0
被拉高,即实现设置 BOOT0
为 1,同时 Q4
也会导通,STM32F429
的复位脚被拉低,实现复位。然后,延时 100ms
后,mcuisp
控制 DTR
为高电平,则 DTR_N
输出低电平,RTS
维持高电平,则 RTS_N
继续为低电平,此时 STM32F429
的复位引脚,由于 Q4
不再导通,变为高电平,STM32F429
结束复位,但是 BOOT0
还是维持为 1,从而进入 ISP
模式,接着 mcuisp
就可以开始连接 STM32F429
,下载代码了,从而实现一键下载。
1.3 一键下载
这里简单说明一下一键下载电路的原理,我们知道,STM32
串口下载的标准方法是两个步骤:
- 把
B0
接V3.3
(保持B1
接GND
)。 - 按一下复位按键。
通过这两个步骤,我们就可以通过串口下载代码了,下载完成之后,如果没有设置从0X08000000
开始运行,则代码不会立即运行,此时,你还需要把 B0
接回 GND
,然后再按一次复位,才会开始运行你刚刚下载的代码。所以整个过程,你得跳动 2 次跳线帽,还得按 2 次复位,比较繁琐。而一键下载电路,则利用串口的 DTR
和 RTS
信号,分别控制 STM32
的复位和 B0
,配合上位机软件(flymcu
),设置:DTR
的低电平复位,RTS
高电平进 BootLoader
,这样,B0
和 STM32
的复位,完全可以由下载软件自动控制,从而实现一键下载。
- 环境准备
CH340驱动安装(参考前面USB串口驱动安装) - 下载工具配置(FlyMcu/McuIsp)
- 搜索串口,选择虚拟的
USB
串口: COMx:空闲USB-SERIAL CH34 - 设置波特率:
F4
芯片使用76800
,F1
芯片可以更高 - 勾上“编程前重装文件”
- 选择
STMISP
选项卡,然后勾上选项:“校验” 以及 “编程后执行” - 选项字节区 的“编程到
FLASH
时写选项直接”不要勾上 - 左下方:选择第四个“ DTR的低电平复位,RTS高电平进bootloader”
- 搜索串口,选择虚拟的
通过按开始编程(P)这个按钮,一键下载代码到 STM32
上,下载成功后如图所示:
第 1 个圈,圈出了 flymcu
对一键下载电路的控制过程,其实就是控制 DTR
和 RTS
电平的变化,控制 BOOT0
和 RESET
,从而实现自动下载。第 2 个圈这里需要特别注意,因为 STM32F4
的每次下载都需要整片擦除,而 STM32F4
的整片擦除是非常慢的(STM32F1
比较快),这里的全片擦除,得等待几十秒钟,才可以执行完成,请大家耐心等待。但是 ST-LINK
下载不存在这个问题,所以,有条件的话,最好还是用 ST-LINK
下载比较快。
2.使用 ST-LINK 下载与调试程序
串口只能下载代码,并不能实时跟踪调试,而利用调试工具,比如 ST-LINK
,JLINK
和ULINK
等就可以实时跟踪程序,从而找到你程序中的 bug
,使你的开发事半功倍。这里我们以 ST-LINK
为例,说说如何在线调试 STM32F429
。
ST-LINK
支持 JTAG
和 SWD
,同时 STM32F429
也支持 JTAG
和 SWD
。所以,我们有 2 种方式可以用来调试,JTAG
调试的时候,占用的 IO
线比较多,而 SWD
调试的时候占用的 IO
线很少,只需要两根即可。
2.1 ST-LINK与开发板硬件连接
在安装 ST-LINK
的驱动之后,我们接上 ST-LINK
,并用灰排线连接 STLINK
和开发板的JTAG
接口,
2.2 ST-LINK下载配置过程
- 环境准备
STLINK驱动+MDK5安装 - MDK软件上配置ST-LINK
打开之前新建的工程,点击 ,打开Options for Target
选项卡,在Debug
栏选择仿真工具为ST-Link Debugger
,
上图中我们还勾选了Run to main()
,该选项选中后,只要点击仿真就会直接运行到main
函数。然后我们点击Settings
,设置ST-LINK
的一些参数,
我们使用ST-LINK
的SW
模式调试,因为我们JTAG
需要占用比SW
模式多很多的IO
口,而在开发板上这些IO
口可能被其他外设用到,可能造成部分外设无法使用。所以,我们建议大家在调试的时候,一定要选择SW
模式。
单击 OK,完成此部分设置,接下来我们还需要在Utilities
选项卡里面设置下载时的目标编程器,
我们直接勾选Use Debug Driver
,即和调试一样,选择ST-LINK
来给目标器件的FLASH
编程,然后点击Settings
,设置如图所示:
这里MDK5
会根据我们新建工程时选择的目标器件,自动设置flash
算法。我们使用的是STM32F429IGT6
,FLASH
容量为1M
字节,所以Programming Algorithm
里面默认会有1M
型号的STM32F4xx FLASH
算法。最后,选中Reset and Run
选项,以实现在编程后自动运行,其他默认设置即可。
在设置完之后,点击 OK,然后再点击 OK,回到IDE
界面,编译一下工程。接下来我们就可以通过ST-LINK
下载代码和调试代码。配置好ST-LINK
之后,使用ST-LINK
下载代码就非常简单,大家只需要点击LOAD
按钮就可以进行程序下载。下载完成之后程序就可以直接在开发板执行。如图所示:
STM32F4 | 最小系统设计 | 开发板资源介绍 | 开发环境搭建 | 程序下载相关推荐
- 51单片机 | 如何学习单片机 | 开发板功能介绍 | 开发板使用方法 | 51单片机介绍
文章目录 一.如何学习单片机 1.学习哪种类型的单片机 2.学习单片机的最佳方法 3.学习单片机的准备工作 4.学习单片机的常见疑问 二.开发板功能及使用介绍 1.开发板功能介绍 2.开发板使用方法 ...
- OK6410开发板资源介绍---嵌入式回归第一篇
一晃时隔大半年了,今天起重新开始学习国嵌的OK6410 精通嵌入式课程,之前学到第四季老大视频没更完,而且更的实在太慢了,大学那会刚开始学的时候也走了不少弯路,不过当时充满了学习的激情,前面的更的视频 ...
- STM32阿波罗F767开发板资源介绍
开发板硬件资源: 底板+核心板,通过板对板的接口连接. 核心板: 1.SPI FLASH: SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口.S ...
- 《ArcGIS Runtime SDK for .Net开发笔记》--介绍与环境搭建
一. ArcGIS Runtime SDK for .NET介绍 ArcGIS Runtime SDK for .net是一款针对windows平台的开发包.能够在开发出在windows phone, ...
- 君正4750开发板使用日记2-Linux环境搭建与内核编译
为什么80%的码农都做不了架构师?>>> Linux环境搭建与内核编译 上一篇中把4750开发板与PC的硬件连通了,这一篇记录的是基本的Linux环境的搭建.其实官方文档已经比 ...
- STM32F407 开发环境搭建 程序下载 个人笔记
详细资料: http://www.openedv.com/thread-13912-1-1.html 需要安装的软件: 1.keil(MDK,必选),用keygen破解 2.CH340驱动,(usb串 ...
- STM32开发(1)----stm32f103c6t6开发板介绍和环境搭建
stm32f103c6t6开发板介绍 前言 一.stm32f103c6t6芯片资源介绍 1.STM32 的命名规则 二.最小系统开发板介绍 三.开发板基本使用方法 1.软件安装 1.1MDK5 安装 ...
- 【STC32G12K128开发板】——STC32G12K128开发板介绍
版权声明:本文为博主原创文章,转载请附上原文出处链接. 文章目录 前言 一.STC32G12K128系列单片机介绍 二.STC32G12K128开发板概述 三.STC32G12K128开发板硬件框图 ...
- XMOS软件开发入门(1) - 开发板硬件资源介绍
文章目录 文档目的 XMOS简介 评估板"xCORE VOCAL FUSION XP-VF3100-BASE"简介 主处理器资源 GPIO介绍 GPIO简介 连接FLASH的GPI ...
最新文章
- Python 图像处理 | 图像平滑之均值滤波、方框滤波、高斯滤波及中值滤波
- 破译手势在对话中的意义
- For与Function进阶实战、Lazy的使用笔记总结
- 洛谷P1494 [国家集训队]小Z的袜子
- 111... 南邮NOJ 1079
- linux内核开发常用站点
- springboot办公OA考勤请假系统java
- 最小二乘法曲线拟合+C代码
- 艾宾浩斯记忆曲线背单词
- 2023新年快乐,友盟+伴你岁岁年年
- 闪光网-彭亮《学后感——彭亮总结》
- 人人都是钢铁侠,超级盔甲问世
- Detachment(数论)
- POJ海贼王之伟大航路(dfs)
- python数学知识_【数学知识】高一的集合知识的Python编程实现
- htcvive怎么输入_HTC Vive如何播放视频 3种方法教你用Vive播放VR视频
- 比较两组数据的差异用什么图更直观_扩增子图表解读7三元图:三组差异数量和关系...
- 【API】聊天机器人接口
- 广东省交通行业十四五项目前景与建设规模分析报告2022版
- 干货!11个产品营销策略(一)
热门文章
- dba招生_深圳DBA项目招生简介
- 什么是中文分词及中文分词的应用
- 【JavaBeans中的属性!】
- 金立金刚GN5001刷机救黑砖
- clickhouse 离线安装
- word添加水印后多出一条线的删除方法
- 基于Java的雷电游戏设计(含源文件)
- 设置MySQL数据库允许root用户任意IP地址访问(linux)
- @html.dropdownlist默认多选,Html.DropDownList()赋默认值
- org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.xxxxx