|
下载st官方固件库" B v$ ?( S: _/ l- k$ { 搜索并下载固件库# I3 e4 ?9 g% | }* f* @ 9 N( ~# ]" |6 ?0 w. @7 a( ]% L
% x4 X8 Q1 V; x0 A1 y7 D1 i 使用固件库创建工程模版(以后不用每次配置了)% V% c( m+ j. k! ? 新建一个“工程模版”文件夹,里边新建三个文件夹 - s* j# \6 @& k, B 工程模板" b, H. q% a6 `1 C5 H; Q |----Project 自己编写的代码把下载的库中的\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template下的 % Q1 s8 o8 q6 K6 |8 o ~ main.c stm32f10x_conf.h: c. l; ~, \8 D2 D; u stm32f10x_it.c0 |- Y I6 x: h; a stm32f10x_it.h/ \) \5 z! k$ x: M; b9 Q8 R 复制进来9 f# F8 d/ `8 d, E* u9 |% I7 _( ~ |----Libraries 下载的库文件中的同名文件拷贝过来的' q* ^4 r; f4 C5 u7 H |----Output 存放编译完成后的机器码之类的 , w' l8 Y$ s( B7 ~! Q5 h 新建工程 然后打开keil5程序,Project -> New uvision Project... 3 N8 }$ V2 {' Y: L+ J6 V6 w) D F 目录选择为刚才新建的project目录,点保存会出现一个选择芯片的页面,选择所要用的芯片。; J. O' g# J7 R) e 我所需芯片在STMicroelectronics -> STM32F1 Series -> STM32F103 -> STM32F103C 下: R9 Z8 {7 e1 t* k 找到点击,然后OK。3 i) c- v* ?8 n6 i" g6 a! ^ 没有的话,先不新建工程,先在keil主面板上点击打开pack installer# A0 C2 R8 f# |7 j" Q: F; c - g5 G1 y) g6 i \1 N# ]
! M5 R6 _: y1 |+ V6 {3 g0 _ 左侧 Device选项卡下搜索STM32F103,在出现的列表中选中STM32F103C8(根据自己的板子选)7 ~* \" G' P. Y3 i( ~& ]+ b e/ O 1 O9 F8 |! L+ @ 右侧packs选项卡中,列出了Device Specific中有两个Keil::....点击安装这两个包。装好后退出来重新新建工程就可以看到STMicroelectronics下自己的板子的包了。 & A5 B) X/ u" [+ `9 C6 K5 `/ E( u 工程配置 添加工程组和组文件 . |& z8 J2 H, N8 s% U. Q
J( v' l6 `) H6 y 在Groups中创建分组: User 自己开发的程序代码& c3 j- a' g3 m: y5 g& j! A Deiver 管理STM32外设的驱动 CM3 管理CMSIS内核驱动$ B4 v6 _6 r3 \2 Q' F8 V I" R8 O Startup 管理MDK开发环境下与芯片相对应的启动代码5 B5 H X$ `# E9 o3 Q& B( L 在Files中加入文件 USER:project中的main.c\stm32f10x_it.c0 x5 o/ V, y0 F) h; T6 V Driver:Libraries\STM32F10x_StdPeriph_Driver\src下的所有.c文件 {: f& X( n$ W& k% Q8 n( w CM3 ibraries\CMSIS\CM3\CoreSupport 下的core_cm3.cStartup:Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\startup_stm32f10x_md.s/ \9 K; @* r: a( l (这个目录下的一堆.s文件对应的是不同容量的芯片,stm32f103c8对应的是md后缀的)- B" P! `3 g' e8 Z9 k/ b5 n, S ?# g5 e* y2 x6 E target选项配置 G+ m \) {2 X6 `
$ d. v0 l9 R+ E b5 B! x 1.Target选项卡中ARM Compiler选择版本5的编译器3 @* c7 q8 h0 G* E3 J3 G. w5 A 2.Output选项卡将Create HEX File选上,output路径选择为刚才创建的output文件夹d r/ T, j! E2 h" b$ b4 N# `! p2 N 3.C/C++(4C6)选项卡,在preprocessor Symbols的define中写两个宏定义: " ^8 H6 l: V8 O USE_STDPERIPH_DRIVER,STM32F10X_MD(中间是逗号),第一个宏定义是说使用固件库进行开发,第二个说的是芯片容量,分为LD,MD,HD,对于stm32f103c8来说是MD。3 C+ E8 U8 Y! N ) v C2 f1 |" [! c) U$ ?' Z# p 然后在include Path处,点击后面的三个点,把Libraries文件夹中的路径配上,分别为 9 S9 N! b3 K( e1 f7 f8 @. ] Libraries\CMSIS\CM3\CoreSupport Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm Libraries\STM32F10x_StdPeriph_Driver\inc Libraries\STM32F10x_StdPeriph_Driver\src Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x0 H; L. a0 T! a9 ~( q5 _$ \
4. debug选项卡右上角的debugger选择为ST-Link Debugger$ Y# y7 p* U2 p9 j5 {0 O 接线正确的话,插上stlink后点settings会在SW Device中出现stlink设备 - e/ F5 V7 u' t+ R t
1 Y% d1 W6 ]7 W' g
测试& S+ a3 q, u# P2 y$ O9 U 打开main.c文件只留空循环 ' ^- b O5 L) E" x! ?: ?
运行程序, Z" o9 u: F# r! J5 _
0error且生成了target就是正确的,否则排除error , k: n) K( Q' [+ p1 e* z 使用STlink烧录程序 stm32boot0置1 boot0是1的时候可以调试,0的时候程序运行2 |* ]5 `# B t2 [! n ) `# J+ u0 i, H; s' I 对应引脚连接 stm32-STlink& l- U8 m" ]/ t8 \ 3.3v-3.3v6 S4 x- x5 M/ N* `3 w9 _- e" ` + k6 r; |9 S/ ?! R! D) v swio-gnd swclk-swdio & t3 i$ F! }6 l0 k. H gnd-swclk ———————————————— 版权声明:qqq2018 如有侵权请联系删除 " P& _* r" ?9 O$ {$ ] " a8 y0 ^9 Q6 J# n) D 1 U% `" l! X( Z2 U |
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之继电器模块
微信公众号
手机版