需要注意,CubeMX只是一个初始化工具,它只是帮你完成了HAL库外设和时钟的初始化,具体程序的编写还需要查阅HAL库的说明,使用相关函数实现你想实现的功能。
9 \. M8 v0 S3 iCubeMX生成的代码包含了丰富的注释,为用户规范编程提供了参考,如果后期还需要使用CubeMX更改时钟或是添加新的外设,用户代码必须写在相应注释BEGIN和END之间,否则再次使用CubeMX生成代码时,未在指定位置的代码会被删除!( i- R- F- d& d; p
hsb2gdj0hle64047191207.png
* U) ?/ c$ M; F4 k6 gCubeMX可以帮助用户初始化外设,所做的操作在MX_XX_Init()中,但如果用户在代码中自行更改了MX_XX_Init()的内容,再次打开 CubeMX,图形化界面并不会同步用户在代码中对初始化部分所做的更改!
3 S4 @$ m/ B" @% m! i3 Q综上所述,如果用户希望在整个项目开发过程中一直使用CubeMX进行初始化和对外设参数进行修改,一是需要严格按照注释的位置编写代码,二是不要在代码层面改动MX_XX_Init()的内容,对外设初始化参数的修改要在CubeMX中进行。
( j5 O/ ?- F9 j! W) b' B如果用户只是希望使用CubeMX生成一个工程模板,后期新加外设或修改时钟不再使用CubeMX工具,而是纯使用代码来实现,则不需考虑代码位置和CubeMX的初始化更改。; K) L0 j3 k$ ]! E- A3 C0 l- j# j5 {
jojnjxlnpom64047191307.png
% ^2 J5 N- t E. A
: w9 A5 P# E7 L4 d* o
Application/MDK-ARM文件夹:此文件夹下存放在.s启动文件,用户一般不需要进行更改。' g4 n- |1 [$ i# @ b0 j' h) n8 q: N
) n6 p6 U5 u+ X& S: M4 u
Drivers/CMSIS文件夹:存放CMSIS接口文件,用户一般无需关心。 ' K# V! C* g; L9 s" m
( T* r$ V2 T1 R4 x0 a6 b+ mApplication/User/Core文件夹:main.c里面有main函数,用户程序从此处开始执行;
3 [ y' `; ?7 Uxx.c关于外设的初始化函数MX_XX_Init()、外设结构体等就在此处被定义;
% ~1 m/ @. l3 bstm32xx_it.c 中断服务函数在此处被定义(其实也支持在别处复定义),用户可以修改中断服务函数来实现用户需要的功能;
- k5 V; {7 v* G1 N; qstm32xx_hal_msp.c 与初始化相关,如果用CubeMX进行初始化,一般也无需关心此文件。$ u% ?9 f* X& C- I3 _
# I% r$ H" v, f. W0 Y
Drivers/STM32xx_HAL_Driver文件夹:4 H/ {6 K% O4 h0 `4 L% d
HAL库文件夹,里面存放这各个外设相关函数,我们调用的函数,也大多来自此处。
7 i$ Y4 o8 W% H# z( a* b- e! x 8 @1 f6 S9 ~9 F3 \4 W4 S- k
更重要的是,这里面也包含HAL库相关外设的使用说明书,以stm32f1xx_hal_gpio_ex.c为例,在库函数的前面会有大篇幅的介绍,介绍如何使用这个外设,实现什么功能需要调用什么函数,非常贴心。
+ u: ~& S* ?3 N# b
g3oiwhzhcqy64047191407.png
|