目录
STM32F10x新建工程(标准库)
移植文件夹
移植文件夹为STM32F10x_StdPeriph_Lib_V3.5.0。
新建工程
新建一个文件夹,存放工程。以桌面/STM32Program为例。
打开keil5--Project--New uVision Project--选择桌面的STM32Program文件夹--起工程名字:如STM32Program--保存。
keil5弹出选择芯片型号的页面--选择,如STM32F103VET6等。然后弹出芯片包管理页面,可以直接关闭。
到此,工程创建完毕。但该工程还无法使用,因为缺少了启动文件。
添加启动文件和必需文件
在移植文件夹的STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x/startup/arm下选择复制对应的启动文件,如startup_stm32f10x_md.s。
在新建的工程目录STM32Program下新建start文件夹,粘贴刚刚复制的启动文件到start文件夹中。
回到目录移植文件夹的STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x目录下,复制stm32f10x.h、system_stm32f10x.c、system_stm32f10x.h。
在新建的工程目录STM32Program/start文件夹,粘贴刚刚复制的启动文件到start文件夹中。
来到目录移植文件夹的STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS/CM3/CoreSupport目录下,复制内核文件core_cm3.c、core_cm3.h。
在新建的工程目录STM32Program/start文件夹,粘贴刚刚复制的启动文件到start文件夹中。
在工程中加载新添加的文件
keil5上打开STM32Program工程,点击小控件:Manage Project Items(控件图标为3个小方格堆积,魔术棒隔壁)。
双击左键默认的Groups下的Source Groups 1,修改名称为start。
然后在start的组下,添加新文件。依次添加:.s启动文件,core_cm3的源文件和头文件,除.s外的其余文件。
然后点击Manage Project Items的OK按钮即可。
在工程中添加文件路径
keil5上打开STM32Program工程,点击小控件:Options for Target 'xx'(控件图标为魔术棒)。
魔术棒的C/C++(AC6)选项-Include Paths,可看到包含路径框的右侧有个省略号的按钮,点击。
然后包含start文件夹路径,点击OK。
在工程中添加main函数
在工程目录下添加user文件夹,keil5打开工程,点击小控件:Manage Project Items(控件图标为3个小方格堆积,魔术棒隔壁)。
添加新建组:user。点击OK。在keil5的工程中右击user文件夹,Add New Item to Group 'user',选择c文件,名称为mian,路径选择刚才创建的user文件夹。点击Add。
在mian.c中右键添加头文件,Insert '#include' file--stm32f10x.h。
然后写main函数。选择编译。
注意:user头文件路径别忘记添加。
cpp
#include "stm32f10x.h" // Device header
int main(void)
{
while(1)
{
}
}
编译后发现有很多错误,那是因为工程中keil5选用的是编译器6。
点击小控件:Options for Target 'xx'(控件图标为魔术棒)。在魔术棒的Target选项页中找到ARM Compiler,选择Use default compiler version 5。
再次编译,此时发现没有错误了。此时可以直接寄存器开发了,但如果需要标准库开发,还需要一些文件。
添加lib库
在STM32Program工程中新建lib文件夹。
然后打开STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/STM32F10x_StdPeriph_Driver,该目录下有src文件夹和inc文件夹。把src文件夹和inc文件夹的所有文件复制到STM32Program工程的lib文件夹。
然后在keil5的工程中新建lib组加载新添加的文件和添加头文件路径。
添加必需文件
在STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template目录下复制stm32f10x_it.c、stm32f10x_it.h和stm32f10x_conf.h文件。
粘贴到STM32Program工程的user文件夹。
然后在keil5的工程中user组加载新添加的文件和添加头文件路径。
添加宏定义
打开stm32f10x.h,光标去到文件最末尾,找到USE_STDPERIPH_DRIVER并复制。
然后点击魔术棒,来到C/C++选项页,在Define中粘贴USE_STDPERIPH_DRIVER。
点击OK。点击编译。没有错误了。此时已经创建好了。
点亮LED(标准库)
如LED为PC13。低电平点亮LED。
cpp
int main(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStruct);
GPIO_ResetBits(GPIOC, GPIO_Pin_13);
while(1)
{
}
}