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

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

[复制链接]
STMCU小助手 发布时间:2021-11-26 18:00
针对32开发,最理想的开发IDE还是keil,keil前几年被arm收购,对本家芯片的支持无疑是最好的。4 \8 h( m* j) E" o1 v
下面介绍一下,keil环境下针对stm32开发环境的配置,软件的安装、破解这里不再赘述,不明白的可以百度。
* ]/ x- o$ {' [' o6 A& T- W& V3 f( b* l4 v, C* n: F: J* v
STM32开发分为,寄存器版本开发还有库函数开发,依据库函数搭建的环境能运行寄存器版本例程,
: ~4 W5 c5 I/ b* A9 |
4 t" ~! G+ R) ^) {/ Z寄存器版本开发环境,不能运行库开发的例程。
3 H& i' p: J" P/ ~) p5 q2 U1 B% M; X: j! E2 d6 i
工作中为了方便代码移植,建议选择搭建库环境作为开发环境。
# O+ I$ A# \* j! U7 }# ~下面介绍一下模板工程创建,工程创建完毕每个工程均可以在此基础上进行开发,# d, `7 {) G' m* O
( m+ n9 Q7 U9 l5 s
第一步:下载官方库 stm32固件库V3.5 里面包含官方固件库源码,还有官方参考板的参考例程。- @9 R9 `* a: B; o0 h) o' Y
7 x3 z- o6 s' ?8 R# j
对于开发环境搭建而言,我们主要关注其中固件库源码以及针对32单片机的启动代码、中断管理等文件。/ G* {2 V2 Q+ L+ E
; Q2 I. T0 K& X+ j
固件库
/ U5 o' ]/ n! |) Z- [) I% |9 n/ P; H% I3 \7 m; v$ A6 s% h
TX1_3(4V4~YR`6_EL1@LY0C.png

5 I& L$ h) S2 T* Q: P3 E' G) N' ?/ B8 ]
解压后查看文件列表
( u5 i9 Y5 v" g3 {. n" m& S$ r) J5 K/ H, T, H
20171016093854625.png
; Q- S* a1 c* ^  V4 ^
/ X4 D8 @' m4 A- D
那么我们新建自己的工程模板。8 T2 r: m" L# l
5 X# F5 ~* W4 \
首先新建个文件夹,命名依据自己的喜好  W# Z+ D# Q5 Y8 D( ^) W  U0 V
4 g0 L' L/ W: n/ g( g4 S% |2 M
20171016094504088.png
$ w0 Z! G) T0 V
/ q. M1 E% M$ r
这里我命名为 STM32Project 5 Z% R0 n- ]2 X7 x; e: c  v+ U0 \
在文件夹内部新建四个文件夹
( |3 q. n2 l( p: M( k$ _1 v  c/ i' S/ X' q4 o3 o
20171016094814269.png

9 p7 X# e, `, I) N8 }
' |! w* d( R/ U/ \% w+ P! e第一个文件夹ASM存放与单片机相关的汇编文件,里面是与单片机启动相关的内容" Q, I  h. N  y3 g( s! u. `5 S+ h* U" F

9 I' {; Q$ C3 Z6 TSTM32最新固件库v3.5\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm
4 N: W7 C+ C5 [  |' R
20171016095530755.png

& c& G, k2 R6 O1 D3 E. Z$ O+ E0 t, }; n* [- {
这个根据自己单片机的情况选择,选择方式通过后缀,一般md中等容量,hd大容量··· ···主要依据容量区分。也可以全部复制到ASM文件夹" Y8 E( [3 H  W
: @. L) W0 W1 j* @: p" \
在创建工程时在工程内部进行选择。这里我们全部复制过去。) \6 S6 v) K0 o' {1 P! @

$ @3 U% h& R$ J8 f9 b1 E. E5 e7 t第二个文件夹内部LIB内部存放固件库源码与头文件; T% E  L7 d2 l/ @0 g# y6 S' J

* }+ w( Q1 O7 ]. ^# O5 S源码头文件的位置在  STM32最新固件库v3.5\Libraries\STM32F10x_StdPeriph_Driver 路径下 将src inc两个文件夹复制到LIB文件夹下
& y  N  Q( Y$ P  `+ W2 N+ Q. P9 D5 T7 I9 B# z2 v
第三个文件夹 System 存放与内核相关或者中断入口定义等相关的文件,还有一些重要的头文件
/ {* S; E2 T+ \! Z# ^
4 p6 a3 P; b2 ]9 P
20171016100220131.png
$ u5 k8 g8 V; Q! t8 o( n( Q
9 |, O. G; M; r0 j# I
这些文件在. G0 m* ^- [* ]
STM32最新固件库v3.5\Libraries\CMSIS\CM3\CoreSupport
5 ?( p. {5 |% Q4 l; F
. e7 a& v! g9 q$ E" _4 }STM32最新固件库v3.5\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x0 S+ D9 {" K4 ~3 w& K# b  y4 q
3 W  o" l# d+ h( T' H, \( D, |
STM32最新固件库v3.5\Project\STM32F10x_StdPeriph_Template
+ j6 B# L* H! q; [路径下可以找到4 |3 s* j* g8 b
进行到这里工程所需要的文件已经准备齐全,接下来就进行工程的软件配置,打开keil(我用的是5版本的)
( Q7 S: J( \' c/ c( s3 B2 ~: P2 v0 {* `7 ^* j8 {( v) H- c$ p
20171016100806062.png
2 q5 r, Z3 ]6 K- A* m& I

; [! \) Y" W) T+ |' }" w点击新建工程,选择路径刚刚新建的工程文件夹,我新建的工程文件夹叫STM32Project。文件名就是工程名称,这里( B! z, P( _* r& |& f( X

* u+ X" T+ P5 Z- z- u$ f我填写的名称与文件夹名称相同STM32Project
" r  ^3 E' @8 _/ L; ]
; ~" S1 [+ B. O; s5 J) v
20171016101020601.png
" t. H) O0 ]3 @9 R
% R  V2 F9 a( g( ~6 s
点击保存后出现芯片选择界面,这里我选择的型号是STM32F103VE  大家可根据自己实际芯片进行选择。/ z; h( C! x# X+ D# |# k, I
( O$ F" O4 w( \# A' S
20171016101336723.png
2 ?( |: s3 {1 W, S. G

( A: T4 }% G$ D+ C' T+ W% _点击OK 下面还会弹出一个窗口,这是自动配置相关内容,我们这里直接点击ok,不进行选择任何东西,稍后进行手动工程配置. V0 l+ U" V! u# H
+ D  ?7 s7 N& _! S3 L9 K
20171016101521762.png

' u2 n+ B0 W+ K) ?0 r$ Y8 H! G2 W" g& s$ c
点击项目目录规划按钮,进行工程目录配置,让工程开发条理清晰
9 N% R6 @- |* [9 T- Q
  W6 j  L+ a5 S9 h2 b! ~0 a! j
20171016102918530.png

% j: P4 k1 z- H
. [# _: D% I. ]; q5 D' b处理方式与建工程文件夹下的内容基本一致,需要向其中添加一些文件: \" K3 z; l% p7 f, S5 o

: M! H# x& Z7 M3 a7 I/ l
20171016102240242.png
2 @+ ?) \* |, Z  t% ^: O! B

& _. F) a) D1 K  }1 o添加完成后点击OK
+ o) A0 Z2 b  O6 u
$ _: Z- q8 R; Q4 v% g
20171016102320395.png
  h5 E! K' {8 k8 @' r3 z2 B8 [

- g2 f) }% ^) _" U工程预览如下,ASM文件夹依据我使用的芯片,选择xxxxhd.s,LIB文件夹选择最基本的中断管理、IO操作、时钟配置三个源文件
( H- _& Z- a  p+ A0 J
5 J/ C9 P' c/ p8 V, {7 U(例如ADC 串口等没有添加,可根据开发情况选择性添加),这三个文件因为每个工程都会用到,所以添加了这三个文件。+ a  W* C& w/ z) f

$ S, k- {) H: M* J( C. cSystem目录将所有.c文件添加进来即可。也可以将所有文件包含进来(.h)。方便工程配置。/ b& q3 j$ c( A0 `2 y) M+ V

0 d2 h2 {/ T  N0 t& w( |接下来进行工程软件配置,点击目标配置按钮
( j; s) p. I3 u( E/ l7 h9 I- S8 G+ Q5 K1 z9 J
20171016101729144.png

6 |) [5 K  k3 E8 e; d: @8 ^0 R% `% z# n+ D  x8 Y3 D9 e
在output选项中,如果采用串口下载勾选生成Hex文件选项,如果采用ST-Link下载不用勾选' l% I  g8 Q8 H. n9 U  q, ?5 p

1 O/ ]$ {* j/ B- V) `* Y! p
20171016103120217.png
/ I/ H) ~" [3 ?
( j: F% R, P" \* b0 X( y
在c/c++选项中,需要做两项工作,1、配置宏(宏第一个内容根据单片机容量进行填写),2、选择头文件的路径,点击保存; L. Q7 m) O- p
7 O0 N  H' i1 v/ j) `5 `$ t& g( w
20171016103500379.png

/ y7 B6 E  G: K" {2 {+ B: N" k7 v4 ?% X- X) l3 J" m) `8 ^
在Debug选项中,选择调试工具STLink 或者JLink等等,点击旁边setting按钮勾选Flash Download选项中的Rest ang Run选项,点击保存2 h  d- A7 V6 H3 _2 T
4 \& d5 e, O  r' z6 g3 a
20171016103843235.png

5 f1 W# M- c# z! p+ O9 T7 u/ b
0 S" M! _1 F) R9 Y在Utilities选项中去掉调试之前更新目标选项,点击ok- z' i9 |  e! I, T' g. D
! O3 Y9 O/ j* h, D4 Q* n$ t
20171016104122357.png

2 ]- \8 s4 {( O: ^4 z* a+ L! P: R0 U
# E; ]1 j" x& t工程配置完毕,验证一下工程配置。7 g" L: f: v3 v9 n; f# [

4 r& J+ \+ c( q5 a点击file,新建文件保存在工程目录下USR目录,命名main.c,在目录树USR目录分组双击添加main.c文件,将main.c包含进工程
* H5 R+ z, ~9 g' `
& H! L1 i0 E- k' T5 w% H在mian.c写入实验内容,编译进行验证。. W; M, s- p8 V9 r/ c' I1 {
9 G9 l7 w- e: L2 B' s$ ?8 D
20171016105923107.png

6 S. [$ k% h9 `2 f: X+ M/ Q0 h) d" F0 v% q: Y0 _
输出0 错误 0警告工程搭建没问题) r5 E6 c8 Y. U8 g) W. R
采用库函数开发时,最好是用到那部分内容就将哪部分内容添加到工程,例如用到adc就把adc.c添加到工程,不用全部添加,固件库模块声明在stm32飞0x_conf.h中
4 f$ f: T9 I+ C" U, E* w- M8 v7 f% B" {, @$ R& \) k4 I* G  N
没有用到的部分可以注释掉,这样在变异程序时可以加快编译效率。# ~& K1 p! `2 P8 W
/ j* U5 m6 ^* Z2 W& ~/ P
* I) d4 c" S2 p: f* U7 Q

. r* m2 n, H. r6 i" t
收藏 评论0 发布时间:2021-11-26 18:00

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版