STMCU小助手
发布时间:2022-5-3 13:07
|
新建STM32工程+ U9 j0 e; Q9 i2 F5 r 步骤一:创建工程模板文件3 b4 ~. z- V. O. O$ M) L! I5 K 1.新建一个文件夹 template N8 T' Y U) S' G. B6 { + ~9 O# X; s% |- a' Z 2.在文件夹template里面新建六个文件" }6 p# O) B( \, E F (1)CMSIS: 存放内核驱动程序和启动引导文件9 Q1 r$ a4 I) i: W7 T M9 ? (2)FWLIB:存放库函数文件" q+ Q. }. ^# w0 v: b (3)Project:存放工程文件 (4)User: 存放用户程序(主函数). I% C0 I& p& G f4 { + D6 H/ D1 B; i 4 ]: d7 D# T1 Z) j3 T1 n 效果图:& t5 A9 a4 ]. j F4 c: `
步骤二:导入stm32固件库! D; ?& q2 g# O5 {! s STM32固件库的下载方式,在文章开头有链接。 # l, }( K# I- q: ? 1. 打开STM32F10x固件库文件4 u# P+ p' j. {2 E1 C7 m
/ a' q# h3 B$ W" h# s1 z0 u0 v 其中需要用到的两个文件:Libraries和Project。0 t+ H% W' b( h7 D P. @! O/ {% L0 w4 i 2. 导入文件到 CMSIS 文件$ n# ^3 f* h6 k- a) ~' S9 o (1)导入内核驱动程序: a6 N6 ]! x, r; P0 p& W0 N
$ i( I1 [, i* D1 n7 ]4 a STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\CoreSupport 中的两个文件复制到CMSIS文件中。 ; k0 B- l5 O- V; Z) ^1 m (2)导入启动引导文件 STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm 中的所有文件复制到CMSIS文件中。3 Z" S: y7 \' m) p ) T+ B0 q- M% A* F# w/ Y! h. |
启动引导文件名的英文缩写的意义:* u- V- [% ?0 k) E- Q9 t3 E( X cl:互联型产品,stm32f105/107系列。 vl:超值型产品,stm32f100系列。3 j N/ R1 ~" k4 W+ q1 X xl:超高密度(容量)产品,stm32f101/103系列。 ld:低密度产品,Flash小于64KB。5 Y. r4 s. U- W6 y+ g- z( f md:中等密度产品,Flash等于64KB或128KB。2 q4 ^& z! u4 ~; y hd:高密度产品,Flash大于128KB。 (3)最后CMSIS 文件效果图 6 }/ \ D! i& t: V
3. 导入文件到 FWLIB 文件8 d3 v- h) D( Y& j h. ? STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\STM32F10x_StdPeriph_Driver中的inc和src文件复制到FWLIB文件中。+ N! y3 R3 R* s! p* ?) K: E7 N! [ 0 r8 A$ n6 Q2 }0 ]- z 最后 FWLIB 文件效果图9 P: B) g5 Q; t! q' F" Z4 @9 N0 h
4. 导入文件到 User 文件, O" Y* \3 p' e/ `$ R m5 p STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x中的以下三个文件复制到 User 文件中。& M3 ~" S" ?5 a : ?& O+ M7 A% q' o" N
+ R* z8 G8 `# R STM32F10x_StdPeriph_Lib_V3.6.0\Project\STM32F10x_StdPeriph_Template中的以下四个文件复制到 User 文件中。- a: ?: ~! G8 o$ r" b6 X
: A* H4 N* e, _1 N 最后 User 文件效果图6 F3 u8 ^/ |3 [. B
步骤三:新建STM32工程 1. 新建工程 # n( g( t n+ Y7 l/ ^2 [+ _( s* X
6 l% U( o [( W; u9 V! K. ^ 将工程文件建在 Project 文件中 {) z$ G" A* T4 ~5 w3 C- s* l1 a9 R3 l 3 I v: e A' q+ c$ [
$ q6 f; J1 `) A, G1 t& ]' a6 s 2. 选择 STM32F103C8 芯片- K" r6 n* N; ^. K
) p% w" @, D- x, S/ p6 n 确定之后跳出一个窗口,直接关掉' ]# }% T$ @! J
3. 添加工程文件到Keil_5工程中 ) x# f4 R2 d9 E2 a& a, J6 B- |- z& o
/ _4 `" y1 e& T4 D8 b 新建CMSIS,FWLIB,User 三个文件,然后把刚刚复制在对应文件夹下的文件添加。 * ]4 `& I7 v# N) ]" O2 M
. D3 o7 J X( f) |, n! D7 E 因为选择的芯片是STM32F103C8——64k内存,所以选择 md 启动引导文件
4 M l5 L: W$ U& `/ f) Z& t( {
; U& U) Z5 x0 C& s, p 最后添加成功# @( `/ t v, @# F
4. 添加路径和宏定义 点击魔法棒,选择 C/C++ 添加宏定义:USE_STDPERIPH_DRIVER, STM32F10X_MD" h5 h; [5 @, w! {8 b 注意:这里选择的是 md 启动引导文件,所以宏定义是 STM32F10X_MD
1 L! w! g# n( W, c- n1 J: Z 添加文件路径
5. 选择默认ARM编译器版本
3 }/ K& \7 \' c+ b. F j7 v 6. 编译运行成功6 p2 a0 Y5 O6 N9 x, ]
7 `5 b; [, M$ x6 y: B 问题解答 在评论区看到有人遇到以下问题: - p# U; y0 z5 w# R 问题1:( a' j9 B* A% J& w u7 V- t; ^ 出现750个以下错误 …\CMSIS\core_cm3.h(173): error: #20: identifier “uint32_t” is undefined# d3 r/ u; R& U
是因为 uint32_t、uint16_t、uint8_t 这三个没有定义。 正常这三个是定义在 stdint.h 文件中。 ( P) @6 E _% \. m, X& l
2 j1 M: T0 X! k$ X& h5 M# I 没有定义这三个uint32_t、uint16_t、uint8_t,说明没有#include <stdint.h> 问题1解决方法: 正常在 core_com3.h 文件中第 90 行应该有#include <stdint.h> 这行代码。 没有的,自行加上#include <stdint.h> ,便可以解决问题!% P: R! J; s- e E + @7 Z: V( p5 ?" B: L5 B7 z5 n . J- H, f# R* E+ R2 ~
|
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之继电器模块
微信公众号
手机版