一、新建文件夹,重命名(你想命名的名字),我这里命名为Template
二、在上一步新建的文件夹中再新建文件夹命名为USER,(代码工程都放在这个文件夹下面)CORE,STM32F10x_FWLIB,OBJ文件夹。
三、打开MDK菜单:Project->New Uvision Project,然后将目录定位到刚才建立的文件夹Template之下,命名为Template.
之后会跳出来一个界面,
点击STMicroelectronics左边的加号,选择STM32F1 Series->STN32103->STM32F103RC(我这里用的是mini版)
点击OK,会跳出下面这个界面
点击Cancel就OK。
四、在Target 1上右击,选择Manage Project Items......
左边改名为Template,右边改为USER,CORE,FELIB(右边只有一个,点击X左边的新建去新建几个).
五、1、在STM32固件库中选择ALIENTEK MiniSTM32 V3.0开发板资料\8,STM32参考资料\1,STM32F1xx固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver,将里面的inc和src两个文件复制到刚才新建的文件夹的FWLB的文件夹下面。
2、在STM32固件库中选择ALIENTEK MiniSTM32 V3.0开发板资料\8,STM32参考资料\1,STM32F1xx固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport,将两个文件复制到新建文件夹Template的CORE文件夹下面。然后再把ALIENTEK MiniSTM32 V3.0开发板资料\8,STM32参考资料\1,STM32F1xx固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm里的hd.s文件复制到CORE中
3、在STM32固件库中选择ALIENTEK MiniSTM32 V3.0开发板资料\8,STM32参考资料\1,STM32F1xx固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x将三个文件复制到USER中,
再在ALIENTEK MiniSTM32 V3.0开发板资料\8,STM32参考资料\1,STM32F1xx固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template选择,main,stm32f10x_it三个文件复制到USER中
六、在MDK中,左侧右击选择Manage Project Items....,向三个文件夹中添加文件,点击FWLIB选择Add File....,在对应目录下选择src文件夹里的全部文件进行添加,USER下的三哥文件进行复制,在CORE中,选择文件类型为All,选择.c和.s文件添加。添加完成后点击OK。
点击魔术棒,选择output,将三个框全部打钩。点击OK。点击Select Folder for Objects....,将文件夹中的OBJ文件选定
再次点击魔法棒,选择c/c++在define中添加STM32F10X_HD,USE_STDPERIPH_DRIVER,(中间逗号)。
点击魔法棒,选择c/c++在下面的include Paths中选择以下几个进行添加。
点击USER下的main函数,清空,并将下面这段代码复制进去:
#include "stm32f10x.h" } GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //LED1-->PD.2 端口配置, 推挽输出 在固件库中ALIENTEK MiniSTM32 V3.0开发板资料\4,程序源码\2,标准例程-V3.5库函数版本\2,标准例程-V3.5库函数版本\ALIENTEK MINISTM32 实验0-1 Template工程模板-新建工程章节使用复制system文件夹到Template文件中,并将其添加到MDK中注意在魔法棒的c/c++下也要添加。 这样我们的工程就建好了
void Delay(u32 count)
{
u32 i=0;
for(;i
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD, ENABLE); //使能PA,PD端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //LED0-->PA.8 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); //根据设定参数初始化GPIOA.8
GPIO_SetBits(GPIOA,GPIO_Pin_8); //PA.8 输出高
GPIO_Init(GPIOD, &GPIO_InitStructure); //推挽输出 ,IO口速度为50MHz
GPIO_SetBits(GPIOD,GPIO_Pin_2); //PD.2 输出高
while(1)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_8);
GPIO_SetBits(GPIOD,GPIO_Pin_2);
Delay(3000000);
GPIO_SetBits(GPIOA,GPIO_Pin_8);
GPIO_ResetBits(GPIOD,GPIO_Pin_2);
Delay(3000000);
}
}