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

【经验分享】学习使用HAL库进行STM32软件开发 | 建立cubeMX工程和keil-MDK工程

[复制链接]
STMCU小助手 发布时间:2022-5-10 21:42
摘要
! G, h) Y9 \2 y- j( d7 k使用STM32cubeMX建立工程,自动生成代码及keil工程,并切换到keil软件中进行编译,编译通过。
! ]/ {* `  l3 {. s本次只是为了建立基本的工程,到编译通过就结束了,没有进行调试。
7 h' m+ }0 T# t5 m在编译通过后,发现双击工程名打不开map,查阅资料发现由cubeMX自动生成的工程中,Listing中设置与Output设置生成文件的路径不一致,修改一致后问题解决,可以双击工程名打开map。
8 L) s! P7 s$ P, |' k. m# {5 Y5 q! ~  x( ?
一、在cubeMX建立工程  E1 v) `+ W* ^' c1 L6 X- a1 U& p
打开cubeMX。2 z. x: N# M2 f# a/ F  {! L: ~
`DUHI$RO60HMDF@{JFP.png
/ @* s  P+ l- a0 C; _  p7 c! m7 _8 G, m
T__9G);{YI6BAB}WX5.png
/ y  Q6 [, r1 E3 V: N* v- U: c6 w7 U1 r1 p: {
点击file > new project。, K" z/ ?0 u' f/ _# G' U1 r
' a/ X' U  n! t9 q# g
4ROBE~0{)AR%R3EJ2PAITQ3.png
& t& G7 M  N2 Q8 Q5 U4 y* b  }2 \4 n9 [) o3 W
在芯片列表中找到STM32F429IGT6。4 C7 W- T. ~! l) R6 S

* e  [6 V% @; J5 l8 @8 B 0C@9U0C3`4T4TQ]HJ]SYN{9.png 4 L5 U  W0 `9 a6 Y
1 D+ J8 e! d  a. y) Z; Y
点击建立STM32F429IGT6工程。
% T/ o7 `, V! S' K3 [' G0 _1 Y' p# D; @% e6 {. d
T}K$~0WAXO]FP0CC${8)0(X.png 1 H! ~" m4 s& o1 X% L$ \6 k
( r' z1 s$ v3 L* O
VZDL5JPIOX~RCDS](G_Y]2E.png ( b; j2 U+ Y* {& y! e
6 y# D, H& ^; D7 q+ o, r2 e
Pinout & Configuration这里不动。5 G( H3 V1 `, t  \) Q

* z6 U/ V) V" N2 j& W/ |' u0 K 2]JFQ~6$FYGV_QA_9WDW(Z2.png
2 G: t! e9 e4 S% ~: m5 H2 o7 `7 _" v0 Z1 M7 I; j- q8 o) D
Clock configuration不动。+ `+ E9 d( G+ L  K$ U, g
  J* p4 p5 D& v: U' E
500AWZVN_VP7J)E4)5[U]3D.png 2 A8 F) g( @: {0 }& I

3 [& L8 P( A" V0 ^; pProject Manager这里,Project设置好工程路径、工程名称、开发环境。
! L  v7 `" J* Z0 ?
+ B- ]' I5 K* u8 u DH8KD~AP6$[[H2J]{{_WPP7.png + a/ C8 ~5 D. ~0 Q. j. W4 C7 j
0 T: j* I2 l* f) P! f7 f
Code Generator这里,比默认多勾选一个生成单独的.c和.h文件,不然一堆代码全在main里面不好找。
! i5 _* S# V$ [6 v8 w: @0 h) Z; F0 X; a; i" A* s/ t- p. U, }2 M/ `
ISMYJM]_WFCLB9LI4H3~RAI.png
8 N7 M& S+ M1 F* ]8 R
4 K9 ^: O8 R: g* g7 \# Y3 pAdvanced Settings这里只用了RCC,库选择HAL。
, u4 q$ t* a. b! m
0 y' Z! c$ m) |% O1 p 8~C2B(3{(W[A5K{D0RZ1OOC.png ! J" R( g# D. U- X. e8 V0 }
, {! g: p; b6 W9 O* \5 t8 T
保存工程。
* ~' S& ?5 W7 e4 e% }8 ?$ ?" h1 y2 M8 q7 `7 ?
1TF(}4XJMZ6%}J{[]20I7QC.png + f! Q- Z# ?- k7 g  q7 U

. C3 W4 [/ B+ Q  }点Generate code生成代码。
8 p* u& @( x4 C0 q
$ T3 O8 I6 q9 b7 b$ H  }0 E (KQXW@}%R00A`}II4TZD.png 7 q; k0 V4 {& l! a1 ?5 [

2 r' ]" `2 l4 `& U YIN81QQZT8{R540V0MW[4$Y.png
" @% N, F4 J/ Z' x, a
! e6 r& t/ L8 \4 @+ \3 Z生成代码之后,可以直接点Open Project打开工程。+ ?5 Z" B" V+ W# i* i
9 x* B6 x5 M3 A5 ?/ k6 a) s: Q) G
K69L7S0EHE6FYBEI(G6A3]X.png 9 }7 t" e+ o2 W3 N. p
. u2 N9 B3 A- a5 T  \" T' s  o1 ^
GGG`4W({0ICAZ2GJSGNVNVO.png
9 X$ j! k! u6 k0 q. M7 e, F4 J9 P8 W) G& m5 J1 _
查看生成代码的文件夹。
1 |+ K+ S" C0 t+ U- n" ^其中,Core是生成的初始化代码,Drivers是ST的库,MDK-ARM存放keil-MDK工程相关文件。
5 g# v' t% D$ j9 Y* [& d, R2 [/ s4 D
MBKFKBU8LJ5F(S_ME`EJ$M3.png 9 n0 `& U# ^  {
$ J' c, z4 u" m# T
二、在keil编译工程
8 g: M8 X3 q4 p* C" S1 B8 o之前cubeMX生成的代码,可以直接从cubeMX点击打开,也可以从MDK-ARM文件夹中点击工程文件打开keil工程。6 M. V& L, l8 A( k) A
3 I5 Q) m0 S5 |6 y* z4 v
MC~{FMT4M``1(M7XW]G8AEN.png 6 n; O7 S) d# k5 P

( R6 i, x/ b+ M# A/ [& q2 A工程的设置是直接被设置好的。2 u$ _! X9 ~! P

" J& g$ c- p2 J# A' O6 _! \ 2845ZGGC7}G{}V%H}DKJX39.png
: A6 M' w+ [# y/ }& w+ H" i
4 P$ D) N9 S% ^  E 27EYQY`OO9JG{LDVKF}]{`4.png ! L) L4 Y3 O' n
/ P" U2 C/ Z! _+ q( |: q
直接点编译进行编译。
: g% b2 U. r5 M% E
" m! k. \: I' d' g PVG6}%VG}1V02[NILBC](4Y.png
  s0 W4 M5 i  Y/ p6 E$ H0 w. r
0 a& K0 n$ Q3 z. O4 y编译通过。( [) y$ E5 `) e( ~; F( D9 U
6 h! T/ i4 J3 `" H1 t3 r- c/ x( i
8~~{KV%T%K5K(QE2K3J`KRI.png
( I( ^" v4 A5 [: R# n
: l8 G+ S$ t& t% \: {三、遇到双击工程打不开map的问题* g; C) L) u/ _0 n
编译通过后,双击工程名打不开map文件,网上查阅别人的文章后发现,由cubeMX自动生成的工程中,output中设置生成输出文件的路径为工程文件目录的下一级文件夹,而listing中设置的路径是工程文件的目录,两者不是同一个目录,所以直接双击打不开,在listing中设置修改目录为与output中输出文件的目录一致就解决了。' |. k9 C, ?! k  P, H/ h% o0 E6 A
6 |5 L" h, }( U5 K; v" s# d
output中是工程目录下的test文件夹(我前面建工程时叫的test)9 C: s/ a8 X# c

) {$ s" \- {5 k9 w KLNGEB$CERHEF2BK[~L6YE9.png 9 ~6 n9 h! X) r) Q

& ~4 ~. t7 |! z9 _/ P! q$ wlisting中的路径直接是工程目录。
5 x3 H5 d" N/ l0 E9 [: B% F6 ?/ ^0 T5 @; B% W1 j: q. {2 l
WLMFSX2E2~MN4C(_ZZH52WR.png : S7 Z+ O: E3 C' G. L

" l! y5 E; K/ _修改后解决,可以直接双击工程名打开map。
8 a* l, p5 w' Z( C# g2 S7 U8 p% ~8 k& B
F2)_SDQ0U7FL7~)DPM4X_VA.png ( D8 ~" \6 S: S* x5 _9 N. `5 G
% X8 K8 Z/ N* _0 m6 e
75PAD%$YOHY7ASE2~36PN%L.png
; M! I- A9 c# m5 L0 b" r7 J: r" w( H/ ^8 q( @2 ~& B

) d. ?% k" X' j: D0 x" B* h4 p. N
; N1 r7 Q; P+ Q1 ^3 {5 ~
赞 收藏 评论0 发布时间:2022-5-10 21:42

举报

0个回答

所属标签

相似技术帖

官网相关资源

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