STMCU小助手
发布时间:2022-5-3 13:07
|
新建STM32工程 步骤一:创建工程模板文件 1.新建一个文件夹 template : j! k: X1 ]5 \: Q( u W; b 2.在文件夹template里面新建六个文件 M J" b6 G$ b" u (1)CMSIS: 存放内核驱动程序和启动引导文件* C$ o6 i( Q, X' K8 w5 K1 P1 k (2)FWLIB:存放库函数文件 (3)Project:存放工程文件! B7 I5 h/ S" X. }( D7 s (4)User: 存放用户程序(主函数)8 j* ~ J; a( v4 B- E& X" k& G8 Q8 a ~ 1 J. d9 F- q3 E2 k+ @: l" `) r8 d7 g 效果图: ; ?9 c7 U J0 |4 N' e
! v8 `3 z3 K' r( s9 ]- U 步骤二:导入stm32固件库 STM32固件库的下载方式,在文章开头有链接。 ' F. O5 x6 x9 Q# x# O 1. 打开STM32F10x固件库文件+ U8 S) f/ `; b" z) x
其中需要用到的两个文件:Libraries和Project。 2. 导入文件到 CMSIS 文件 (1)导入内核驱动程序0 W d; z5 I9 ~ 8 C, b& c8 k9 D
STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\CoreSupport 中的两个文件复制到CMSIS文件中。 7 u) k+ I/ z2 O0 Q (2)导入启动引导文件 STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm 中的所有文件复制到CMSIS文件中。# A7 @8 p! B0 B$ ?3 Z 1 A0 b' h6 H5 i
: X* Q$ e, N0 I 启动引导文件名的英文缩写的意义:+ r1 ~% o5 E2 S cl:互联型产品,stm32f105/107系列。; |: v% T5 W7 S) T; H" e1 x vl:超值型产品,stm32f100系列。 xl:超高密度(容量)产品,stm32f101/103系列。 ld:低密度产品,Flash小于64KB。 md:中等密度产品,Flash等于64KB或128KB。 hd:高密度产品,Flash大于128KB。 # P( H# Q1 ^( `3 L8 x (3)最后CMSIS 文件效果图' D; n) p: Y1 ?+ U % K9 S6 B) F0 b+ c9 k) p4 A! y5 r b
3. 导入文件到 FWLIB 文件 STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\STM32F10x_StdPeriph_Driver中的inc和src文件复制到FWLIB文件中。& R( o1 B6 Q' r 最后 FWLIB 文件效果图 & f F0 J9 }/ i$ a |% Q
( ?" J" W+ N' w! K0 Z1 J: G+ z8 e1 x 4. 导入文件到 User 文件" |5 O8 C$ |6 V- d( L. } Q STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x中的以下三个文件复制到 User 文件中。9 j5 i5 m) V* a9 V( P, P( c
8 \8 A& |+ r7 `2 B" e6 X+ ^0 U STM32F10x_StdPeriph_Lib_V3.6.0\Project\STM32F10x_StdPeriph_Template中的以下四个文件复制到 User 文件中。
最后 User 文件效果图
步骤三:新建STM32工程7 T1 o! y' n7 Q; d) v. y 1. 新建工程 / K$ V g" U6 W4 e
1 n" T& |* z8 P! A3 k$ R( t+ ^ 将工程文件建在 Project 文件中- w9 [7 C) {6 [( I' @: X E & E2 b& x+ l2 [- h- q
2. 选择 STM32F103C8 芯片
确定之后跳出一个窗口,直接关掉 " `" u3 o5 {& E! m
( a2 D1 O% g Y 3. 添加工程文件到Keil_5工程中) m- B$ Z9 l9 N: x5 H7 J
新建CMSIS,FWLIB,User 三个文件,然后把刚刚复制在对应文件夹下的文件添加。7 A* o- A- F0 s( P " w k; @4 H2 X' n: j* Y* Q! _
4 K. m) ^/ m% L4 e 因为选择的芯片是STM32F103C8——64k内存,所以选择 md 启动引导文件7 P7 j2 u9 L6 p" t% W2 z + a# m& S' u( j" ^. X
) F! N { m' z: J. L/ K 最后添加成功
% k" A" t( s! E0 { 4. 添加路径和宏定义 点击魔法棒,选择 C/C++2 R& C4 S1 |: P. z 添加宏定义:USE_STDPERIPH_DRIVER, STM32F10X_MD 注意:这里选择的是 md 启动引导文件,所以宏定义是 STM32F10X_MD3 s' N2 h# Y, u3 }! \# A/ n8 B * M1 ^- c, {: Z g; J- r
添加文件路径5 R. ^0 A, h2 J& f# r - C3 m. _0 Z |2 X$ K( u6 C2 J
( c% b9 i% c7 |( Y* w( \ 5. 选择默认ARM编译器版本' U2 r3 V+ f* {# Y! N' i
6. 编译运行成功
; W5 G5 A5 y& b9 u4 X! v 问题解答7 l) Z2 J. ]# U 在评论区看到有人遇到以下问题:* F! F0 Q" V* O. C' x e: M7 P* |7 H+ }7 q9 B% \ 问题1: 出现750个以下错误 …\CMSIS\core_cm3.h(173): error: #20: identifier “uint32_t” is undefined / a; d6 N3 J( q) R' ?/ Z1 ~/ o
是因为 uint32_t、uint16_t、uint8_t 这三个没有定义。0 x1 U+ a' l, t8 p- g: r2 G 正常这三个是定义在 stdint.h 文件中。 * {: E. U9 @# A
$ R% T* ]0 i. A3 F/ D5 f0 ~$ t& m 没有定义这三个uint32_t、uint16_t、uint8_t,说明没有#include <stdint.h>+ a' H! A. R/ V" L/ a! _ 问题1解决方法:4 c: ?! p+ u: `; y, Q: S4 Q; Y 正常在 core_com3.h 文件中第 90 行应该有#include <stdint.h> 这行代码。 没有的,自行加上#include <stdint.h> ,便可以解决问题!: n$ }& F! G1 s! ]* `; ] 5 y: U# E6 m' T/ m. ?5 ~ - c) h) u5 g4 n- K! j: l+ T) a # Y3 s! i/ q% D: E% J9 a
|
DMA 原理从 0 到 1:为什么它能解放 CPU?一文讲透 DMA 的工作流程
【福利三:雨露均沾·逢7狂欢】之五:STM32系统时钟PLL故障排除1例
【福利三:雨露均沾·逢7狂欢】之三:AI帮我查BUG
福利三:雨露均沾·逢7狂欢】之二:STM32F407VG串口通信乱码故障的排除
基于STM32F103的I2C主从机通信
OpenBLT移植到STM32F103战舰开发板上适用于所有STM32F103系列的Bootloader
TFT LCD 与 FSMC 的硬件连接大容量 STM32F10xxx FSMC 接口
单片机:初学者该了解的STM32F103基础知识
2025软件工具兔哥知道
STM32之继电器模块
微信公众号
手机版