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

【经验分享】stm32f10x在keil环境下的配置

[复制链接]
STMCU小助手 发布时间:2021-11-26 18:00
针对32开发,最理想的开发IDE还是keil,keil前几年被arm收购,对本家芯片的支持无疑是最好的。# D# N( @- _7 ?, n
下面介绍一下,keil环境下针对stm32开发环境的配置,软件的安装、破解这里不再赘述,不明白的可以百度。1 U, J( W( v/ n! l0 F8 l9 T

2 t) _+ a3 }/ D4 XSTM32开发分为,寄存器版本开发还有库函数开发,依据库函数搭建的环境能运行寄存器版本例程,
% n8 _# L. [, U( |+ r" f8 ?0 g  D. R& _
# d6 C. z+ i3 ~' t( U5 A8 g$ E寄存器版本开发环境,不能运行库开发的例程。
" t( E* d& c3 d: {5 S
) T, ^" u% ^2 c( V: I工作中为了方便代码移植,建议选择搭建库环境作为开发环境。" J6 k& S2 `) b6 d1 y- f
下面介绍一下模板工程创建,工程创建完毕每个工程均可以在此基础上进行开发,
4 ~! [. ~7 v6 j) |* g
' f1 k) w1 K* A, [# y  }第一步:下载官方库 stm32固件库V3.5 里面包含官方固件库源码,还有官方参考板的参考例程。
# w, p) ?- p$ X; H1 Q! }% G4 T1 ^0 J0 C, w5 C  h9 T  u( u
对于开发环境搭建而言,我们主要关注其中固件库源码以及针对32单片机的启动代码、中断管理等文件。5 L, T$ @3 y& g- t' B: l/ F# h$ K
8 H& ]8 n; @. N
固件库
8 c( G1 X9 p' [" I% O( S# V9 ~& X' u: t  a
TX1_3(4V4~YR`6_EL1@LY0C.png

/ E- A4 t% U$ K. _3 Y. f$ E7 ?! }# P* V+ b% G& Q
解压后查看文件列表. V+ M8 ]3 ~1 z

, A* Q7 N) ^$ L9 a) i7 i
20171016093854625.png
3 y5 m! g/ d3 d& a' ?- Y5 V

. F5 ^; f9 v* Z$ F3 L那么我们新建自己的工程模板。
  l2 Q- ~# ]( H% H  ^" y  I) S6 {9 a7 c# X& z1 @5 F: _/ b$ y
首先新建个文件夹,命名依据自己的喜好
" U2 [2 S$ E6 o% @( ?4 P% f+ q( r; W
20171016094504088.png

/ B1 I. \3 ~7 N. @4 Q3 m7 K4 ]1 R6 h- E# ^$ |7 \* c5 [1 h
这里我命名为 STM32Project
  o4 z0 k- j6 |8 z: w* `在文件夹内部新建四个文件夹
9 Z6 }/ `  o) s+ Z" l1 b; U8 ?) A+ A& W. k4 F
20171016094814269.png

- l: \6 r0 g% o7 i' s- D2 J/ d/ T( w7 H& Z  f
第一个文件夹ASM存放与单片机相关的汇编文件,里面是与单片机启动相关的内容
/ X1 J0 L7 g6 z
5 N; @5 [  g# @9 hSTM32最新固件库v3.5\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm$ R. ]" ]$ k1 r
20171016095530755.png
3 S3 t+ o# `8 }
- @( T, e) u9 L, _- g# ^7 q
这个根据自己单片机的情况选择,选择方式通过后缀,一般md中等容量,hd大容量··· ···主要依据容量区分。也可以全部复制到ASM文件夹
  v) S$ e- |* }9 r* i/ ^; i2 d
$ C) e* u: H- z' M在创建工程时在工程内部进行选择。这里我们全部复制过去。
6 L6 J. w% c4 c4 r: a8 t1 o  V1 r
& L/ d/ _  M- O, r& Y8 X: m+ H第二个文件夹内部LIB内部存放固件库源码与头文件6 g) ]; f3 M! L) ~8 U
! S0 K& G# f6 g2 ]1 r) |( z$ Z
源码头文件的位置在  STM32最新固件库v3.5\Libraries\STM32F10x_StdPeriph_Driver 路径下 将src inc两个文件夹复制到LIB文件夹下
5 z& y9 l; g- c1 T4 D9 E6 I6 x+ ~2 I
第三个文件夹 System 存放与内核相关或者中断入口定义等相关的文件,还有一些重要的头文件
+ ^; Z. u1 p9 U% O
% a+ C9 |, u6 F5 j
20171016100220131.png

& d% T' u0 Y1 Q, }, m1 K* p9 G  {. _) u; y' j9 m# v" J
这些文件在+ A! b8 o6 b/ b/ n! S
STM32最新固件库v3.5\Libraries\CMSIS\CM3\CoreSupport9 a/ W1 ^% T( P$ ~3 Y8 a
" P# |! T! C1 D4 e4 B3 \
STM32最新固件库v3.5\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x
1 Y5 p* T4 A9 L, v
8 D! q0 l# }8 [1 {1 s6 tSTM32最新固件库v3.5\Project\STM32F10x_StdPeriph_Template
& P: Q% I) ?& \2 I0 u1 j路径下可以找到# y2 b7 V6 F6 f" E% X
进行到这里工程所需要的文件已经准备齐全,接下来就进行工程的软件配置,打开keil(我用的是5版本的)
8 y* |; o' Z/ n9 }3 O' c' k# B6 p2 {- c* k& e
20171016100806062.png
+ Y! b0 U3 H+ F7 p$ I8 T; m1 G3 h. p7 j
7 p4 W& n4 U0 b" B9 ~* y3 i
点击新建工程,选择路径刚刚新建的工程文件夹,我新建的工程文件夹叫STM32Project。文件名就是工程名称,这里
$ R3 w( U9 L! s" h/ v2 Q6 w, |
$ q$ X  c2 \" g6 M$ k0 H我填写的名称与文件夹名称相同STM32Project
# V8 C: Q$ G) H; D8 _
( C  ?7 B& ^( P( I/ J+ H
20171016101020601.png
# C7 p/ B5 y/ v& j3 q
/ i5 \; c1 `3 A- P6 ]
点击保存后出现芯片选择界面,这里我选择的型号是STM32F103VE  大家可根据自己实际芯片进行选择。
0 i! m* K0 i( X. L4 l
; Q. p# h$ \. C
20171016101336723.png
- I1 s( p3 l; }

: {0 N/ e" Q) T/ n1 P1 j点击OK 下面还会弹出一个窗口,这是自动配置相关内容,我们这里直接点击ok,不进行选择任何东西,稍后进行手动工程配置
9 W7 p7 x) u8 H0 @6 ?  _0 l( j/ k3 g
20171016101521762.png
3 h) y  N7 B- r. H; O& z5 T

" O& Q% z* |: \- }" O, K点击项目目录规划按钮,进行工程目录配置,让工程开发条理清晰
! l) R) w4 J/ E: }& J& y& a, W: l' P! ~1 \. w
20171016102918530.png

- y  y2 v. B$ C' P" n" @
' }, ]' N5 @3 M  ^2 D处理方式与建工程文件夹下的内容基本一致,需要向其中添加一些文件3 n! B/ a; `8 a* R( i* g
" o8 c' y! l& i  ~
20171016102240242.png

& b* W/ Y2 v% N' m3 `1 {2 D; c9 \
  U  ~" e5 k# ]$ ]添加完成后点击OK0 O2 Q9 |6 L. y. d) A% O4 u

( G8 B: m  K8 P: S. N
20171016102320395.png
9 L! X- i9 P4 r+ [. t

# b4 E/ w0 ], Z1 d+ Y工程预览如下,ASM文件夹依据我使用的芯片,选择xxxxhd.s,LIB文件夹选择最基本的中断管理、IO操作、时钟配置三个源文件7 L$ ?5 P9 Q" T+ D7 K2 i% y
0 l# Y% Z" {2 L9 k" j; f8 l. Q6 [
(例如ADC 串口等没有添加,可根据开发情况选择性添加),这三个文件因为每个工程都会用到,所以添加了这三个文件。
0 n, e6 A& D" a  `# G1 \
! Q* L' r+ d' C/ b5 }) oSystem目录将所有.c文件添加进来即可。也可以将所有文件包含进来(.h)。方便工程配置。0 P  [4 t# N9 X/ C2 H/ [
: A4 @0 S% [+ E# _
接下来进行工程软件配置,点击目标配置按钮3 L0 E3 H  }6 [1 O4 x& {- W) L

3 c, J. v% `. ^! l8 r) B
20171016101729144.png
  _+ S1 F( J  f+ `  j* v( n

% _0 Z. I; O4 W7 }; H$ ~* [+ d% n7 _  c在output选项中,如果采用串口下载勾选生成Hex文件选项,如果采用ST-Link下载不用勾选- y' E4 K( I8 }" a+ }2 W, \7 e

% p" I* I$ l7 m$ N0 ~. t4 X
20171016103120217.png
' j; d# e; w& g' ?

, x. L1 G8 g  ?" i& w: S- |在c/c++选项中,需要做两项工作,1、配置宏(宏第一个内容根据单片机容量进行填写),2、选择头文件的路径,点击保存0 N; t1 [( ?. H+ V

" k: H5 g4 x5 ~- \% [  J9 D! x
20171016103500379.png

  w# `! K# s! B7 S5 d5 [3 f
* n6 b) G& I+ W  [在Debug选项中,选择调试工具STLink 或者JLink等等,点击旁边setting按钮勾选Flash Download选项中的Rest ang Run选项,点击保存
# ]' s! X$ [  E  U, }5 T4 b
: |/ u% h, d3 K: s- v
20171016103843235.png
% t7 x( ]& W9 `$ x* y9 E) {

; E) d5 u. B2 ^1 f) G8 ]$ v在Utilities选项中去掉调试之前更新目标选项,点击ok
0 X& i! i3 @0 c( v. K8 @9 t% j0 E( D5 |* D3 I
20171016104122357.png

6 z8 I  R6 Y$ x" Q1 q* b1 x# W) A* G  ]8 [
工程配置完毕,验证一下工程配置。
  [7 C4 A9 k" i8 e% A: p0 I6 m' {- F5 m  f6 V& F& }: X
点击file,新建文件保存在工程目录下USR目录,命名main.c,在目录树USR目录分组双击添加main.c文件,将main.c包含进工程* S3 ~( p9 D; E+ ?" X

# p' Q: v! ?& [) c" R; J: @在mian.c写入实验内容,编译进行验证。
4 M8 l/ C; x" c( m0 I$ s, I# B# U
! S7 j, y6 {( l# F% o  b  D9 l
20171016105923107.png
7 T6 x( D# ?6 t1 d7 U$ [% F2 C
( M( e2 E/ v3 {+ G  Z9 }( \6 G
输出0 错误 0警告工程搭建没问题
. g! g2 h; Z! v. ~$ ?采用库函数开发时,最好是用到那部分内容就将哪部分内容添加到工程,例如用到adc就把adc.c添加到工程,不用全部添加,固件库模块声明在stm32飞0x_conf.h中" v+ G6 L6 i, M& _) y

6 b! R4 W# B) V" K( |没有用到的部分可以注释掉,这样在变异程序时可以加快编译效率。
7 x/ D% _0 Q" K+ r$ o4 |
, j( U  w- x! b+ D5 K; S* w2 r
) g, T1 W: {# f* x
' g$ B# @- Y" v$ Q3 c+ i2 I
收藏 评论0 发布时间:2021-11-26 18:00

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版