STMCU小助手
发布时间:2021-10-27 23:41
|
6.1 初学者重要提示 i2 e9 T4 K r0 E' z! E IAR的工程创建过程还是比较重要的,务必实际上手操作一遍。 6.2 第1步,创建工程文件夹 创建一个文件夹,里面包含如下文件(直接将跑马灯例子的Project文件里面内容全部删除,然后整个工程复制进来即可)。
, z4 M, |/ N: t% z$ m- q, c/ l/ E - q8 m( n# o4 s. ?' ?7 r: z% @+ Y Doc文件夹; A7 }( l1 a- t2 ~) \ 用于记录例程的修改记录和例子简介。0 ?- \ @+ q- u : S* W2 @) Y0 b9 P Libraries文件夹* D/ P; J; ?% n 2 L" t- {9 t' }* q, D" |! q1 Q 在第一章详细介绍从官网的下载方法。0 P( M: f4 p e/ v3 Z; I Project文件夹) b* a: T$ c/ ] @) D 这个是本章的重点,在这个文件夹里面再建立两个文件夹,EWARMv8文件夹用于存放IAR工程,MDK-ARM(uV5)文件夹里面用于存放MDK工程,方便以后创建MDK的工程。 User文件夹 % C- i6 @0 i3 O. E+ ^8 B, e" Y 这个是要用户提供的,开发板已经都提供好,bsp文件夹里面是开发板各个外设的驱动,segger文件夹是硬件异常分析代码。( \" V, I) c3 d3 g: ^# Y2 }3 o % {0 }% {8 W J. G( u 删除目标文件.bat 这个是批处理文件,用于删除MDK和IAR工程编译后生成的obj和list临时文件。 0 e! G8 O( N2 H' u& s3 t 6.3 第2步,创建新工程 打开IAR,选择Project ->Create New Project
& z3 L* Q* f( D6 L 工程名设置为project:) G! g( S" E" z, q* X * n0 J9 z y4 U* ]
创建后的效果如下:7 `- J! j% Q# @6 i- f7 I
默认的情况下这里是创建了两个工程,一个用于Debug,一个用于Release。这两个其实是用的同一个工程,最大的区别是优化等级有所不同。: P$ o$ c9 |# I9 [( k9 U
我们这里设置一下,将这两个都删掉,新创建一个Debug方式的,只是仅换了一个名字(主要目的是让大家看下操作方法)。打开菜单Project->EDIT Configration: \2 A: s' R. j7 x% Y- K
先新建后再删除其它两个,因为当前IAR使用的一个是无法删除的。 4 Q2 z9 M9 N* h. v5 ?% i1 }
点击确定后,再次点击确定:; Z& {3 W9 |) Y& d% J; c9 v
/ @( @ y3 A; c% Y3 G* Q8 h* B9 ~ 可以看到左上角已经有三个了,这我们选择Flash,将其激活,也就是使用这个: + B9 k' l3 F( }
再次打开菜单Project->EDIT Configration就可以将Debug和Release删除掉了:" j1 |2 O0 B' z! v" J
现在左上角就只有一个Flash了:+ j1 ?6 h/ O0 X8 z7 x( I 7 F b/ ?& Q$ J5 ^
. O7 g7 a6 l1 \; R9 p' h: B* J1 K 6.4 第3步,设置工程分组名 默认新建的工程是下面这样的: ; D) C0 {; g2 W- a4 W' L5 a4 r' c0 ] ! v3 M6 V) r+ E9 b/ Q, \' M 在Workspace栏的空白地方鼠标右击选择Add->Add Group(如果有多个project同时在里面的话,要鼠标左击选中project - Flash,然后右击添加): + j0 t, e2 G5 q& A8 G7 l
通过这种方式,我们依次创建如下7个分组:; x9 P6 S. V# O: C8 v7 c$ ? U: \
6.5 第4步,添加工程文件 下面我们为各个分组添加上具体的文件。鼠标左击选中BSP,然后右击选择Add->Add Files
$ j/ k7 J3 `5 n6 ~+ P 然后在新建的工程文件夹里面查找需要添加的文件即可。2 V+ @5 G3 x9 f9 \
: J: ^' k% F: U- Q" N& } 添加BSP分组需要的文件 2 o: G/ g0 Q0 c, C
1 O" T0 q1 Z0 D2 R% D bsp.c 位于路径\User\bsp,主要用于MPU、Cache、时钟和外设初始化。& d; D% R- @* _0 y 8 M- V, X+ O, d" z! A7 V% E6 m bsp.h位于路径\User\bsp,此文件是各种头文件的集中汇总贴,方便管理。- ]1 e& n+ e3 A' S5 ]" w k: X. ]+ W5 I5 z bsp_led.c位于路径\User\bsp\src,用于LED驱动。) M/ D9 Q# A6 @. _0 n1 O( Z" g bsp_key.c位于路径\User\bsp\src,用于按键驱动。 * \- |& F0 a, M( t! {2 d, A bsp_timer.c位于路径\User\bsp\src,用于软件定时器组和微妙级单次延迟。 bsp_fmc_io.c位于路径\User\bsp\src,用于IO扩展,这里LED要用到。 bsp_uart_fifo.c位于路径\User\bsp\src,用于8串口FIFO驱动。3 B: |6 |6 a" K4 t; b, m% `3 ^ stm32h7xx_it.c位于路径User\bsp,用于部分系统中断服务程序。 6 g5 J: b1 E/ ?- ~. V 添加CMSIS分组需要的内容2 [/ _2 S1 Y1 h) T; H + ]: n/ J( z9 o/ i) A4 _( z
) X+ A/ V7 S( U system_stm32h7xx.c位于路径\Libraries\CMSIS\Device\ST\STM32H7xx\Source\Templates,主要用于复位RCC相关寄存器和中断向量表位置设置。 4 K* r9 `) m2 t9 ?6 P6 k 添加Doc分组需要的内容 8 C0 E9 [# A6 I4 F
# Y0 E/ ^% v) F: V$ _8 ` 这两个文件位于Doc文件夹,主要用于说明例程的功能和更新记录。 . v. \$ }' {# b: \$ l% n 添加EWARMv8分组需要的内容 / f Y$ a0 p8 _2 d" z$ k0 D' e
startup_stm32h743xx.s 位于路径\Libraries\CMSIS\Device\ST\STM32H7xx\Source\Templates\iar,主要用于堆和栈空间设置,中断向量表也在这个文件。 # e: V- x) z# x7 I 添加HAL_Driver分组需要的内容. i( q* |& a& } - c5 a2 B2 h; L & n4 _& u0 _3 @3 H stm32h7xx_hal_conf.h位于路径\User\bsp,主要用于HAL库的配置。# z- a) c* \ Z% \ ( q' V9 ]* n& B: Z+ \- O 其它文件路径:\Libraries\STM32H7xx_HAL_Driver\Src,用到什么外设添加什么驱动文件即可,有些外设驱动跟DMA也有关联,直接添加进来即可。 添加SEGGER/HardFault分组需要的内容8 x: C w3 u) F' x" S; A0 e
这两个文件位于路径:\User\segger\HardFaultHandlerMDK,主要用于硬件异常分析。 添加User分组需要的内容, s% ^) e' M8 V- y) U: G- E5 [
main.c文件位于文件夹User,实现了一个简单的跑马灯效果。+ I. u& Z5 P) ]0 m" B 6.6 第5步,保存创建的Workspace 文件添加完毕后要保存Workspace,点击菜单File->Save Workspace As 1 a1 E2 y" ^* a9 _! ]
弹出的对话框里面选择路径,设置文件名后,保存即可:$ x/ v8 t. }7 P# _6 h( s3 v 5 E" h8 C) o1 a; \3 K, o+ y
剩下就是工程的配置工作了。 6.7 第6步,Options配置 IAR的配置基本都集中在Options对话框里面:
+ r6 Y( x( F8 y2 K2 s/ e* ~- Q3 s4 f
+ p+ @. k4 `; f* w 6.7.1 General Options选项1 u; g! M: H% q5 B( y9 L5 s) K 这部分主要用于通用设置。选择ST的STM32H743XI:
Library Configration选择全功能库:& [; O2 _7 k$ P" d8 o' s P
Library Options1里面的printf和scanf都选择支持全功能格式:1 A+ T7 ?' Y& U2 q! M
% R: v( j7 D4 E, h% t 6.7.2 C/C++ Compiler选项 这部分主要用于编译器设置,优化等级选择默认的低优先级:0 q& ^3 Z+ t6 S2 g 1 Z* N7 c6 \% J3 `: y9 |0 I+ h
Language 1选择C语言和C11规范(在第9章有介绍):
然后就是最重要的头文件路径添加,IAR提供的添加方式都是相对路径:' P7 O2 K& S7 Y9 U - z5 q9 P/ q7 s, H$ `7 }1 T) K9 z! b
注意,添加的时候要添加相对路径,使用绝对路径的话,工程换个位置就无法使用了: 9 J5 y( E! C+ I0 Z7 r: ?/ s
; c6 @% B q A7 F3 y9 O0 _! f, s% k 将下面路径都添加进去:; @( @2 ~2 d) |% y* I5 V1 {8 C 8 A& }" `- H$ N( ^; l( U' P7 @: C
/ O0 z* B. J" S+ ]3 R 同时在预定义宏选项里面添加如下宏定义:" O; [6 p8 y/ P5 N. Z2 X1 P1 M/ S USE_HAL_DRIVER 表示使用HAL库。 ( G" ?* @) R- ^( `3 O STM32H743xx 表示使用H743系列。 ) l4 I9 Y1 N: B+ m* `. a9 ?7 |
6.7.3 Build Actions选项
这个选项基本用不上,可以不用管,主要是用来指定编译之前和编译之后执行的用户程序。对于本教程配套的例子来说在这里添加了一个批处理功能,用来实现Objects文件夹里面的hex文件复制到路径Project\EWARMv8里面,方便查找。 + E! A+ ^2 w" |& w$ g
0 z" [. E: y4 V& P3 F/ s . R; ~2 A7 W& ~- A 6.7.4 Linker选项; l! m( X8 y2 X4 N Linker选项主要是链接器的配置,其中最主要的是icf文件配置Flash和RAM区。在HAL库的软件包的路径:\Drivers\CMSIS\Device\ST\STM32H7xx\Source\Templates\iar\linker里面提供了很多配置方式: w# W. C5 R$ ?$ k* `
! _ C7 R& {* l$ L5 B 教程配套例子使用的是stm32h743xx_flash.icf,将这个文件复制到所创建工程的路径\Project\EWARMv8里面。然后在Linker选项里面将其添加进来:* {/ L9 |. D& {$ m
添加进来后是个绝对路径:+ o5 }! G8 X+ p
要修改为相对路径: 7 w" z( b" z6 R* x0 o/ ?
) J0 p: m0 k2 g5 w. M 添加进来后要设置下中断向量表首地址,堆和栈大小,点击上面截图左下角的Edit按键进行配置。 {2 b$ V' j( M' B/ L- N0 s5 [ $ g g- k# G$ s' \+ E% X8 K. r 中断向量表首地址设置为0x0800 0000:
STM32H743XIH的Flash首地址是0x0800 0000,大小0x200000,即2MB。 9 i9 @ H x* W7 O; v 默认的RAM空间选择DTCM,首地址0x2000 0000,大小0x20000,即128KB。
堆和栈大小分别设置为0x1000和0x800:/ ^! _! ]' j2 ^2 u7 F C! |7 X! p/ o/ \$ j4 ?
设置完毕后记得点击保存。, @- \& G, M+ x; w& f ( O& \. {- O2 y( ^& O. O$ n; B. R 6.7.5 Debugger选项! G" S% o' n Q5 N; Z) S4 r Debugger选项主要用于调试下载,当前IAR支持如下调试工具:: G7 H+ x* _6 _' I L# S0 C 8 s% P. @6 a3 ]* F6 }/ X. x* p
1 i c9 ?$ ]# o% F 具体的调试设置在下一章有详细说明,本章主要是保证创建的工程能够正常编译。9 E0 K4 x, C) W: d5 P 6.8 第7步,最后一步验证是否创建成功 点击全编译: 6 g9 f) N7 j( R6 C( x
编译结果:0错误,0警告,编译成功。, B, r6 T# g& Z: ^% q 6 l2 {) [2 D! a4 F7 [. ` 4 J4 x& {: H0 ~ 6.9 IAR的字体,多核并行编译,语法提示等设置6 N; g& Q% S' ~/ a 这里将IAR经常用到的设置做个说明。 5 }, \, @- A0 R- e, A! x 6.9.1 Tab Size设置 教程配套例子的Tab size要设置为4,否则代码显示不整齐。菜单Tools -> Options: # E* L( t. c# @. P2 w9 a( U
6.9.2 字体设置% e( e6 C9 E7 o4 V, {, N 菜单Tools -> Options,支持比例字体和等宽字体选择:3 J/ E: |7 j6 j' Q( m" q 1 b! @! t, N# [# B+ e
6.9.3 多核并行编译2 B- G. H$ a; s$ z+ X. } 电脑有几个核都选上,加快编译速度,我这里是四核:0 E' R9 g0 L5 d) E & a) k* p( p4 H9 u
9 \, X1 h0 ?- `/ L; m4 x 6.10 总结" v# X7 K% ~) n& e8 Q 对于初学者来说,务必要实际动手操作一遍,以后移植其它程序代码大有裨益。5 c9 I1 n, e) C : Q' @. A% u4 W3 [ |
微信公众号
手机版