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

STM32初学笔记(二)新建项目

[复制链接]
nenoyaji 发布时间:2020-12-18 11:16
STM32初学笔记(二)新建项目
6 c8 @' t% ]8 c
9 e  w, V% Q; k
后期所有项目的建立均基于keil5开发环境进行创建。
" [& a( \2 b: i8 x3 k
新建一个项目大概有三种方法:
(1)使用keil5的RTE(Run-Time Environment)配置环境(默认标准库);
(2)使用STM32CubeMx图形界面配置,生成的代码是基于HAL库和LL库的,然后使用keil5开发;
(3)从官网自行下载固件库,搭建工程。有兴趣的朋友可以分别尝试一下。

$ {. W; W! ~2 g% {, R
本篇文章使用第三种方法,主要内容如下:

+ a9 d) F$ Q4 A8 b
1、下载固件库
2、建立项目工程文件夹
3、新建项目
6 F# t+ u; y- R* h' g( R: h
1、下载固件库
登录ST官网下载固件库,选择工具与软件->嵌入式软件->STM32微控制器软件->STM32标准外设软件库,选择对应系列的固件库进行下载。
4.1.png
" v. e. H0 Q/ c8 h: G0 Z
4.2.png
4.3.png

9 h  O2 h; m4 z0 t; ^9 {- r3 x/ L( H- N+ @+ l, U
解压后包含以下文件:
4.4.png
2、建立项目工程文件夹
新建项目文件夹,里面再建3个文件夹,CMSIS(存放内核函数及启动引导文件),FWLIB(存放库函数),USER(存放用户自己的函数),如图。
: Y: n% g/ u& {! R5 s# \7 U
4.5.png
$ c4 n7 {5 S; }- C$ W0 a$ y
将Libraries\CMSIS\CM3\CoreSupport中的文件复制到CMSIS中,再将Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x中的文件全部复制到CMSIS中。最终CMSIS中的文件如下图。
4,6.png
) o" J8 k2 M* l) c; F
将Libraries\STM32F10x_StdPeriph_Driver中的 inc和 src 两个文件夹复制进FWLIB文件夹。
4.6.png
* T( \, |. @) F* J' k6 E
将Project\STM32F10x_StdPeriph_Template中的这几个文件复制进USER。
4.7.png
- F$ m8 R: ^* W6 }

9 u- {/ k3 S/ R6 B. [
3、新建项目

8 C9 Q: g1 `# M' [# X) h
菜单中选择Project->New uVision Project弹出文件夹选择窗口,选择前面建立的项目文件夹,输入项目名称,选择保存。弹出单片机型号选择窗口,选择需要的型号,选择OK,弹出RTM配置窗口,这里选择Cancel。

. W1 T! p3 L! \+ Z5 R+ A
单击项目管理按钮(Manage Project Items)弹出项目管理对话框。
7 s$ n, B! c0 X1 k; j; m4 F; X

. {* X3 l) h, Y, C( F  t4 `
4.8.png

( k1 {; J: K+ ?3 v1 T- u  u  u
4.9.png

& ?# d  W2 h  E
配置完后的文件结构如下图。
, G0 J- a8 o) d1 n- k! ^9 _) N' M
4.10.png

$ ]( t* N% S' D8 N3 |3 W
FWLIB存放的是外设驱动的库文件,可以根据用到的外设进行添加,全部添加会造成编译速度慢,占用内存大,这里只添加了gpio和rcc的库文件。
对不同型号的STM32,需要选择不同的启动文件。ST提供了3个启动文件,适用于不同容量的STM32芯片。他们是:startup_stm32f10x_ld.s、startup_stm32f10x_md.s、startup_stm32f10x_hd.s。其中,ld.s适用于小容量产品;md.s适用于中等容量产品;hd适用于大容量产品。这里的容量是指FLASH的大小.判断方法如下:小容量:FLASH≤32K;中容量:64K≤FLASH≤128K;大容量:256K≤FLASH。
删除main.c文件中的内容,只留下一个空的主函数即可,然后添加自己的内容。

% P* |1 V0 B) G* D" B
单击选项按钮弹出配置界面,在Target选项卡中,配置晶振频率,然后切换到C/C++(AC6)选项卡中的Define输入框内输入STM32F10X_HD,USE_STDPERIPH_DRIVER,并在IncludesPath中添加头文件的路径。
4.11.png
4.12.png

% r9 Q* C  q1 ^- H6 y% G4 \6 z9 E) C9 m' j6 Y" v9 J  Q7 A
添加STM32F10X_HD和USE_STDPERIPH_DRIVER这两个宏是为了能够使用库文件。原因如下。
4 f. _1 w/ D: A) j( \- O$ E7 A* F
在stm32f10x.h中有以下语句:

, g& u0 Y7 o5 v4 F9 U6 m
4.13.png

2 ?+ j2 A7 L; y- z
: j6 w( z/ p" ~& \4 I9 c
* O9 h0 h- i0 p* j- u& I
可以看出,只有定义了STM32F10X_HD这个宏,才可以顺利编译,定义将会用到的与外设有关的宏。
4.14.png

3 M3 d" O8 V+ V; l: g2 }# ~+ z, R
只有定义了USE_STDPERIPH_DRIVER宏,才可以将stm32f10x_conf.h头文件包含进来,而这个头文件,将我们要用到的..\STM32F10x_FWLib\inc目录下的23个头文件都包含了进来!否则,我们无法使用..\STM32F10x_FWLib\src中的固件库。
! U- A6 L6 i$ N
至此,项目框架就搭建完成了,并完成了基本的配置。
由于不同的芯片型号和不同版本的开发环境,可能仍需修改一些其他的配置,先编译一下,若出现错误可以根据错误提示在浏览器中搜索解决方案,不同的人可能通过不同的方法解决编译错误,暂时不需要深究原因。
! G) x6 F+ U8 q; H' ]
: ~# p9 `: W* h$ n# [
9 v  Y" I* M. a7 x( A* a% M
文章出处:樊学谦  机械智者

- ]7 G3 I. c& E! R' ]! ?4 j3 m& T: q
赞 收藏 评论2 发布时间:2020-12-18 11:16

举报

2个回答
radio2radio 回答时间:2020-12-18 12:29:34
新建项目,谁还使用标准库? 标准库已经不再更新了,特别是新的芯片没有标准库可以用。# [# x3 t; g- x0 L9 \: h
Angel_YY_ST 回答时间:2020-12-18 13:44:24
提示: 作者被禁止或删除 内容自动屏蔽
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版