库函数模板步骤
1、新建文件夹
随便新建一个文件夹,里面放6个文件
1、CORE
2、OBJ :存放生成的hex文件,也可以不要默认会生成在USER/object里面
3、USER :存放自己的项目文件
4、FWLIB
5、SYSTEM :存放原子哥提供的一些东西
6、HARDWARD :存放以后自己扩展的代码项目
2、创建项目
我这里用的keil5,stm32Mini,选择stm32f103RC.
3、直接说要添加的东西
3.1、找到固件库
在stm32参考资料里面STM32参考资料 STM32F1xx固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries;
将STM32F10x_StdPeriph_Driver里面的inc和src,复制到FWLIB里面
3.2、Libraries\CMSIS\CM3\CoreSupport,里面的东西复制到CORE里面
里面的core_cm3.c和core_cm3.h,拷贝到CORE里面。
3.3、Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm和Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x里面的东西复制到USER里面
1、Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm (一个)
这里面的汇编启动文件startup_stm32f10x_hd,后缀可能带个.s,可能没有;
2、Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x (三个)
这里面的stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h
3、在Libraries同一目录下,找到Project\STM32F10x_StdPeriph_Template (四个文件)
main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h
4、keil5里面还要的配置
4.1、添加文件
FWLIB:添加inc里面的所有东西
4.2、点开魔法棒,配置hex输出文件
4.3、引入头文件,配置C/C++
STM32F10X_HD,USE_STDPERIPH_DRIVER 在第一个框框哪里填这个
5、main.c里面的测试程序,循环点亮两个灯。
/*这是抄的正点原子自己的点灯程序*/
/*有个奇怪的现象,加上return 0; 还有少一行会报警告*/
#include "sys.h"
#include "delay.h"
#define LED0 PAout(8) // PA8
#define LED1 PDout(2) // PD2
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD, ENABLE); //???PB,PE??????
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //LED0-->PB.5 ???????
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //???????
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO??????50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); //?????趨?????????GPIOB.5
GPIO_SetBits(GPIOA,GPIO_Pin_8); //PB.5 ?????
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //LED1-->PE.5 ???????, ???????
GPIO_Init(GPIOD, &GPIO_InitStructure); //??????? ??IO??????50MHz
GPIO_SetBits(GPIOD,GPIO_Pin_2); //PE.5 ?????
}
void Delay(int n)
{
int y = 0;
while(n--)
{
for(y = 0;y < 648;y++);
}
}
int main(void)
{
LED_Init();
while(1)
{
LED0 = !LED0;
Delay(600);
LED1 = !LED1;
Delay(600);
}
}
结束
辛辛苦苦的建好模板了,可以保存一个备用,以后就不用重复建模版了