
针对32开发,最理想的开发IDE还是keil,keil前几年被arm收购,对本家芯片的支持无疑是最好的。 下面介绍一下,keil环境下针对stm32开发环境的配置,软件的安装、破解这里不再赘述,不明白的可以百度。 $ t+ C8 j( L3 w7 C" C STM32开发分为,寄存器版本开发还有库函数开发,依据库函数搭建的环境能运行寄存器版本例程,+ |! }* Q9 U1 G" R- g 寄存器版本开发环境,不能运行库开发的例程。, `2 `' H I7 ]' \1 N0 B 工作中为了方便代码移植,建议选择搭建库环境作为开发环境。 下面介绍一下模板工程创建,工程创建完毕每个工程均可以在此基础上进行开发, 0 C5 f0 D( w7 q% Y: } 第一步:下载官方库 stm32固件库V3.5 里面包含官方固件库源码,还有官方参考板的参考例程。3 z6 A- \! C, r1 h4 b 4 I2 ?1 o" R" y: l& V$ ]7 b 对于开发环境搭建而言,我们主要关注其中固件库源码以及针对32单片机的启动代码、中断管理等文件。3 b+ _# T. W9 B 5 F/ U' c( ^, h; c: d% G 固件库! y: h+ R! W* o: D& h6 G% K ![]() 1 ]" V" `- n3 U) ~ p8 H 解压后查看文件列表 ![]() 4 ~2 s6 x. ]# \3 h 那么我们新建自己的工程模板。4 H, ]( t* M% P, D4 Y* b 首先新建个文件夹,命名依据自己的喜好4 C2 ^, ?; V7 M ! n5 D; T/ K' _2 B$ p3 g" U3 \+ N ![]() 这里我命名为 STM32Project * m, {! v4 v; F& O( Z+ i" N& _$ H 在文件夹内部新建四个文件夹 ![]() 5 L( ~# W( S3 m$ a \$ e 第一个文件夹ASM存放与单片机相关的汇编文件,里面是与单片机启动相关的内容 9 e* Q) |; i/ O3 l STM32最新固件库v3.5\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm ![]() 这个根据自己单片机的情况选择,选择方式通过后缀,一般md中等容量,hd大容量··· ···主要依据容量区分。也可以全部复制到ASM文件夹* h- Z# F) `7 p9 ]6 t . ~2 K- N( D9 X( T+ @6 l 在创建工程时在工程内部进行选择。这里我们全部复制过去。 第二个文件夹内部LIB内部存放固件库源码与头文件" q+ w' T) Z' ]' m; `2 K4 O1 X 源码头文件的位置在 STM32最新固件库v3.5\Libraries\STM32F10x_StdPeriph_Driver 路径下 将src inc两个文件夹复制到LIB文件夹下" M4 ?4 U0 v- i2 [) z 0 W [" i# s( X' G; j 第三个文件夹 System 存放与内核相关或者中断入口定义等相关的文件,还有一些重要的头文件 ![]() 这些文件在 STM32最新固件库v3.5\Libraries\CMSIS\CM3\CoreSupport* {* X4 H+ D6 }7 j( O8 H STM32最新固件库v3.5\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x: W- D; U4 q. h: ? i STM32最新固件库v3.5\Project\STM32F10x_StdPeriph_Template 路径下可以找到6 z8 t/ O& Q' e 进行到这里工程所需要的文件已经准备齐全,接下来就进行工程的软件配置,打开keil(我用的是5版本的) I! v8 b; u7 \' c8 O% `0 B- O" W ![]() 点击新建工程,选择路径刚刚新建的工程文件夹,我新建的工程文件夹叫STM32Project。文件名就是工程名称,这里2 X6 J# B# {9 M 我填写的名称与文件夹名称相同STM32Project ![]() 点击保存后出现芯片选择界面,这里我选择的型号是STM32F103VE 大家可根据自己实际芯片进行选择。 ![]() 点击OK 下面还会弹出一个窗口,这是自动配置相关内容,我们这里直接点击ok,不进行选择任何东西,稍后进行手动工程配置/ G* i& A# ~0 |9 X ![]() l' `) V( M/ M N' J 点击项目目录规划按钮,进行工程目录配置,让工程开发条理清晰! \6 K) ]/ ~' M7 G3 ?: g% _6 \ `+ o7 z+ J$ V2 T3 e$ y ![]() 处理方式与建工程文件夹下的内容基本一致,需要向其中添加一些文件4 {/ ~% S# N. k! ?" R" u4 i# W ![]() 添加完成后点击OK ![]() 工程预览如下,ASM文件夹依据我使用的芯片,选择xxxxhd.s,LIB文件夹选择最基本的中断管理、IO操作、时钟配置三个源文件+ W; y" U) h( G (例如ADC 串口等没有添加,可根据开发情况选择性添加),这三个文件因为每个工程都会用到,所以添加了这三个文件。 System目录将所有.c文件添加进来即可。也可以将所有文件包含进来(.h)。方便工程配置。 7 B) L6 e+ R+ h2 Y 接下来进行工程软件配置,点击目标配置按钮 m6 p' w) _' Y/ e, z ![]() 5 X+ a( T& S5 ?# ]: D 在output选项中,如果采用串口下载勾选生成Hex文件选项,如果采用ST-Link下载不用勾选' O: I3 |; `: v* H8 T+ w/ p9 \* n 8 O. Q6 A2 w$ I" T7 b ![]() 0 O% Q# s( J8 a, B# K3 z! b1 F 在c/c++选项中,需要做两项工作,1、配置宏(宏第一个内容根据单片机容量进行填写),2、选择头文件的路径,点击保存 ![]() 在Debug选项中,选择调试工具STLink 或者JLink等等,点击旁边setting按钮勾选Flash Download选项中的Rest ang Run选项,点击保存 ![]() 在Utilities选项中去掉调试之前更新目标选项,点击ok ![]() 工程配置完毕,验证一下工程配置。 点击file,新建文件保存在工程目录下USR目录,命名main.c,在目录树USR目录分组双击添加main.c文件,将main.c包含进工程: l- F- ^ c& a+ u# d9 `/ p % p5 T' u" a) f. H 在mian.c写入实验内容,编译进行验证。" U9 t3 [, f# x" } ![]() 输出0 错误 0警告工程搭建没问题* A+ P/ n7 ?. y9 c1 s 采用库函数开发时,最好是用到那部分内容就将哪部分内容添加到工程,例如用到adc就把adc.c添加到工程,不用全部添加,固件库模块声明在stm32飞0x_conf.h中/ u$ p9 _4 R5 `8 @1 P% } ! ^, s: d: i( w' E: {. P* r 没有用到的部分可以注释掉,这样在变异程序时可以加快编译效率。 3 O( M; g* N( w* P. X6 Y! f % S7 l& C4 G% x# Q1 x . i# H6 A2 T5 A4 f |
【经验分享】STM32F1 GPIO工作原理
【经验分享】STM32F0xx_DMA收发USART数据配置详细过程
【经验分享】STM32F1和STM32F4 区别
【经验分享】STM32F1系列之常用外设说明
【经验分享】STM32介绍
【经验分享】STM32F1x系列——Flash 模拟 EEPROM
【经验分享】STM32F1在MDK下新建标准库函数工程
【经验分享】stm32f1的存储器与复位
【经验分享】STM32F10X-架构
【经验分享】stm32F1 us延时函数