首先下载STM32F10x_StdPeriph_Lib_V3.5.0,许多论坛上有,下边也有链接,这个版本算是比较新的
貌似11年4月左右出来的,里边东西挺全乎~
首先看看解压之后的目录结构吧~
里边有如下文件夹:
_htmresc : ST的 logo
Libraries: 重要的文件均再次文件夹,包含STM32的系统文件和大量头文件,也就是库文件了。
子文件:CMSIS :一些内核、内部时钟等驱动,ARM Cortex™ 微控制器软件接口标准(CMSIS:Cortex Microcontroller Software Interface Standard) 是 Cortex-M 处理器系列的与供应商无关的硬件抽象层。 使用CMSIS,可以为处理器和外设实现一致且简单的软件接口
子文件:STM32F10x_StdPeriph_Driver :是意法半导体公司为其芯片所加外设开发的标准驱动文件,里边一个含有 .h 文件夹,一个含有 .c 文件夹 分别对应 ADC DMA 等等外设,这些标准库函数是我们的开发可以脱离 强硬件相关的一些 东西,而且里边注释完整 方便阅读理解。
Project: 包含大量外设的例程,和各个软件版本的评估版工程模板。
KEIL MDK对应的就是 MDK-ARM 文件下的工程模板。你也可以利用这个工程模板来修改,得到你自己的工程模块。
Utilities: 就是ST官方评估版的相关开发文件:对于自己的板子做的模板也不会用到。
stm32f10x_stdperiph_lib_um:这个是官方库说明文档,里边讲解的很细致,有点英文水平的可以参考,毕竟表述会更加准确,翻一翻有好处。
库文件就简单介绍到这里,下面开始建立我们的MDK模板!
首先在桌面建立建立文件夹 ST_MDK_Template
然后打开文件夹,在里边建立一下文件夹,便于将固件库整理并且放入相关文件夹
Libraries : 这个文件夹是直接将 固件库里边的主目录下的 同名文件夹复制过来即可,因为里边均为库函数 编辑工程是不会做修改,所以不要修改该文件夹的只读属性。
Obj : 用来保存编译链接时产生的一些中间文件,还有最后的目标文件.hex 也会生成到此目录下
User :该文件夹主要用来存储用户工程需要的一些文件,如main.c 等,下边为我在这个目录下的一些文件,其中 main.c std_periph_conf.h std_periph_conf.c 三个文件是从工程当中建立的,其余三个是从固件库当中拖过来即可,三个固件库文件位置如下:
stm32f10x_conf.h : \STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\ 该文件是一个用来设置 是否包含相关外设(adc DMA 等)头文件的预定义头文件
stm32f10x_it.h stm32f10x_it.c : \STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template\ 这两个文件为一套 用户用来定义外部中断函数的文件,需要用户根据需要修改。
文件均已经准备好了,下面就可以进入MDK 当中进行工程配置:
双击打开Keil MDK ,点击新建project ,如图,将保存目录选在刚建立好的最上层目录中
然后选择你所使用的芯片 我的是STM32F103R8系,确认之后完成建立如下图:
当出现如上提示问是否添加启动文件时,选择否,因为我们会选择固件库自带的启动文件。
然后在Target1下建立几个group ,project 目录下 右键 add group.. 新建以下 3个group:
sys:用来指向系统启动以及时钟初始化等文件
src:用来指向固件库里外设源文件
user:用来指向用户建立的文件中断函数保存文件(stm3210x_it.h \ .c)
开始向工程当中添加文件~
点击sys 右键add files to group 'sys' 分别添加当前项目所在文件夹下的以下文件
文件 目录
startup_stm32f10x_md.s :ST_MDK_Template\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\
说明:在以上目录有 许多.s 结尾的汇编启动文件,但是添加时只需要选择你的芯片对应的启动文件,选择依据为你的芯片的ROM容量 分为三种
小容量(ld):FLASH容量大小为小于等于32K
中容量(md):FLASH容量大小为64K-128K
大容量(hd):FLASH容量大小为256K及以上
system_stm32f10x.c :ST_MDK_Template\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\
说明: 这个文件用来初始化芯片的系统时钟
core_cm3.c :ST_MDK_Template\Libraries\CMSIS\CM3\CoreSupport\
说明:保存着系统最核心的一些函数调用,均为汇编编写
点击src 右键add files to group 'src' 分别添加当前项目所在文件夹下的所有.c文件,以上文件均为外设驱动文件
ST_MDK_Template\Libraries\STM32F10x_StdPeriph_Driver\src
点击user 右键add files to group 'src' 分别添加当前项目一下文件:
stm32f10x_it.c \\ST_MDK_Template\User 中断函数所在文件
点击新建文件,在user文件夹下建立main.c文件 并且用同样的方法添加到工程中的user group 中 。
将如下代码复制到main.c当中,已备调试,main中实现的是初始化PB0,并拉高该端口电位。
#include"stm32f10x.h"
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* GPIOD Periph clock enable */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
/* Configure PB0 in output pushpull mode */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB,&GPIO_InitStructure);
void GPIO_SetBits(GPIOB,GPIO_Pin_0);
while(1);
}
至此,完成了全部固件库文件的迁移,下面需要在在当前项目中进行一些配置
右键单击Target1 ,出现 options for target ....
点击output 标签 点击 select folder for objects 将目录指向新建的Obj文件夹,以使的产生的中间文件均保存在该文件夹下,保持主文件夹的“干净”
点击C\C++ 标签 在Define 文本框输入 两个预定义的量 STM32F10X_MD,USE_STDPERIPH_DRIVER 注意 两个预定义的量中间使用逗号(英文输入状态下)隔开
仍然在C\C++标签下 在Include Paths 文本框当中 添加当前文件夹内所有.h 文件所在目录,以便编译器查找时搜索各级目录,具体步骤不讲,将目录列在这里,需要的可以直接复制,但是前提是按照我的规则命名文件夹,否则你懂得。。。:
.\Libraries\CMSIS\CM3\CoreSupport;.\Libraries\STM32F10x_StdPeriph_Driver\inc;.\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x;.\User;..\ST_MDK_Template;.\Libraries\CMSIS\CM3
完成以上步骤呢,一个模板就建好了,点击Build 或者 按 F7 快捷键编译 通过 ~~~
大家可以保留 以后 都可以直接在此基础上 DIY,这样进度会快一些,请各位大侠拍砖~~
还有 我编辑好的 代码打包上传到iask 大家可以点击 此 下载 固件库V3.5 点击 此下载 MDK工程模板