你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

手把手教你学STM32

[复制链接]
nenoyaji 发布时间:2020-12-11 12:47
Part one    开发平台介绍
     信盈达 STM32F401RCT6 Mini 板是一块基于 cortex-M4 内核的开发板,接口丰富,作为单片机开发人员经常需要调试模块传感器,使用该开发板只需和外部模块简单连接即可调试模块,非常灵活方便,市面上很多 cortexM4 的开发板,板载功能很多,多数 IO 口全部被占用,线路固定,传感器固定,功能已经固定,没有自己手动发挥的空间,此 Mini 板抛弃了大多数其他开发板的固有的功能,使用此核心板再购买其他随意模块进行组合,即可灵活多变的使用。
3.1.png
, I- Z9 X7 X2 `0 a  d' L
平台特点
1.采用 STM32F401RCT6 高性能 MCU;
2.设计精致、小巧使用方便
3.所有 IO 口全部引出(44 个),多达 5 路供电引出,5V 与 3.3 伏都具备
4.采取 MicroUSB 接口,和安卓手机通用,方便使用
5.除了 SWD 调试接口以外,板载 USB 转 UART 电路,调试下载方便
6.使用嘉立创 PCB 加工厂加工,PCB 厚度达 1.6MM 结实可靠
' V7 j8 s: X) G% E/ s
平台参数
1.外形尺寸(50mm*50mm)
2.MCU: STM32F401RCT6,LQFP64 封装,片上 FLASH:256K , 片上 SRAM:64K
3.所有 IO 口全部引出(44 个)
4.1 个电源指示灯(红色)
5.1 个 LED 可编程指示灯(红色 )
6.1 个可编程按键
7.板载复位按键
8.板载 USB 转串口 CH340 芯片,支持串口 ISP
9.板载 BOOT 设置跳线帽
10.板载主时钟晶振
/ h' P5 E2 @" Z% w7 g9 F
Part two   开发环境搭建

' H; q$ Q& x5 U
开发软件
* N: c* u0 ^& }6 s# ?8 V0 j
软件获取:keil 官网:http://www.keil.com/ 找到 DownLoad 如下图:
3.2.png

6 s5 J& |; O) F! r3 h. n  c/ I9 l* F
注册以后即可下载相应的软件,注册和下载都是免费的
* P5 Z5 E* g5 _2 u: ?  @* H
3.3.png

; p# W; ~* o; }, D( Z2 Y* f
注意:

4 k" R1 O3 p6 T+ a  p+ N( `* T0 c
下载过程会很慢,建议有时间再去看或下载。直接打开资料的 MDK 进行安装即可

0 U( R7 `3 j4 }: w
进入配套开发环境及相关驱动文件夹找到 keil5 编译软件找到 K526pre.EXE 文件双击运行
# P: {9 d8 g& u
1. 选择 Next

' z& H& I) Q) P6 C, M- _
3.4.png
% h/ r8 B% S0 g, x
2. 同意许可协议

1 q+ c4 ~9 a/ |% ?. D2 }' {1 ?
3.5.png

3 t" ?  t7 k7 W1 a. D6 c
3. 选择自己的安装路径

7 y: `/ n8 K) t: a& m% H% y
3.6.png

9 d4 y, F& k! Z: h5 c9 D* {: E/ V
4. 填写用户名等信息
4 D8 o2 @8 d; e- {% I# R
3.7.png

2 {$ ]4 T! I9 k
5. 软件正在安装
! h1 m& D% o! T) Q) ~0 Z
3.8.png
, m; ?$ X0 \+ R5 f  c
6. 安装完成

5 ~5 H' d8 G; h
3.9.png

. u" R! R+ F  \3 @. l- L' |
7. 出现 Pack 安装界面直接关闭
  }8 y1 ]9 n) q" y+ K- J
3.10.png
" N0 z; S! e4 n! y1 v
开发软件注册器
: P" O) R5 C# G* l* R9 Y% C4 C' w
进入配套开发环境及相关驱动文件夹找到注册器(2032 版)文件夹,打开如下文件:
" u& s- L  O6 [4 ^( W' d
3.11.png
注意:注册是为了破解 MDK,学习使用可以;商用不行。在工作中使用正版。编译程序代码需要注册后才能编译

1 d, x6 k/ b) j1 l# F" q
! Q" W- T2 _  L; ~
1.双击运行注册器
' e' e& t8 t* M* g, U7 ?
2.点击桌面的 keil5 编译软件,右键以管理员权限运行

, t: u3 \2 P5 k
3.在软件中任务栏上有 File 按钮;点击 File 按钮;选择里面的 License。如下图:
0 B( _5 C7 ~8 j
3.12.png

5 v3 X* f; I3 t  r1 m
4.注册
3.13.png

2 B5 @0 t4 a+ a+ Y% q
开发芯片支持包

, S5 t6 D; O1 G! T- k/ W+ W
进入配套开发环境及相关驱动文件夹找到芯片支持包文件夹内容如下:
3.14.png
双击直接安装即可
& B) b# c1 [: ?6 f

2 v' D1 H4 t3 `3 V4 {
开发芯片烧写工具驱动
9 ~! B% d: L! _$ r6 B* F
进入配套开发环境及相关驱动文件夹找到 STlink 下载器驱动文件夹内容如下:
3.15.png
! b1 v7 A+ U! P4 x- Z, W$ e

( _3 _! \: E8 V# o1 E+ L( R, S
1.PC 连接好烧录器,如果烧录器上的 LED 灯存在红色的闪烁状态表示没有安装驱动

* G8 i! q( X" }$ [- X- Q  l- [
2.打开文件夹:ST-LINKV2 USB driver1.0 for Windows7 and Windows8, 32 and 64 bits
6 j  ~( \7 \5 V5 q1 s9 P/ k2 D
3.双击运行软件:dpinst_amd64.exe(64 位操作系统使用)

2 h; S% A8 U! r- Y
4.下一步
3.16.png
: _" h" g4 L% f4 Y; X1 ]' w
3.17.png

! Q4 R; _4 h: K: r9 B& M5 I
3.18.png
串口驱动

1 V( \' e( _- X7 J: t" o. C
目的:

, `; h4 B4 k/ W/ n9 X* C# r
产品如果需要使用串口,在做串口测试的时候需要安装好串口驱动,才能与 PC 进行串口测试

: Q1 r6 }: d8 E) ~$ [2 Q! E; h5 N
不同的串口驱动芯片,驱动程序不一致

) R" u, S; S2 }! \; {
目前使用的是 CH340 作为串口驱动芯片
/ w2 N+ t, Y+ J, W; j$ O3 E4 l
8 j& I6 m& O7 k
安装 CH340 芯片驱动程序
* Q, m6 V1 V' b
进入配套开发环境及相关驱动文件夹找到 CH340_CH341 串口驱动文件夹内容如下:
3 d! q1 d) J( N2 o2 C0 ^! Y
3.19.png
) w( m3 N' l; ~1 ?/ R

4 U0 @! m# G0 k+ ^, m, b7 j
1.运行软件:SETUP.EXE
2.安装软件
安装之前将开发板与电脑进行连接
3.20.png

0 i' L* K7 J8 r# C/ b2 Q4 T
3.正在安装

' l" ^/ N5 N, b1 X; Z4 N
3.21.png

$ U$ A8 d$ j7 Q
4.安装成功

8 s* ~$ ]0 x; ~+ o
3.22.png

, h1 M+ Q. l/ R
5. 查看是否安装成功:  打开设备管理器
" N( x5 e# {: u) m- l
3.23.png
! G8 R( F, y5 Q
Part three    新建工程及环境设置
  f9 R6 M/ s* {. ~
/ J4 G/ Q# M* ~! [+ x& i% A. \( C: r
编写程序,编译程序文件比较多,一个文件存不了,并且很多芯片都需要启动文件支持,需要创建好项目工程
- x% x/ `& y6 S% Y
STM32 中创建项目工程有三类:HAL 库的工程(由软件直接可以生成代码)、Lib 库工程(日常工作用的最常见的工程)、寄存器版本工程(用的不多,但是学习时用的工程,只有这个才能了解更底层的工作原理)

. D% t' f  C3 M/ O3 z+ ]" i. t3 V
HAL 库不能使用 Lib 库的程序
* T2 l! Q# e8 d# ^4 L, ^
Lib 库不能使用 HAL 库的程序
# i: _3 R- O8 g. r+ Z2 T0 x
HAL 库以及 Lib 库都可以使用寄存器版本程序
! _0 |0 C3 F1 ]6 H' x4 k1 R/ p
本项目的所有实验都是基于是寄存器版本的

7 b! Q1 G1 D6 V% f+ K0 L' O& N* L
- P1 Q2 m( ^- J7 _5 S' s
新建项目文件夹
: t; c- P3 q. I# h
1.选择自己放程序代码的文件夹
2.在此文件夹下创建好工程文件夹:project_demo(名字随意,这里仅给大家做一个演示)
/ j4 Q0 L& B& r: d
创建启动文件夹
" G, t( e* U) {$ x
1.进入 project_demo 文件夹
2.拷贝工程文件文件夹下的 CMSIS 文件夹到 project_demo 文件夹下

5 Q3 F/ x4 ~6 I1 i
创建编写代码文件夹

9 [' T2 Z1 o, C+ j
以后自己写的程序代码放在该文件夹下。再在 project_demo 创建一个文件夹 USER。在 USER 文件夹下创建 inc 和 src 文件夹。
inc:存放自己写的头文件
src:存放自己写的源文件
创建编写代码文件夹(可选)

# p" F3 I2 Z* J. A
1.在 project_demo 文件夹下创建一个 DOC 的文件夹用来存放对工程文件或项目的说明
2.在 DOC 的文件下新建文件 read_me.txt.

4 H' J/ B6 v- M
创建项目工程

& r* g2 I# o4 x% M7 ?# J! Z
1.打开 keil5 软件
2.新建工程:选择软件菜单栏中的 Project
Project 中有 New Project
3.24.png
3. 在弹出界面中,用来保存工程的路径设置,保存到 project_demo 文件夹下
4. 保存以后,在弹出的框中选择目前使用的芯片型号:STM32F401RET6
3.25.png
5. 点击 OK,将接下来弹出的界面关闭
3.26.png
6.最后效果如下
3.27.png

, x. A" q; k0 V- ^
配置项目工程
6 \3 d7 n0 t9 Z9 [9 ]& }- [
1. 配置虚拟文件夹:分明别类的存放文件,与真实文件夹下的文件一致
3.28.png

3 S$ G, C8 {4 I. S* e1 T7 Y3 q+ V# q& U! d
配置虚拟文件夹图标
3.29.png
3.30.png
如上图 1->2->3 的顺序添加虚拟文件夹,重复四次即可

) U( Z4 `1 Z5 {9 e7 Q3 J+ m
虚拟文件夹以及文件配置 OK 结果如下:
3.31.png
2. 生成 Hex 烧录文件配置
3.32.png

$ V, [/ e6 O8 t* }
这一步主要是让编译器生成 hex 十六进制的烧录文件,该文件是最终编译好的可执行程序,在第四章代码烧录部分将会用当该文件
$ G0 i0 g* W$ r  B
3. 配置工程编译点击图标进行配置。
3.33.png
- A; K* z( @' ^6 k+ P1 X
配置好头文件路径以及宏定义:
3.34.png

; x4 B" _6 O; f  z: e2 C, u( X$ ^
按照如上 1->2->3 步骤重复执行 3 次,最后点击 OK 即可

; A7 r) O. m: ]' g2 C& a+ D0 k( n6 O( X5 ^0 E' x+ t
配置调试与下载部分
调试:选择 ST-Link
$ @3 ?, f2 a/ P2 G4 V4 ]" H/ Y
3.35.png

& _6 ]5 w5 p. k/ I9 t
下载:选择 ST-Link 以及点击 setings 配置好复位 and 运行;flash 文件添加好(默认添加 OK 的)
6 V. `1 y! B4 o
3.36.png
3.37.png
——工程配置到此已经完成  
% u- G3 m& b4 e4 M- G

) R: p+ O2 Z0 `: ~$ K2 o
编写主函数并且编译工程

: e  |. P& i. W0 v0 t$ \( a
上一步操作完毕之后点击编译按钮

7 y+ `; i; u8 _2 ^# O! D( ?5 T# r
3.38.png
! `( ^) J' [, u/ g' z
发现一个错误如下:

2 {: [* M3 i1 E$ N
3.39.png

2 W  T! Q8 q$ r% R* Z. J
上述错误的意思是 main 程序入口没有定义,所以需要定义 main 函数入口地址

1 H# X3 J& a" U; P
操作如下
9 P; y8 b  V9 n- u* v0 p. Y' D
1. 新建源文件,由于现在存放的是 main 函数,程序的入口,文件名叫做 main.c。点击图标:
3.40.png
保存文件:使用 ctrl+s 将文件保存在 user 下的 src 中

* k2 l: D2 K) {: \% D
方法:
通过双击 USER 这个虚拟文件夹。进入 user 的 src 文件夹下找到刚才新建的 main.c 文件添加进来即可
3.41.png

( T% S5 A" d* E
3 b3 N" k. F2 [
2. 编写好主函数
7 h- F( u3 {4 }1 v
    包含头文件路径:#include “stm32f4xx.h”

3 u2 r$ D. h, F1 U
    编写主函数:操作如下

8 h  U0 A5 I1 w& D
  1. #include “stm32f4xx.h”
    $ A2 r" i- B. r9 i: J$ \2 t& S

  2. . T( O% `* c6 ~1 m$ I& H
  3. int main(void)
    " g; N! r: M% q; l' T# r5 F! }$ P9 d
  4. 7 a$ i# I0 i4 ]& r- B3 H2 c
  5. {$ x# x* H8 l+ K  e+ o. D! ^

  6. . n5 D) n/ Y% y6 N2 a5 x/ T% U. a
  7.     //硬件初始化区域 4 W, t" S+ i% y5 \$ U' X

  8. ' e0 j, _# N8 K7 a- s1 X
  9.     while(1)       /*单片机架构*/ ' @* T- R  B' H' U
  10. ) y! z7 {  w1 [' m
  11.     { $ w* O3 W" U& u) ?7 B
  12. 1 Q# x3 P6 z- q0 s" ]7 r" G
  13.                       //重复执行的代码  _+ _) N( x5 d" W5 M2 n# p
  14. 3 R- w0 L! d/ P) S: @' z0 v
  15.      }
    0 f9 G& _3 p3 r4 }' l2 S

  16. 6 N; o* K4 G  E4 k7 [
  17. }
复制代码
3 c8 C6 j3 H! l4 O& p* y% z
3. 编译工程
  _! C6 r1 ?2 @4 h$ k9 O( B
    点击编译图标:
3.42.png
编译结果:
3.43.png

5 L# I8 Q. g& a; U% W$ V2 o
注意:如果建立工程完毕之后有问题的请自行对照程序源码中的 STM32F401 工程模板改正即可

) _2 ]3 Z, Z, c5 [$ M5 L( i" C  \
4. 程序下载部分详见第四章代码烧录说明,这里就不多做解释了
' O9 V' s5 v: Q
文章出处:机器人协会 北理珠机器人

0 v2 }" \- y; t  ~# V& L7 r
; q: T0 ]/ r  m
( W0 {& V/ p* m' H6 D* g
赞 收藏 1 评论0 发布时间:2020-12-11 12:47

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版