By smile跃日少年
看了好多keil mdk利用stm32固件库为stm32f10x新建工程的文章,终于弄了一个自己喜欢的工程模板。
最终的样子是这样的
Project一栏:
Template是工程名字,模板的意思。工程下添加四个组groups,分别为: USER,用于存放主函数和自己定义的函数;
Startup Code,用于存放启动文件,hd表示高密度产品; CMSIS,用于存放配置系统时钟文件;
FWLIB,firmware libraries(固件库)的缩写,用于存放官方标准外设源文件。
工程中的groups的文件是后添加进去的,它与电脑中实际存储的位置没有关系,添加的时候能找到即可。
实际新建工程:
打开keil5,默认是空白,菜单栏中选择Project中的New uVision Project。
选择工程路径,命名工程名。
单击保存,选择器件device。
单击ok,弹出用于配置device的窗口,包括启动文件,外设等等。这里利用固件库来新建工程模板,单击取消即可。
得到:
这时,再看工程保存的位置,keil5默认建立下图的文件夹。其中:Lstings用于保存链接时产生的中间文件;Objects用于保存编译后产生的下载到单片机的Hex文件。
我们再新建两个文件夹,为FWLIB和USER,分别用于保存固件库文件和用户文件。
再看V3.5的固件库,将Libraries中的两个文件夹拷入FWLIB。
再将“模板\\FWLIB\\CMSIS\\CM3\\”路径下的两个文件夹拷到CMSIS文件夹下,其余无用的删除。再将“模板\\FWLIB\\CMSIS\\DeviceSupport\\ST\\STM32F10x\\”路径下的所有文件拷入“模板\\FWLIB\\CMSIS\\DeviceSupport\\”,其余删除。
打开startup文件夹,里面有四个编译器的启动文件,我们需要arm的。把arm中的文件拷出来放到startup文件夹,其余无用删除。
把“Project\\STM32F10x_StdPeriph_Template”路径下的三个文件拷入USER。
stm32f10x_conf.h文件拷入“\\FWLIB\\CMSIS\\DeviceSupport\\”,得到:
至此,固件库copy已经完毕,接下来往groups中添加相应的文件。 单击 添加groups
将各个组的文件添加进去。keil只能识别一级目录下的文件,这个要注意。 接下来还要添加一些变量和编译路径,不然会报错。
1.单击 ,在C/C++选项卡下,Define定义STM32F10X_HD,USE_STDPERIPH_DRIVER。
在Include Paths下添加
完成后,将main.c文件中的程序换成自己的程序,再编译就不会报错。 示例程序如下:
#include\"stm32f10x.h\" void Delay(unsigned int i) { unsigned int j; for(;i>0;i--) for(j=0;j<1000;j++); }
int main() { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructure); GPIO_SetBits(GPIOB,GPIO_Pin_5); while(1) { GPIO_ResetBits(GPIOB,GPIO_Pin_0); Delay(3000); GPIO_SetBits(GPIOB,GPIO_Pin_0); Delay(3000); } }
smile跃日少年
因篇幅问题不能全部显示,请点此查看更多更全内容